[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