Quantcast

[ANNOUNCE] CMake 3.8.0-rc2 now ready for testing!

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[ANNOUNCE] CMake 3.8.0-rc2 now ready for testing!

Robert Maynard
I am proud to announce the second CMake 3.8 release candidate.
  https://cmake.org/download/

Documentation is available at:
  https://cmake.org/cmake/help/v3.8

Release notes appear below and are also published at
  https://cmake.org/cmake/help/v3.8/release/3.8.html

Some of the more significant changes in CMake 3.8 are:

* CMake now supports "CSharp" (C#) as a first-class language. It is
  currently supported by the Visual Studio Generators for VS 2010
  and above.

* CMake now supports "CUDA" as a first-class language. It is
  currently supported by the Makefile Generators and the
  "Ninja" generator on Linux, macOS, and Windows. Support for the
  Visual Studio IDE is under development but not included in this
  release.

* The "Compile Features" functionality now offers meta-features that
  request compiler modes for specific language standard levels (e.g.
  "cxx_std_11").  See "CMAKE_C_KNOWN_FEATURES" and
  "CMAKE_CXX_KNOWN_FEATURES".

* The "Compile Features" functionality is now aware of C++ 17.  No
  specific features are yet enumerated besides the "cxx_std_17" meta-
  feature.

* The Visual Studio Generators for VS 2013 and above learned to
  support a "host=x64" option in the "CMAKE_GENERATOR_TOOLSET" value
  (e.g.  via the "cmake(1)" "-T" option) to request use of a VS 64-bit
  toolchain on 64-bit hosts.

* The Visual Studio Generators learned to treat files passed to
  "target_link_libraries()" whose names end in ".targets" as MSBuild
  "targets" files to be imported into generated project files.

* The "try_compile()" command source file signature gained new
  options to specify the language standard to use in the generated
  test project.

* The "try_compile()" command source file signature now honors
  language standard variables like "CMAKE_CXX_STANDARD". See policy
  "CMP0067".

* A "BUILD_RPATH" target property and corresponding
  "CMAKE_BUILD_RPATH" variable were added to support custom "RPATH"
  locations to be added to binaries in the build tree.

* The "COMPILE_FLAGS" source file property learned to support
  "generator expressions".

* A new generator expression "$<IF:cond,true-value,false-value>" was
  added. It resolves to the true-value if the condition is "1" and
  resolves to the false-value if the condition is "0".

* The "Compile Features" functionality is now aware of features
  supported by Intel C++ compilers versions 12.1 through 17.0 on UNIX
  and Windows platforms.

* The Visual Studio Generators for VS 2010 and above now place per-
  source file flags after target-wide flags when they are classified
  as raw flags with no project file setting ("AdditionalOptions").
  This behavior is more consistent with the ordering of flags produced
  by other generators, and allows flags on more-specific properties
  (per-source) to override those on more general ones (per-target).

* The precompiled Windows binary MSI package provided on "cmake.org"
  now records the installation directory in the Windows Registry under
  the key "HKLM\Software\Kitware\CMake" with a value named
  "InstallDir".


CMake 3.8 Release Notes
***********************

Changes made since CMake 3.7 include the following.


New Features
============


Languages
---------


C#
~~

* CMake learned to support "CSharp" (C#) as a first-class language
  that can be enabled via the "project()" and "enable_language()"
  commands.  It is currently supported by the Visual Studio Generators
  for VS 2010 and above.

  C# assemblies and programs can be added just like common C++ targets
  using the "add_library()" and "add_executable()" commands.
  References between C# targets in the same source tree may be
  specified by "target_link_libraries()" like for C++.  References to
  system or 3rd-party assemblies may be specified by the target
  properties "VS_DOTNET_REFERENCE_<refname>" and
  "VS_DOTNET_REFERENCES".

* More fine tuning of C# targets may be done using target and source
  file properties.  Specifically the target properties related to
  Visual Studio ("VS_*") are worth a look (for setting toolset
  versions, root namespaces, assembly icons, ...).


CUDA
~~~~

* CMake learned to support "CUDA" as a first-class language that can
  be enabled via the "project()" and "enable_language()" commands.

* "CUDA" is currently supported by the Makefile Generators and the
  "Ninja" generator on Linux, macOS, and Windows. Support for the
  Visual Studio IDE is under development but not included in this
  release.

* The NVIDIA CUDA Toolkit compiler ("nvcc") is supported.


C & C++
~~~~~~~

* The "Compile Features" functionality now offers meta-features that
  request compiler modes for specific language standard levels (e.g.
  "cxx_std_11").  See "CMAKE_C_KNOWN_FEATURES" and
  "CMAKE_CXX_KNOWN_FEATURES".

* The "Compile Features" functionality is now aware of C++ 17.  No
  specific features are yet enumerated besides the "cxx_std_17" meta-
  feature.

* The "Compile Features" functionality is now aware of the
  availability of C99 in gcc since version 3.4.


Platforms
---------

* A new minimal platform file for "Fuchsia" was added.


Generators
----------

* The "CodeBlocks" extra generator may now be used to generate with
  "NMake Makefiles JOM".

* The Visual Studio Generators for VS 2013 and above learned to
  support a "host=x64" option in the "CMAKE_GENERATOR_TOOLSET" value
  (e.g.  via the "cmake(1)" "-T" option) to request use of a VS 64-bit
  toolchain on 64-bit hosts.

* The Visual Studio Generators learned to treat files passed to
  "target_link_libraries()" whose names end in ".targets" as MSBuild
  "targets" files to be imported into generated project files.


Commands
--------

* The "add_custom_command()" and "add_custom_target()" commands
  learned the option "COMMAND_EXPAND_LISTS" which causes lists in the
  "COMMAND" argument to be expanded, including lists created by
  generator expressions.

* The "execute_process()" command gained an "ENCODING" option to
  specify on Windows which encoding is used for output from child
  process.

* The "math(EXPR)" command gained support for unary "+" and "-"
  operators.

* The "source_group()" command gained "TREE" and "PREFIX" options to
  add groups following source tree directory structure.

* The "string(TIMESTAMP)" command learned to treat "%%" as a way to
  encode plain "%".

* The "string(TIMESTAMP)" command will now honor the
  "SOURCE_DATE_EPOCH" environment variable and use its value instead
  of the current time.

* The "try_compile()" command source file signature gained new
  options to specify the language standard to use in the generated
  test project.

* The "try_compile()" command source file signature now honors
  language standard variables like "CMAKE_CXX_STANDARD". See policy
  "CMP0067".


Variables
---------

* A "CMAKE_CODELITE_USE_TARGETS" variable was added to tell the
  "CodeLite" extra generator to change the generated project to have
  target-centric organization. The "build", "rebuild", and "clean"
  operations within "CodeLite" then work on a selected target rather
  than the whole workspace. (Note that the "Ninja" clean operation on
  a target includes its dependencies, though.)

* The "CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS" variable was added to tell
  the "Sublime Text 2" extra generator to place specified environment
  variables in the generated ".sublime-project".

* The "CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE" variable was added
  to tell the "Sublime Text 2" extra generator whether to exclude the
  build tree from the ".sublime-project" when it is inside the source
  tree.

* A "CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD" variable was added
  to tell Visual Studio Generators for VS 2010 and above to include
  the "PACKAGE" target in the default build, similar to the existing
  "CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD" variable for the
  "INSTALL" target.


Properties
----------

* A "BUILD_RPATH" target property and corresponding
  "CMAKE_BUILD_RPATH" variable were added to support custom "RPATH"
  locations to be added to binaries in the build tree.

* The "COMPILE_FLAGS" source file property learned to support
  "generator expressions".

* The "FRAMEWORK" target property may now also be applied to static
  libraries on Apple targets.  It will result in a proper Framework
  but with a static library inside.

* Imported Interface Libraries learned new "IMPORTED_LIBNAME" and
  "IMPORTED_LIBNAME_<CONFIG>" target properties to specify a link
  library name since interface libraries do not build their own
  library files.

* A "<LANG>_CPPLINT" target property and supporting
  "CMAKE_<LANG>_CPPLINT" variable were introduced to tell the Makefile
  Generators and the "Ninja" generator to run the "cpplint" style
  checker along with the compiler for "C" and "CXX" languages.

* A "MANUALLY_ADDED_DEPENDENCIES" target property has been added. It
  provides a read-only list of dependencies that have been added with
  the "add_dependencies()" command.

* The "MAP_IMPORTED_CONFIG_<CONFIG>" target property learned to
  interpret empty list elements as referring to the configuration-less
  imported location specified by "IMPORTED_LOCATION".

* The "NO_SYSTEM_FROM_IMPORTED" target property is now supported on
  Imported Interface Libraries.

* New source file properties "SKIP_AUTOMOC", "SKIP_AUTOUIC",
  "SKIP_AUTORCC", and "SKIP_AUTOGEN" were added to allow source files
  to be excluded from processing by "AUTOMOC", "AUTOUIC", and
  "AUTORCC" target properties.

* A "VS_COPY_TO_OUT_DIR" source file property was added to tell
  Visual Studio Generators for VS 2010 and above whether or not a file
  should e copied to the output directory.

* A "VS_DEBUGGER_WORKING_DIRECTORY" target property was added to
  tell Visual Studio Generators for VS 2010 and above what debugger
  working directory should be set for the target.

* A "VS_DOTNET_REFERENCES_COPY_LOCAL" target property was added to
  specify whether to copy referenced assemblies to the output
  directory.

* A "VS_DOTNET_REFERENCE_<refname>" target property was added to
  tell Visual Studio Generators for VS 2010 and above to add a .NET
  reference with a given hint path.

* A "VS_INCLUDE_IN_VSIX" source file property was added to tell
  Visual Studio Generators for VS 2010 and above whether to include
  the file in a Visual Studio extension package.

* A "VS_RESOURCE_GENERATOR" source file property was added to give
  Visual Studio Generators for VS 2010 and above a setting for the
  resource generator ("C#" only).

* A "VS_USER_PROPS" target property was added to tell Visual Studio
  Generators for VS 2010 and above to use a custom MSBuild user
  ".props" file.

* A "XCODE_EMIT_EFFECTIVE_PLATFORM_NAME" global property was added
  to tell the "Xcode" generator whether to emit the
  "EFFECTIVE_PLATFORM_NAME" variable.  This is useful when building
  with multiple SDKs like "macosx" and "iphoneos" in parallel.

* New "XCODE_PRODUCT_TYPE" and "XCODE_EXPLICIT_FILE_TYPE" target
  properties were created to tell the "Xcode" generator to use custom
  values of the corresponding attributes for a target in the generated
  Xcode project.


Modules
-------

* A "CSharpUtilities" module was added to aid parameterization of
  Visual Studio C# targets.  It provides functions to allow automated
  setting of source file properties to support Windows Forms, WPF/XAML
  or other technologies as needed.

* The "ExternalData" module learned to support multiple content
  links for one data file using different hashes, e.g.
  "img.png.sha256" and "img.png.sha1".  This allows objects to be
  fetched from sources indexed by different hash algorithms.

* The "ExternalProject" module gained the "GIT_PROGRESS" option to
  force Git to show progress when cloning repositories.

* The "ExternalProject" module gained a "GIT_CONFIG" option to pass
  " --config" options to Git when cloning repositories.

* The "FeatureSummary" module "feature_summary()" command now
  accepts a new "QUIET_ON_EMPTY" option that suppresses the output
  when the list of packages that belong to the selected category is
  empty.

* The "FeatureSummary" module "add_feature_info()" command now
  accepts lists of dependencies for deciding whether a feature is
  enabled or not.

* The package types accepted by the "FeatureSummary" module can now
  be tweaked by changing the "FeatureSummary_PKG_TYPES",
  "FeatureSummary_REQUIRED_PKG_TYPES" and
  "FeatureSummary_DEFAULT_PKG_TYPE" global properties.

* The "FindOpenGL" module now provides imported targets "OpenGL::GL"
  and "OpenGL::GLU" when the libraries are found.

* The "UseSWIG" module gained a "swig_add_library" command to give
  more flexibility over the old "swig_add_module" command.

* The "UseSWIG" module "swig_add_source_to_module" command learned a
  new "SWIG_OUTFILE_DIR" option to control the output file location
  ("swig -o").

* The "WriteCompilerDetectionHeader" module gained the
  "ALLOW_UNKNOWN_COMPILERS" and "ALLOW_UNKNOWN_COMPILER_VERSIONS"
  options that allow creation of headers that will work also with
  unknown or old compilers by simply assuming they do not support any
  of the requested features.


CTest
-----

* The "ctest_memcheck()" command gained a "DEFECT_COUNT <var>"
  option to capture the number of memory defects detected.

* The "ctest_memcheck()" command learned to read the location of
  suppressions files for sanitizers from the
  "CTEST_MEMORYCHECK_SUPPRESSIONS_FILE" variable.

* The "ctest_memcheck()" command learned to support "LeakSanitizer"
  independently from "AddressSanitizer".

* The "ctest_update()" command "CDASH_UPLOAD" signature was taught
  to honor the "RETRY_COUNT", "RETRY_DELAY", and "QUIET" options.


CPack
-----

* The "CPackIFWConfigureFile" module was added to define a new
  "cpack_ifw_configure_file()" command to configure file templates
  prepared in QtIFW/SDK/Creator style.

* The "CPackIFW" module "cpack_ifw_configure_component()" and
  "cpack_ifw_configure_component_group()" commands gained a new
  "DEFAULT", "VIRTUAL", "FORCED_INSTALLATION",
  "REQUIRES_ADMIN_RIGHTS", "DISPLAY_NAME", "UPDATE_TEXT",
  "DESCRIPTION", "RELEASE_DATE", "AUTO_DEPEND_ON" and "TRANSLATIONS"
  options to more specific configuration.

* The "CPackIFW" module "cpack_ifw_configure_component()" command
  gained a new "DEPENDENCIES" alias for "DEPENDS" option.

* The "CPackIFW" module "cpack_ifw_configure_component_group()"
  command gained a new "DEPENDS" option. The "DEPENDENCIES" alias also
  added.

* The "CPackIFW" module "cpack_ifw_configure_component()" and
  "cpack_ifw_configure_component_group()" commands "PRIORITY" option
  now is deprecated and will be removed in a future version of CMake.
  Please use new "SORTING_PRIORITY" option instead.

* The "CPackIFW" module gained new "CPACK_IFW_PACKAGE_WATERMARK",
  "CPACK_IFW_PACKAGE_BANNER", "CPACK_IFW_PACKAGE_BACKGROUND",
  "CPACK_IFW_PACKAGE_WIZARD_STYLE",
  "CPACK_IFW_PACKAGE_WIZARD_DEFAULT_WIDTH",
  "CPACK_IFW_PACKAGE_WIZARD_DEFAULT_HEIGHT", and
  "CPACK_IFW_PACKAGE_TITLE_COLOR" variables to customize a QtIFW
  installer look.

* The "CPackProductBuild" module gained options to sign packages.
  See the variables "CPACK_PRODUCTBUILD_IDENTITY_NAME",
  "CPACK_PRODUCTBUILD_KEYCHAIN_PATH", "CPACK_PKGBUILD_IDENTITY_NAME",
  and "CPACK_PKGBUILD_KEYCHAIN_PATH".

* The "CPackRPM" module learned to omit tags that are not supported
  by provided "rpmbuild" tool. If unsupported tags are set they are
  ignored and a developer warning is printed out.

* The "CPackRPM" module learned to generate main component package
  which forces generation of a rpm for defined component without
  component suffix in filename and package name. See
  "CPACK_RPM_MAIN_COMPONENT" variable.

* The "CPackRPM" module learned to generate a single "debuginfo"
  package on demand even if components packaging is used. See
  "CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE" variable.

* The "CPackRPM" module learned to support multiple directives per
  file when using "CPACK_RPM_USER_FILELIST" variable.


Other
-----

* CMake functionality using cryptographic hashes now supports SHA-3
  algorithms.

* A new generator expression "$<IF:cond,true-value,false-value>" was
  added. It resolves to the true-value if the condition is "1" and
  resolves to the false-value if the condition is "0".


Deprecated and Removed Features
===============================

* The "FeatureSummary" module commands "set_package_info()",
  "set_feature_info()", "print_enabled_features()", and
  "print_disabled_features()" are now deprecated.

* The "UseSWIG" module "swig_add_module" command is now deprecated
  in favor of "swig_add_library".


Other Changes
=============

* If a command specified by the "<LANG>_CLANG_TIDY" target property
  returns non-zero at build time this is now treated as an error
  instead of silently ignored.

* The "ctest_memcheck()" command no longer automatically adds
  "leak_check=1" to the options used by "AddressSanitizer". The
  default behavior of "AddressSanitizer" is to run *LeakSanitizer* to
  check leaks unless "leak_check=0".

* The "ctest_memcheck()" command was fixed to correctly append extra
  sanitizer options read from the
  "CTEST_MEMORYCHECK_SANITIZER_OPTIONS" variable to the environment
  variables used internally by the sanitizers.

* The "FeatureSummary" module "set_package_properties()" command no
  longer forces the package type to "OPTIONAL" when the type is not
  explicitly set.

* The "Compile Features" functionality is now aware of features
  supported by Intel C++ compilers versions 12.1 through 17.0 on UNIX
  and Windows platforms.

* Calls to the "FindPkgConfig" module "pkg_check_modules()" command
  following a successful call learned to re-evaluate the cached values
  for a given prefix after changes to the parameters to the command
  for that prefix.

* When using "AUTOMOC" or "AUTOUIC", generated "moc_*", "*.moc" and
  "ui_*" are placed in the
  "<CMAKE_CURRENT_BINARY_DIR>/<TARGETNAME>_autogen/include" directory
  which is automatically added to the target's "INCLUDE_DIRECTORIES".
  It is therefore not necessary anymore to have
  "CMAKE_CURRENT_BINARY_DIR" in the target's "INCLUDE_DIRECTORIES".

* The "Sublime Text 2" generator no longer runs the native build
  command (e.g. "ninja" or "make") with verbose build output enabled.

* The "try_compile()" command source file signature now honors the
  "CMAKE_WARN_DEPRECATED" variable value in the generated test
  project.

* The Visual Studio Generators for VS 2010 and above now place per-
  source file flags after target-wide flags when they are classified
  as raw flags with no project file setting ("AdditionalOptions").
  This behavior is more consistent with the ordering of flags produced
  by other generators, and allows flags on more-specific properties
  (per-source) to override those on more general ones (per-target).

* The precompiled Windows binary MSI package provided on "cmake.org"
  now records the installation directory in the Windows Registry under
  the key "HKLM\Software\Kitware\CMake" with a value named
  "InstallDir".

----------------------------------------------------------------------------
Changes made since CMake 3.8.0-rc1:

Ben Boeckel (1):
      FindGTK2: handle old libsigc++ versions

Bjoern Thiel (1):
      FindCUDA: Fix PTX selection with multiple architectures

Brad Davis (1):
      FindVulkan: Update for LunarG SDK import library location on Windows

Brad King (32):
      Utilities/Sphinx: Port qthelp css workaround to Sphinx 1.4
      Help: Fix cmake code block warnings produced by Sphinx 1.4
      Help: Improve execute_process ENCODING option documentation
      execute_process: Restore no-decoding default behavior
      clang-format.bash: Format CUDA source files too
      Modules: Run clang-format on CUDA code
      Tests: Run clang-format on CUDA code
      Tests: Add case for CUDA with C but not C++
      CUDA: Link to standard system libraries when linking as CUDA
      CUDA: Do not use non-existent -Os flag for nvcc
      CUDA: Fix test cases to not override CUDA flags
      CUDA: Fix default compiler flags on Windows
      ctest_update: Fix svn log and external loading
      FindHDF5: Restore HDF5_<LANG>_INCLUDE_DIR advanced cache entry mark
      FindHDF5: Fix search for language-specific header file
      Windows: Fix inconsistent behavior on changes to case of path to cmake
      CUDA: Fix boolean interpretation of CUDA_SEPARABLE_COMPILATION
      ExternalProject: Clarify documented role of `INSTALL_DIR`
      VS2017: If Win 8.1 SDK is not available, use Win 10 SDK
      Define a custom Git attribute to mark source files as generated
      Define a custom Git attribute to mark sources using our C style
      clang-format.bash: Use Git attributes to mark files for formatting
      VS: Fix .vcxproj indentation
      Revert "Ninja: Use full path for all source files"
      Fix COMPILE_PDB_NAME when used on an OBJECT library
      ExternalProject: Run `git checkout` with `--` to clarify arguments
      cmFindLibraryCommand: Refactor AddArchitecturePath logic
      find_library: Skip 'lib => lib<arch>' searches if one symlinks the other
      cmOrderDirectories: Factor out implicit directory check
      cmOrderDirectories: Consider symlinks when checking implicit directories
      Tests: Add case for RPATH exclusion of symlinks to implicit directories
      CMake 3.8.0-rc2

Gregor Jasny (1):
      Utilities/Sphinx: Port cmake extension to Sphinx 1.4

Kitsu (1):
      FindJNI: Add jvm paths for Arch Linux

Michael Maltese (1):
      Help: Clarify 'make-style' variable references in cmake-language(7)

Michael Stürmer (3):
      VS: add VS_CSHARP_<tagname> sourcefile property
      VS: add CSharpUtilities module
      VS: add test for VS_CSHARP_* source file property

Orion Poplawski (1):
      KWIML: Add -Wno-format-security to tolerate -Werror=format-security

Robert Maynard (1):
      CUDA: Detect the toolkit include directories

Sebastian Holtermann (1):
      Autogen: Fix headers not skipped

Wilfried Goesgens (1):
      ExternalProject: Clarify documented role of `INSTALL_COMMAND`
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Loading...