I am proud to announce the second CMake 3.4 release candidate. Sources and binaries are available at: https://cmake.org/download/
Documentation is available at: https://cmake.org/cmake/help/v3.4 Release notes appear below and are also published at https://cmake.org/cmake/help/v3.4/release/3.4.html Some of the more significant features of CMake 3.4 are: * The "if()" command learned a new "TEST" operator that evaluates to true if a given test name has been defined by the "add_test()" command. See policy "CMP0064". * The "install(DIRECTORY)" command "DESTINATION" option learned to support "generator expressions". * The "install(FILES)" command "DESTINATION" option learned to support "generator expressions". * CMake learned to honor "*.manifest" source files with MSVC tools. Manifest files named as sources of ".exe" and ".dll" targets will be merged with linker-generated manifests and embedded in the binary. Deprecated and Removed Features: * The "CMakeExpandImportedTargets" module is now documented as deprecated. See module documentation for an explanation. * The "CMAKE_USE_RELATIVE_PATHS" variable no longer has any effect. Previously it was partially implemented and unreliable. CMake 3.4 Release Notes *********************** Changes made since CMake 3.3 include the following. New Features ============ Generators ---------- * The "Visual Studio 14 2015" generator learned to select a Windows 10 SDK based on the value of the "CMAKE_SYSTEM_VERSION" variable and the SDKs available on the host. * CMake learned rudimentary support for the Apple Swift language. When using the "Xcode" generator with Xcode 6.1 or higher, one may enable the "Swift" language with the "enable_language()" command or the "project()" command (this is an error with other generators or when Xcode is too old). Then one may list ".swift" source files in targets for compilation. Commands -------- * The "find_program()" command learned a "NAMES_PER_DIR" option to consider all given "NAMES" in each directory before moving on to the next directory. * The "get_filename_component()" command learned a new "BASE_DIR" subcommand. This is used to specify a base directory when calculating an absolute path from a relative path. * The "if()" command learned a new "TEST" operator that evaluates to true if a given test name has been defined by the "add_test()" command. See policy "CMP0064". * The "install(DIRECTORY)" command "DESTINATION" option learned to support "generator expressions". * The "install(FILES)" command "DESTINATION" option learned to support "generator expressions". * The "string()" command learned a new "APPEND" subcommand. Variables --------- * The Makefile Generators and the "Ninja" generator learned to add compiler launcher tools like distcc and ccache along with the compiler for "C" and "CXX" languages. See the "CMAKE_<LANG>_COMPILER_LAUNCHER" variable and "<LANG>_COMPILER_LAUNCHER" target property for details. * New "CMAKE_LINK_SEARCH_START_STATIC" and "CMAKE_LINK_SEARCH_END_STATIC" variables were introduced to initialize the "LINK_SEARCH_START_STATIC" and "LINK_SEARCH_END_STATIC" target properties, respectively. Properties ---------- * Visual Studio Generators learned to support additonal target properties to customize projects for NVIDIA Nsight Tegra Visual Studio Edition: * "ANDROID_ANT_ADDITIONAL_OPTIONS" * "ANDROID_ARCH" * "ANDROID_ASSETS_DIRECTORIES" * "ANDROID_JAR_DEPENDENCIES" * "ANDROID_JAR_DIRECTORIES" * "ANDROID_JAVA_SOURCE_DIR" * "ANDROID_NATIVE_LIB_DEPENDENCIES" * "ANDROID_NATIVE_LIB_DIRECTORIES" * "ANDROID_PROCESS_MAX" * "ANDROID_PROGUARD" * "ANDROID_PROGUARD_CONFIG_PATH" * "ANDROID_SECURE_PROPS_PATH" * "ANDROID_SKIP_ANT_STEP" * "ANDROID_STL_TYPE" * The "ARCHIVE_OUTPUT_DIRECTORY", "LIBRARY_OUTPUT_DIRECTORY", and "RUNTIME_OUTPUT_DIRECTORY" target properties learned to support "generator expressions". * The "SOURCE_DIR" and "BINARY_DIR" target properties were introduced to allow project code to query where a target is defined. * The "OUTPUT_NAME" target property and its variants learned to support "generator expressions". * A "TARGET_MESSAGES" global property was added to tell the Makefile Generators whether to generate commands to print output after each target is completed. * On Windows with MS-compatible tools, CMake learned to optionally generate a module definition (".def") file for "SHARED" libraries. See the "WINDOWS_EXPORT_ALL_SYMBOLS" target property. Modules ------- * The "ExternalProject" module "ExternalProject_Add()" function "GIT_SUBMODULES" option now also limits the set of submodules that are initialized in addition to the prior behavior of limiting the set of submodules that are updated. * The "ExternalProject" module learned new "USES_TERMINAL" arguments for giving steps exclusive terminal access. This is useful with the "Ninja" generator to monitor CMake superbuild progress and prevent CPU oversubscription. * The "FindBISON" module "BISON_TARGET" macro learned a new "DEFINES_FILE" option to specify a custom output header to be generated. * The "FindHDF5" module learend a new "HDF5_PREFER_PARALLEL" option allowing users to specify that a parallel HDF5 tool is preferred if both are available. * The "FindIce" module now provides imported targets. * The "FindJava" module learned to optionally find the "idlj" and "jarsigner" tools. * The "FindOpenSSL" module now provides imported targets. * The "FindOpenSSL" module learned a new "OPENSSL_USE_STATIC_LIBS" option to search only for static libraries. * The "FindPkgConfig" learned a new "pkg_get_variable()" command which may be used to query for arbitrary variables from a package (such as for related tools or data and plugin install paths). * The "FindProtobuf" module gained a new "protobuf_generate_python()" function to generate python sources from ".proto" files. * The "FindTIFF" module learned to search separately for debug and release variants. * The "FindwxWidgets" module learned to support version requests. * The "FindXercesC" module learned to search separately for debug and release variants. * The "FindZLIB" module learned to search separately for debug and release variants. * The "GNUInstallDirs" module learned special default values for certain installation prefixes according to the GNU Coding Standards and the Filesystem Hierarchy Standard. * The "UseJava" module "add_jar" function learned to support response files (e.g. "@srcs.txt") for source specification. * The "UseJava" module "install_jar" function learned new "DESTINATION" and "COMPONENT" options to specify the corresponding "install()" command options. * The "UseJava" module gained a new "create_javah" function to create C headers from Java classes. Generator Expressions --------------------- * A new "$<SHELL_PATH:...>" "generator expression" has been added. CTest ----- * CTest learned to optionally measure the CPU load during parallel testing and avoid starting tests that may cause the load to exceed a given threshold. See the "ctest(1)" command "--test-load" option, the "TestLoad" setting of the CTest Test Step, the "CTEST_TEST_LOAD" variable, and the "TEST_LOAD" option of the "ctest_test()" command. * "ctest(1)" learned options "--test-output-size-passed" and "-- test- output-size-failed" to customize the limit on test output size submitted when running as a Dashboard Client. CPack ----- * The "CPackDeb" module learned to set package dependencies per component. See variables: * "CPACK_DEBIAN_<COMPONENT>_PACKAGE_BREAKS" * "CPACK_DEBIAN_<COMPONENT>_PACKAGE_CONFLICTS" * "CPACK_DEBIAN_<COMPONENT>_PACKAGE_ENHANCES" * "CPACK_DEBIAN_<COMPONENT>_PACKAGE_PREDEPENDS" * "CPACK_DEBIAN_<COMPONENT>_PACKAGE_PROVIDES" * "CPACK_DEBIAN_<COMPONENT>_PACKAGE_RECOMMENDS" * "CPACK_DEBIAN_<COMPONENT>_PACKAGE_REPLACES" * "CPACK_DEBIAN_<COMPONENT>_PACKAGE_SUGGESTS" * The "CPack" module learned to package empty directories. * The "CPack" module gained a new setting, "CPACK_VERBATIM_VARIABLES", which can be used to ensure the cpack program receives the settings' values exactly as they were set, even if they contain CMake-special characters. For compatibility, it's off by default. Other ----- * The "Compile Features" functionality is now aware of features supported by GNU C compilers on Windows. * CMake learned to honor "*.manifest" source files with MSVC tools. Manifest files named as sources of ".exe" and ".dll" targets will be merged with linker-generated manifests and embedded in the binary. * The Concurrent Fortran 77 compiler is now supported. Its "compiler id" is "CCur". * "cmake(1)" gained a new "--trace-expand" command line option that is like "--trace" but expands variable references in the output. Deprecated and Removed Features =============================== * The "CMakeExpandImportedTargets" module is now documented as deprecated. See module documentation for an explanation. * The "CMAKE_USE_RELATIVE_PATHS" variable no longer has any effect. Previously it was partially implemented and unreliable. Other Changes ============= * The "CheckFunctionExists", "CheckLibraryExists", "CheckSymbolExists", and "FindThreads" modules learned to work in environments where only CXX is enabled. * The "CPackDeb" module now correctly excludes symlinks during package checksum calculation. * The "CPackDeb" no longer uses fakeroot and system tar program for packaging. * The "CPack" module no longer mangles settings with CMake-special characters when they're used as defaults for other settings. The macro "cpack_set_if_not_set", which was responsible for this, is now deprecated. * CMake no longer links executables with flags to export symbols unless the "ENABLE_EXPORTS" target property is set. See policy "CMP0065". * The "SONAME" field is no longer set for "MODULE" libraries created with the "add_library()" command. "MODULE" libraries are meant for explicit dynamic loading at runtime. They cannot be linked so "SONAME" is not useful. * The internal "CMAKE_<LANG>_COMPILE_OBJECT" rule variable now substitutes compiler include flags in a separate "<INCLUDES>" placeholder instead of the main "<FLAGS>" placeholder. -------------------------------------------------------------------------- Changes made since CMake 3.4.0-rc1: Brad King (6): Revert topic 'compiler-features-solaris' Help: Add release note about compile rule placeholder changes (#15787) ExternalProject: Fix Git version report in error message (#15791) ExternalProject: Always use CMake builtin FindGit (#15791) Help: Document add_test expectations of test command (#15798) CMake 3.4.0-rc2 Derek Bruening (1): CTest: Set Content-Type header for http file upload (#15774) Gregor Jasny (1): Xcode: Adjust deployment target SDK version to host version James Johnston (1): Help: Document that SHARED libraries must export a symbol (#15775) Kevin Burge (1): cmake-mode.el: treat keywords as symbols Kevin Wojniak (1): CPackWIX: fix typos in documentation Ruslan Baratov (1): Help: Document that file(GLOB*) order is undefined Stephen Kelly (1): cmIfCommand: Issue CMP0054 warning with appropriate context. (#15802) Tamar Kranenburg (1): FindPostgreSQL: Search for version 9.5 -- 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