This is great news, thank you! Transitive dependencies for OBJECT-libraries was one of the major missing features on my side. Will definitely give it a try.
Regards, Rainer On Thu, Jun 14, 2018 at 9:11 PM Robert Maynard <robert.mayn...@kitware.com> wrote: > > I am proud to announce the first CMake 3.12 release candidate. > https://cmake.org/download/ > > Documentation is available at: > https://cmake.org/cmake/help/v3.12 > > Release notes appear below and are also published at > https://cmake.org/cmake/help/v3.12/release/3.12.html > > Some of the more significant changes in CMake 3.12 are: > > * The "target_link_libraries()" command now supports Object > Libraries. Linking to an object library uses its object files in > direct dependents and also propagates usage requirements. > > * The "target_link_libraries()" command may now be called to modify > targets created outside the current directory. > > * The "file(GLOB)" and "file(GLOB_RECURSE)" commands learned a new > flag "CONFIGURE_DEPENDS" which enables expression of build system > dependency on globbed directory's contents. > > * The "Compile Features" functionality is now aware of C++ 20. No > specific features are yet enumerated besides the "cxx_std_20" meta- > feature. > > * The Visual Studio Generators for VS 2017 learned to support a > "version=14.##" option in the "CMAKE_GENERATOR_TOOLSET" value (e.g. > via the "cmake(1)" "-T" option) to specify a toolset version number. > > * The "cmake(1)" Build Tool Mode ("cmake --build") gained "-- > parallel [<jobs>]" and "-j [<jobs>]" options to specify a parallel > build level. They map to corresponding options of the native build > tool. > > * The "add_compile_definitions()" command was added to set > preprocessor definitions at directory level. This supersedes > "add_definitions()". > > * The "cmake_minimum_required()" and "cmake_policy(VERSION)" > commands now accept a version range using the form > "<min>[...<max>]". The "<min>" version is required but policies are > set based on the "<max>" version. This allows projects to specify a > range of versions for which they have been updated and avoid > explicit policy settings. > > * The "find_package()" command now searches a prefix specified by a > "PackageName_ROOT" CMake or environment variable. Package roots are > maintained as a stack so nested calls to all "find_*" commands > inside find modules also search the roots as prefixes. See policy > "CMP0074". > > * A new "$<GENEX_EVAL:...>" and "$<TARGET_GENEX_EVAL:target,...>" > "generator expression" has been added to enable consumption of > generator expressions whose evaluation results itself in generator > expressions. > > * A new "$<TARGET_EXISTS:...>" "generator expression" has been > added. > > * A new "$<TARGET_NAME_IF_EXISTS:...>" "generator expression" has > been added. > > * The "FindCURL" module now provides imported targets. > > * The "FindJPEG" module now provides imported targets. > > * A "FindODBC" module was added to find an Open Database > Connectivity (ODBC) library. > > * New "FindPython3" and "FindPython2" modules, as well as a new > "FindPython" module, have been added to provide a new way to locate > python environments. > > > CMake 3.12 Release Notes > ************************ > > Changes made since CMake 3.11 include the following. > > > New Features > ============ > > > Generators > ---------- > > * The Visual Studio Generators for VS 2017 learned to support a > "version=14.##" option in the "CMAKE_GENERATOR_TOOLSET" value (e.g. > via the "cmake(1)" "-T" option) to specify a toolset version number. > > > Command-Line > ------------ > > * The "cmake(1)" Build Tool Mode ("cmake --build") gained "-- > parallel [<jobs>]" and "-j [<jobs>]" options to specify a parallel > build level. They map to corresponding options of the native build > tool. > > > Commands > -------- > > * The "add_compile_definitions()" command was added to set > preprocessor definitions at directory level. This supersedes > "add_definitions()". > > * The "cmake_minimum_required()" and "cmake_policy(VERSION)" > commands now accept a version range using the form > "<min>[...<max>]". The "<min>" version is required but policies are > set based on the "<max>" version. This allows projects to specify a > range of versions for which they have been updated and avoid > explicit policy settings. > > * The "file(GLOB)" and "file(GLOB_RECURSE)" commands learned a new > flag "CONFIGURE_DEPENDS" which enables expression of build system > dependency on globbed directory's contents. > > * The "file(TOUCH)" and "file(TOUCH_NOCREATE)" commands were added > to expose "TOUCH" functionality without having to use CMake's > command- line tool mode with "execute_process()". > > * The "find_package()" command now searches a prefix specified by a > "PackageName_ROOT" CMake or environment variable. Package roots are > maintained as a stack so nested calls to all "find_*" commands > inside find modules also search the roots as prefixes. See policy > "CMP0074". > > * The "install()" command learned an optional "NAMELINK_COMPONENT" > parameter, which allows you to change the component for a shared > library's namelink. If none is specified, the value of "COMPONENT" > is used by default. > > * The "list()" command learned a "JOIN" sub-command to concatenate > list's elements separated by a glue string. > > * The "list()" command learned a "SUBLIST" sub-command to get a > sublist of the list. > > * The "list()" command learned a "TRANSFORM" sub-command to apply > various string transformation to list's elements. > > * The "project()" command learned an optional "HOMEPAGE_URL" > parameter which has the effect of setting variables like > "PROJECT_HOMEPAGE_URL", "<PROJECT-NAME>_HOMEPAGE_URL" and > "CMAKE_PROJECT_HOMEPAGE_URL". > > * The "string()" command learned a "JOIN" sub-command to concatenate > input strings separated by a glue string. > > * "target_compile_options()" and "add_compile_options()" commands > gained a "SHELL:" prefix to specify a group of related options using > shell-like quoting. > > * The "target_link_libraries()" command now supports Object > Libraries. Linking to an object library uses its object files in > direct dependents and also propagates usage requirements. > > * The "target_link_libraries()" command may now be called to modify > targets created outside the current directory. > > > Variables > --------- > > * The "CMAKE_FOLDER" variable was added to initialize the "FOLDER" > property on all targets. > > * The "CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION" variable was defined > to initialize all "DOTNET_TARGET_FRAMEWORK_VERSION" target > properties. > > * "CMAKE_PROJECT_VERSION*" variables have been introduced: > > * "CMAKE_PROJECT_VERSION" > > * "CMAKE_PROJECT_VERSION_MAJOR" > > * "CMAKE_PROJECT_VERSION_MINOR" > > * "CMAKE_PROJECT_VERSION_PATCH" > > * "CMAKE_PROJECT_VERSION_TWEAK" > > * The "CMAKE_SUPPRESS_REGENERATION" variable was extended to support > the "Ninja" and Makefile Generators. It is also now documented. > > * "CMAKE_VS_SDK_*_DIRECTORIES" variables were defined to tell Visual > Studio Generators for VS 2010 and above how to populate fields in > ".vcxproj" files that specify SDK directories. The variables are: > > * "CMAKE_VS_SDK_EXCLUDE_DIRECTORIES" > > * "CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES" > > * "CMAKE_VS_SDK_INCLUDE_DIRECTORIES" > > * "CMAKE_VS_SDK_LIBRARY_DIRECTORIES" > > * "CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES" > > * "CMAKE_VS_SDK_REFERENCE_DIRECTORIES" > > * "CMAKE_VS_SDK_SOURCE_DIRECTORIES" > > * A "MSVC_TOOLSET_VERSION" variable was added to provide the MSVC > toolset version associated with the current MSVC compiler version in > "MSVC_VERSION". > > > Properties > ---------- > > * The "COMMON_LANGUAGE_RUNTIME" target property was introduced to > configure the use of managed C++ for Visual Studio Generators for VS > 2010 and above. A corresponding "IMPORTED_COMMON_LANGUAGE_RUNTIME" > target property was added to support "C++/CLI" for imported targets. > > * The "DOTNET_TARGET_FRAMEWORK_VERSION" target property was > introduced as replacement for "VS_DOTNET_TARGET_FRAMEWORK_VERSION", > which is considered deprecated now. > > * An "EXPORT_PROPERTIES" target property was added to specify a > custom list of target properties to include in targets exported by > the "install(EXPORT)" and "export()" commands. > > * The "PDB_OUTPUT_DIRECTORY" property learned to support "generator > expressions". > > * A "TESTS" directory property was added to hold the list of tests > defined by the "add_test()" command. > > * A "VS_DEBUGGER_COMMAND" target property was created to set the > debugging command line with Visual Studio Generators for VS 2010 and > above. > > * HLSL source file properties "VS_SHADER_DISABLE_OPTIMIZATIONS" and > "VS_SHADER_ENABLE_DEBUG" gained support for generator expressions. > > * HLSL source file property "VS_SHADER_OBJECT_FILE_NAME" has been > added to the Visual Studio Generators for VS 2010 and above. The > property specifies the file name of the compiled shader object. > > > Modules > ------- > > * The "FindALSA" module now provides imported targets. > > * The "FindCURL" module now provides imported targets. > > * The "FindJPEG" module now provides imported targets. > > * The "FindLibXml2" module now provides imported targets. > > * A "FindODBC" module was added to find an Open Database > Connectivity (ODBC) library. > > * The "FindPkgConfig" module has learned to export the found > libraries with full path for direct consumption with the > "target_link_libraries()" command. > > * New "FindPython3" and "FindPython2" modules, as well as a new > "FindPython" module, have been added to provide a new way to locate > python environments. > > * The "UseSWIG" module gained a whole refresh and is now more > consistent with standard CMake commands to generate libraries and is > fully configurable through properties. > > * The "UseSWIG" module learned to manage multiple behaviors through > "UseSWIG_MODULE_VERSION" variable to ensure legacy support as well > as more robust handling of "SWIG" advanced features (like > "%template"). > > * The "UseSWIG" module learned to support CSHARP variant wrapper > files. > > * The "WriteCompilerDetectionHeader" module gained a "BARE_FEATURES" > option to add a compatibility define for the exact keyword of a new > language feature. > > > Generator Expressions > --------------------- > > * A new "$<GENEX_EVAL:...>" and "$<TARGET_GENEX_EVAL:target,...>" > "generator expression" has been added to enable consumption of > generator expressions whose evaluation results itself in generator > expressions. > > * A new "$<IN_LIST:...>" "generator expression" has been added. > > * A new "$<TARGET_EXISTS:...>" "generator expression" has been > added. > > * A new "$<TARGET_NAME_IF_EXISTS:...>" "generator expression" has > been added. > > > CTest > ----- > > * The "ctest_start()" command has been reworked so that you can > simply call "ctest_start(APPEND)" and it will read all the needed > information from the TAG file. The argument parsing has also been > relaxed so that the order of the arguments is less significant. > > * A "PROCESSOR_AFFINITY" test property was added to request that > CTest run a test with CPU affinity for a set of processors disjoint > from other concurrently running tests with the property set. > > > CPack > ----- > > * The "CPack" module now uses variables > "CMAKE_PROJECT_VERSION_MAJOR", "CMAKE_PROJECT_VERSION_MINOR" and > "CMAKE_PROJECT_VERSION_PATCH" to initialize corresponding CPack > variables. > > * "cpack(1)" gained basic support for NuGet. See the "CPackNuGet" > module. > > > Other > ----- > > * The "Compile Features" functionality is now aware of C++ 20. No > specific features are yet enumerated besides the "cxx_std_20" meta- > feature. > > * The "Compile Features" functionality is now aware of the > availability of C features in MSVC since VS 2010. > > * The "Compile Features" functionality is now aware of C language > standards supported by Texas Instruments C compilers. > > > Deprecated and Removed Features > =============================== > > * The "Visual Studio 8 2005" generator has been removed. > > * CMake no longer produces "<tgt>_LIB_DEPENDS" cache entries for > library targets. See policy "CMP0073". > > > Other Changes > ============= > > * Include flags for directories marked as "SYSTEM" are now moved > after non-system directories. The "-isystem" flag does this > automatically, so moving them explicitly to the end makes the > behavior consistent on compilers that do not have any "-isystem" > flag. > > * Fortran dependency scanning now supports dependencies implied by > Fortran Submodules. > > * The existence and functionality of the file > "${CMAKE_BINARY_DIR}/cmake_install.cmake" has now been documented in > the "install()" documentation so that external packaging software > can take advantage of CPack-style component installs. > > * The "CheckIncludeFile" module "check_include_file" macro learned > to honor the "CMAKE_REQUIRED_LIBRARIES" variable. See policy > "CMP0075". > > * The "CheckIncludeFileCXX" module "check_include_file_cxx" macro > learned to honor the "CMAKE_REQUIRED_LIBRARIES" variable. See policy > "CMP0075". > > * The "CheckIncludeFiles" module "check_include_files" macro learned > to honor the "CMAKE_REQUIRED_LIBRARIES" variable. See policy > "CMP0075". > > * The "cmake(1)" "-E copy_directory" tool now fails when the source > directory does not exist. Previously it succeeded by creating an > empty destination directory. > > * The "UseSWIG" module "swig_add_library()" command (and legacy > "swig_add_module" command) now set the prefix of Java modules to > """" for MINGW, MSYS, and CYGWIN environments. > -- > > 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: > https://cmake.org/mailman/listinfo/cmake -- 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: https://cmake.org/mailman/listinfo/cmake