[CMake] CMake 3.0-rc1 now ready for testing!

Marcel Loose loose at astron.nl
Mon Mar 3 04:05:24 EST 2014


That's a nice long list ;)

I noticed when building this RC on Ubuntu 13.10, that 'make test' fails:

$ make test
Running tests...
make: Bootstrap.cmk/ctest: Command not found
make: *** [test] Error 127

Copying ./bin/ctest to ./Bootstrap.cmk solves this issue.

Best regards,
Marcel Loose.

On 28/02/14 20:28, Robert Maynard wrote:
> I am proud to announce that CMake 3.0 has entered the release candidate stage.
>
> Sources and binaries are available at:
>   http://www.cmake.org/files/v3.0/?C=M;O=D
>
> Documentation is available at:
>   http://www.cmake.org/cmake/help/v3.0
>
> Release notes appear below and are also published at
>   http://www.cmake.org/cmake/help/v3.0/release/3.0.0.html
>
> Some of the more significant features of CMake 3.0 are:
> * Compatibility options supporting code written for CMake versions
>   prior to 2.4 have been removed.
>
> * The CMake language has been extended with *Bracket Argument* and
>   *Bracket Comment* syntax inspired by Lua long brackets.
>
> * The CMake documentation has been converted to reStructuredText and
>   uses Sphix generation.
>
> * Generators for Visual Studio 10 (2010) and later were renamed to
>   include the product year like generators for older VS versions:
>   * "Visual Studio 10" -> "Visual Studio 10 2010"
>   * "Visual Studio 11" -> "Visual Studio 11 2012"
>   * "Visual Studio 12" -> "Visual Studio 12 2013"
>   This clarifies which generator goes with each Visual Studio version.
>   The old names are recognized for compatibility.
>
> * A new "CodeLite" extra generator is available for use with the
>   Makefile or Ninja generators.
>
> * A new "Kate" extra generator is available for use with the
>   Makefile or Ninja generators.
>
> * The "add_library()" command learned a new "INTERFACE" library
>   type. Interface libraries have no build rules but may have
>   properties defining "usage requirements" and may be installed,
>   exported, and imported.  This is useful to create header-only
>   libraries that have concrete link dependencies on other libraries.
>
> * The "export()" command learned a new "EXPORT" mode that retrieves
>   the list of targets to export from an export set configured by the
>   "install(TARGETS)" command "EXPORT" option.  This makes it easy to
>   export from the build tree the same targets that are exported from
>   the install tree.
>
> * The "project()" command learned to set some version variables to
>   values specified by the new "VERSION" option or to empty strings.
>   See policy "CMP0048".
>
> * Several long-outdated commands that should no longer be called
>   have been disallowed in new code by policies:
>   * Policy "CMP0029" disallows "subdir_depends()"
>   * Policy "CMP0030" disallows "use_mangled_mesa()"
>   * Policy "CMP0031" disallows "load_command()"
>   * Policy "CMP0032" disallows "output_required_files()"
>   * Policy "CMP0033" disallows "export_library_dependencies()"
>   * Policy "CMP0034" disallows "utility_source()"
>   * Policy "CMP0035" disallows "variable_requires()"
>   * Policy "CMP0036" disallows "build_name()"
>
>
> CMake 3.0.0 Release Notes
> *************************
>
> Changes made since CMake 2.8.12.2 include the following.
>
> Documentation Changes
> =====================
> * The CMake documentation has been converted to reStructuredText and
>   now transforms via Sphinx (http://sphinx-doc.org) into man and html
>   pages.  This allows the documentation to be properly indexed and to
>   contain cross-references.
>
>   Conversion from the old internal documentation format was done by an
>   automatic process so some documents may still contain artifacts.
>   They will be updated incrementally over time.
>
>   A basic reStructuredText processor has been implemented to support
>   "cmake --help-command" and similar command-line options.
>
> * New manuals were added:
>   * "cmake-buildsystem(7)"
>
>   * "cmake-commands(7)", replacing "cmakecommands(1)" and
>     "cmakecompat(1)"
>
>   * "cmake-developer(7)"
>
>   * "cmake-generator-expressions(7)"
>
>   * "cmake-generators(7)"
>
>   * "cmake-language(7)"
>
>   * "cmake-modules(7)", replacing "cmakemodules(1)"
>
>   * "cmake-packages(7)"
>
>   * "cmake-policies(7)", replacing "cmakepolicies(1)"
>
>   * "cmake-properties(7)", replacing "cmakeprops(1)"
>
>   * "cmake-qt(7)"
>
>   * "cmake-toolchains(7)"
>
>   * "cmake-variables(7)", replacing "cmakevars(1)"
>
>
> * Release notes for CMake 3.0.0 and above will now be included with
>   the html documentation.
>
> New Features
> ============
>
> Syntax
> ------
> * The CMake language has been extended with *Bracket Argument* and
>   *Bracket Comment* syntax inspired by Lua long brackets:
>
>      set(x [===[bracket argument]===] #[[bracket comment]])
>
>   Content between equal-length open- and close-brackets is taken
>   literally with no variable replacements.
>
>   Warning: This syntax change could not be made in a fully
>     compatible way. No policy is possible because syntax parsing
>     occurs before any chance to set a policy.  Existing code using an
>     unquoted argument that starts with an open bracket will be
>     interpreted differently without any diagnostic.  Fortunately the
>     syntax is obscure enough that this problem is unlikely in
>     practice.
>
> Generators
> ----------
> * A new "CodeLite" extra generator is available for use with the
>   Makefile or Ninja generators.
>
> * A new "Kate" extra generator is available for use with the
>   Makefile or Ninja generators.
>
> * The "Ninja" generator learned to use "ninja" job pools when
>   specified by a new "JOB_POOLS" global property.
>
> Commands
> --------
> * The "add_library()" command learned a new "INTERFACE" library
>   type. Interface libraries have no build rules but may have
>   properties defining "usage requirements" and may be installed,
>   exported, and imported.  This is useful to create header-only
>   libraries that have concrete link dependencies on other libraries.
>
> * The "export()" command learned a new "EXPORT" mode that retrieves
>   the list of targets to export from an export set configured by the
>   "install(TARGETS)" command "EXPORT" option.  This makes it easy to
>   export from the build tree the same targets that are exported from
>   the install tree.
>
> * The "export()" command learned to work with multiple dependent
>   export sets, thus allowing multiple packages to be built and
>   exported from a single tree.  The feature requires CMake to wait
>   until the generation step to write the output file.  This means one
>   should not "include()" the generated targets file later during
>   project configuration because it will not be available. Use *Alias
>   Targets* instead.  See policy "CMP0024".
>
> * The "install(FILES)" command learned to support "generator
>   expressions" in the list of files.
>
> * The "project()" command learned to set some version variables to
>   values specified by the new "VERSION" option or to empty strings.
>   See policy "CMP0048".
>
> * The "string()" command learned a new "CONCAT" mode. It is
>   particularly useful in combination with the new *Bracket Argument*
>   syntax.
>
> * The "unset()" command learned a "PARENT_SCOPE" option matching
>   that of the "set()" command.
>
> * The "include_external_msproject()" command learned to handle
>   non-C++ projects like ".vbproj" or ".csproj".
>
> * The "ctest_update()" command learned to update work trees managed
>   by the Perforce (p4) version control tool.
>
> * The "message()" command learned a "DEPRECATION" mode. Such
>   messages are not issued by default, but may be issued as a warning
>   if "CMAKE_WARN_DEPRECATED" is enabled, or as an error if
>   "CMAKE_ERROR_DEPRECATED" is enabled.
>
> * The "target_link_libraries()" command now allows repeated use of
>   the "LINK_PUBLIC" and "LINK_PRIVATE" keywords.
>
> Variables
> ---------
> * Variable "CMAKE_FIND_NO_INSTALL_PREFIX" has been introduced to
>   tell CMake not to add the value of "CMAKE_INSTALL_PREFIX" to the
>   "CMAKE_SYSTEM_PREFIX_PATH" variable by default. This is useful when
>   building a project that installs some of its own dependencies to
>   avoid finding files it is about to replace.
>
> * Variable "CMAKE_STAGING_PREFIX" was introduced for use when cross-
>   compiling to specify an installation prefix on the host system that
>   differs from a "CMAKE_INSTALL_PREFIX" value meant for the target
>   system.
>
> * Variable "CMAKE_SYSROOT" was introduced to specify the toolchain
>   SDK installation prefix, typically for cross-compiling. This is used
>   to pass a "--sysroot" option to the compiler and as a prefix
>   searched by "find_*" commands.
>
> * Variable "CMAKE_<LANG>_COMPILER_TARGET" was introduced for use
>   when cross-compiling to specify the target platform in the
>   *toolchain file* specified by the "CMAKE_TOOLCHAIN_FILE" variable.
>   This is used to pass an option such as "--target=<triple>" to some
>   cross- compiling compiler drivers.
>
> * Variable "CMAKE_MAP_IMPORTED_CONFIG_<CONFIG>" has been introduced
>   to optionally initialize the "MAP_IMPORTED_CONFIG_<CONFIG>" target
>   property.
>
> Properties
> ----------
> * The "ADDITIONAL_MAKE_CLEAN_FILES" directory property learned to
>   support "generator expressions".
>
> * A new directory property "CMAKE_CONFIGURE_DEPENDS" was introduced
>   to allow projects to specify additional files on which the
>   configuration process depends.  CMake will re-run at build time when
>   one of these files is modified. Previously this was only possible to
>   achieve by specifying such files as the input to a
>   "configure_file()" command.
>
> * A new *AUTORCC* feature replaces the need to invoke
>   "qt4_add_resources()" by allowing ".qrc" files to be listed as
>   target sources.
>
> * A new *AUTOUIC* feature replaces the need to invoke
>   "qt4_wrap_ui()".
>
> * Test properties learned to support "generator expressions". This
>   is useful to specify per-configuration values for test properties
>   like "REQUIRED_FILES" and "WORKING_DIRECTORY".
>
> * A new "SKIP_RETURN_CODE" test property was introduced to tell
>   "ctest(1)" to treat a particular test return code as if the test
>   were not run.  This is useful for test drivers to report that
>   certain test requirements were not available.
>
> * New types of *Compatible Interface Properties* were introduced,
>   namely the "COMPATIBLE_INTERFACE_NUMBER_MAX" and
>   "COMPATIBLE_INTERFACE_NUMBER_MIN" for calculating numeric maximum
>   and minimum values respectively.
>
> Modules
> -------
> * The "CheckTypeSize" module "check_type_size" macro and the
>   "CheckStructHasMember" module "check_struct_has_member" macro
>   learned a new "LANGUAGE" option to optionally check C++ types.
>
> * The "ExternalData" module learned to work with no URL templates if
>   a local store is available.
>
> * The "ExternalProject" function "ExternalProject_Add" learned a new
>   "GIT_SUBMODULES" option to specify a subset of available submodules
>   to checkout.
>
> * A new "FindBacktrace" module has been added to support
>   "find_package(Backtrace)" calls.
>
> * A new "FindLua" module has been added to support
>   "find_package(Lua)" calls.
>
> * The "FindBoost" module learned a new "Boost_NAMESPACE" option to
>   change the "boost" prefix on library names.
>
> * The "FindBoost" module learned to control search for libraries with
>   the "g" tag (for MS debug runtime) with a new
>   "Boost_USE_DEBUG_RUNTIME" option.  It is "ON" by default to preserve
>   existing behavior.
>
> * The "FindJava" and "FindJNI" modules learned to use a "JAVA_HOME"
>   CMake variable or environment variable, and then try
>   "/usr/libexec/java_home" on OS X.
>
> * The "UseJava" module "add_jar" function learned a new "MANIFEST"
>   option to pass the "-m" option to "jar".
>
> * A new "CMakeFindDependencyMacro" module was introduced with a
>   "find_dependency" macro to find transitive dependencies in a
>   "package configuration file".  Such dependencies are omitted by the
>   listing of the "FeatureSummary" module.
>
> * The "FindQt4" module learned to create *Imported Targets* for Qt
>   executables.  This helps disambiguate when using multiple "Qt
>   versions" in the same buildsystem.
>
> Generator Expressions
> ---------------------
> * New "$<PLATFORM_ID>" and "$<PLATFORM_ID:...>" "generator
>   expressions" have been added.
>
> * The "$<CONFIG>" "generator expression" now has a variant which
>   takes no argument.  This is equivalent to the "$<CONFIGURATION>"
>   expression.
>
> * New "$<UPPER_CASE:...>" and "$<LOWER_CASE:...>" "generator
>   expressions" generator expressions have been added.
>
> * A new "$<MAKE_C_IDENTIFIER:...>" "generator expression" has been
>   added.
>
> Other
> -----
> * The "cmake(1)" "-E" option learned a new "sleep" command.
>
> * The "ccmake(1)" dialog learned to honor the "STRINGS" cache entry
>   property to cycle through the enumerated list of possible values.
>
> * The "cmake-gui(1)" dialog learned to remember window settings
>   between sessions.
>
> * The "cmake-gui(1)" dialog learned to remember the type of a cache
>   entry for completion in the "Add Entry" dialog.
>
> New Diagnostics
> ===============
> * Directories named in the "INTERFACE_INCLUDE_DIRECTORIES" target
>   property of imported targets linked conditionally by a "generator
>   expression" were not checked for existence.  Now they are checked.
>   See policy "CMP0027".
>
> * Build target names must now match a validity pattern and may no
>   longer conflict with CMake-defined targets.  See policy "CMP0037".
>
> * Build targets that specify themselves as a link dependency were
>   silently accepted but are now diagnosed.  See "CMP0038".
>
> * The "target_link_libraries()" command used to silently ignore
>   calls specifying as their first argument build targets created by
>   "add_custom_target()" but now diagnoses this mistake. See policy
>   "CMP0039".
>
> * The "add_custom_command()" command used to silently ignore calls
>   specifying the "TARGET" option with a non-existent target but now
>   diagnoses this mistake.  See policy "CMP0040".
>
> * Relative paths in the "INTERFACE_INCLUDE_DIRECTORIES" target
>   property used to be silently accepted if they contained a "generator
>   expression" but are now rejected.  See policy "CMP0041".
>
> * The "get_target_property()" command learned to reject calls
>   specifying a non-existent target.  See policy "CMP0045".
>
> * The "add_dependencies()" command learned to reject calls
>   specifying a dependency on a non-existent target. See policy
>   "CMP0046".
>
> * Link dependency analysis learned to assume names containing "::"
>   refer to *Alias Targets* or *Imported Targets*.  It will now produce
>   an error if such a linked target is missing.  Previously in this
>   case CMake generated a link line that failed at build time. See
>   policy "CMP0028".
>
> * When the "project()" or "enable_language()" commands initialize
>   support for a language, it is now an error if the full path to the
>   compiler cannot be found and stored in the corresponding
>   "CMAKE_<LANG>_COMPILER" variable.  This produces nicer error
>   messages up front and stops processing when no working compiler is
>   known to be available.
>
> * Target sources specified with the "add_library()" or
>   "add_executable()" command learned to reject items which require an
>   undocumented extra layer of variable expansion. See policy
>   "CMP0049".
>
> * Use of "add_custom_command()" undocumented "SOURCE" signatures now
>   results in an error.  See policy "CMP0050".
>
>
> Deprecated and Removed Features
> ===============================
> * Compatibility options supporting code written for CMake versions
>   prior to 2.4 have been removed.
>
> * Several long-outdated commands that should no longer be called
>   have been disallowed in new code by policies:
>
>   * Policy "CMP0029" disallows "subdir_depends()"
>
>   * Policy "CMP0030" disallows "use_mangled_mesa()"
>
>   * Policy "CMP0031" disallows "load_command()"
>
>   * Policy "CMP0032" disallows "output_required_files()"
>
>   * Policy "CMP0033" disallows "export_library_dependencies()"
>
>   * Policy "CMP0034" disallows "utility_source()"
>
>   * Policy "CMP0035" disallows "variable_requires()"
>
>   * Policy "CMP0036" disallows "build_name()"
>
> * The "cmake(1)" "-i" wizard mode has been removed. Instead use an
>   interactive dialog such as "ccmake(1)" or use the "-D" option to set
>   cache values from the command line.
>
> * The builtin documentation formatters that supported command-line
>   options such as "--help-man" and "--help-html" have been removed in
>   favor of the above-mentioned new documentation system.  These and
>   other command-line options that used to generate man- and html-
>   formatted pages no longer work.  The "cmake(1)" "--help-custom-
>   modules" option now produces a warning at runtime and generates a
>   minimal document that reports the limitation.
>
> * The "COMPILE_DEFINITIONS_<CONFIG>" directory properties and the
>   "COMPILE_DEFINITIONS_<CONFIG>" target properties have been
>   deprecated.  Instead set the corresponding "COMPILE_DEFINITIONS"
>   directory property or "COMPILE_DEFINITIONS" target property and use
>   "generator expressions" like "$<CONFIG:...>" to specify per-
>   configuration definitions. See policy "CMP0043".
>
> * The "LOCATION" target property should no longer be read from non-
>   IMPORTED targets.  It does not make sense in multi-configuration
>   generators since the build configuration is not known while
>   configuring the project.  It has been superseded by the
>   "$<TARGET_FILE>" generator expression.  See policy "CMP0026".
>
> * The "COMPILE_FLAGS" target property is now documented as
>   deprecated, though no warning is issued.  Use the "COMPILE_OPTIONS"
>   target property or the "target_compile_options()" command instead.
>
> * The "GenerateExportHeader" module "add_compiler_export_flags"
>   function is now deprecated.  It has been superseded by the
>   "<LANG>_VISIBILITY_PRESET" and "VISIBILITY_INLINES_HIDDEN" target
>   properties.
>
>
> Other Changes
> =============
> * The version scheme was changed to use only two components for the
>   feature level instead of three.  The third component will now be
>   used for bug-fix releases or the date of development versions. See
>   the "CMAKE_VERSION" variable documentation for details.
>
> * The default install locations of CMake itself on Windows and OS X
>   no longer contain the CMake version number.  This allows for easy
>   replacement without re-generating local build trees manually.
>
> * Generators for Visual Studio 10 (2010) and later were renamed to
>   include the product year like generators for older VS versions:
>
>   * "Visual Studio 10" -> "Visual Studio 10 2010"
>
>   * "Visual Studio 11" -> "Visual Studio 11 2012"
>
>   * "Visual Studio 12" -> "Visual Studio 12 2013"
>
>   This clarifies which generator goes with each Visual Studio version.
>   The old names are recognized for compatibility.
>
> * The "CMAKE_<LANG>_COMPILER_ID" value for Apple-provided Clang is
>   now "AppleClang".  It must be distinct from upstream Clang because
>   the version numbers differ. See policy "CMP0025".
>
> * The "CMAKE_<LANG>_COMPILER_ID" value for "qcc" on QNX is now
>   "QCC". It must be distinct from "GNU" because the command-line
>   options differ.  See policy "CMP0047".
>
> * On 64-bit OS X the "CMAKE_HOST_SYSTEM_PROCESSOR" value is now
>   correctly detected as "x86_64" instead of "i386".
>
> * On OS X, CMake learned to enable behavior specified by the
>   "MACOSX_RPATH" target property by default.  This activates use of
>   "@rpath" for runtime shared library searches. See policy "CMP0042".
>
> * The "build_command()" command now returns a "cmake(1)" "--build"
>   command line instead of a direct invocation of the native build
>   tool.  When using "Visual Studio" generators, CMake and CTest no
>   longer require "CMAKE_MAKE_PROGRAM" to be located up front.
>   Selection of the proper msbuild or devenv tool is now performed as
>   late as possible when the solution (".sln") file is available so it
>   can depend on project content.
>
> * The "cmake(1)" "--build" command now shares its own stdout and
>   stderr pipes with the native build tool by default. The "--use-
>   stderr" option that once activated this is now ignored.
>
> * The "$<C_COMPILER_ID:...>" and "$<CXX_COMPILER_ID:...>" "generator
>   expressions" used to perform case-insensitive comparison but have
>   now been corrected to perform case-sensitive comparison. See policy
>   "CMP0044".
>
> * The builtin "edit_cache" target will no longer select "ccmake(1)"
>   by default when no interactive terminal will be available (e.g. with
>   "Ninja" or an IDE generator). Instead "cmake-gui(1)" will be
>   preferred if available.
>
> * The "ExternalProject" download step learned to re-attempt download
>   in certain cases to be more robust to temporary network failure.
>
> * The "FeatureSummary" no longer lists transitive dependencies since
>   they were not directly requested by the current project.
>
> * The "cmake-mode.el" major Emacs editing mode has been cleaned up
>   and enhanced in several ways.
>
> * Include directories specified in the
>   "INTERFACE_INCLUDE_DIRECTORIES" of *Imported Targets* are treated as
>   "SYSTEM" includes by default when handled as *usage requirements*.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: loose.vcf
Type: text/x-vcard
Size: 292 bytes
Desc: not available
URL: <http://www.cmake.org/pipermail/cmake/attachments/20140303/296100cf/attachment.vcf>


More information about the CMake mailing list