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

Michael Jackson mike.jackson at bluequartz.net
Tue Feb 7 14:23:06 EST 2017


Are there any improvements to the cmake -server mode? I am testing the 
combination of QtCreator and CMake and there seemed to be an issue where 
the list of projects are in Alphabetical order and not in a "top down" 
order.
-- 
Michael A. Jackson
BlueQuartz Software, LLC
[e]: mike.jackson at bluequartz.net


Robert Maynard wrote:
> I am proud to announce the first 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, ...).
>
> * Auto-linking in ".csproj" files: In C#/.NET development with
>    Visual Studio there are a number of visual editors used which
>    generate code.  Both the generated files and the ones edited with
>    the UI are connected in the ".csproj" file using "<DependentUpon>"
>    tags.  If CMake finds within a C# project any source file with
>    extension ".Designer.cs" or ".xaml.cs", it checks sibling files with
>    extension ".xaml", ".settings", ".resx" or ".cs" and establishes the
>    dependency connection.
>
>
> 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
> -------
>
> * 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".


More information about the CMake mailing list