the release of the cross-platform open source build script generator , serving as an alternative to Autotools and used in projects like KDE, LLVM/Clang, MySQL, MariaDB, ReactOS, and Blender. CMake code is written in C++ and distributed under the BSD license.
CMake is notable for providing a simple scripting language, functionality extension through modules, minimal dependencies (no coupling with M4, Perl, or Python), caching support, tools for cross-compilation, support for generating build files for a wide range of build systems and compilers, as well as ctest and cpack utilities for defining test scripts and package builds, and a cmake-gui utility for interactive building parameter configuration.
Key :
- Added support for Objective C (‘OBJC’) and Objective C++
which can be activated through project() and enable_language() commands, allowing code in ‘.m’ and ‘.mm’ files to be compiled as Objective C and Objective C++ code, rather than C++ code as previously done; - Added support for the Clang compiler on Solaris platform;
- New command line options have been added: ‘cmake -E true|false’ to output return codes 0 and 1; ‘cmake —trace-redirect=’ for redirecting trace information to a file instead of
‘stderr’; the command ‘cmake —loglevel’ has been renamed to ‘—log-level’ for consistency with other commands; - Added the command ‘target_precompile_headers()’ to list header files used in precompilation (reducing build time);
- Added the ‘UNITY_BUILD’ property, enabling batch processing mode for source files in generators to speed up the build;
- Added commands ‘find_file()’, ‘find_library()’, ‘find_path()’,
‘find_package()’ and ‘find_program()’ for locating files, libraries, paths, packages, and executables according to variables defining search paths for various categories of files.
To manage base search paths, variables ‘CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH’, ‘CMAKE_FIND_USE_CMAKE_PATH’, ‘CMAKE_FIND_USE_CMAKE_SYSTEM_PATH’, ‘CMAKE_FIND_USE_PACKAGE_ROOT_PATH’, ‘CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH’, and ‘CMAKE_FIND_USE_PACKAGE_REGISTRY’ are used; - The 'file()' command has a new mode, 'file(GET_RUNTIME_DEPENDENCIES)', which allows recursively extracting the list of libraries involved in the dynamic linking of an executable file or library. This mode replaces the GetPrerequisites() function, which is now deprecated.
- The 'ctest(1)' command now includes the ability to serialize tests based on the resources required for each test.
- The variable 'CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY' is deprecated; instead, use 'CMAKE_FIND_USE_PACKAGE_REGISTRY'.
- Support for the AIX platform has been improved. When using the 'ENABLE_EXPORTS' property, an import file for the linker is now generated alongside the executable file, saved with the '.imp' extension. In plugins created with the 'add_library()' call using the 'MODULE' option, this file can be used during linking with the 'target_link_libraries()' command. Runtime linking on AIX is disabled by default, as CMake now provides all the necessary information about symbols for linking during loading. To enable runtime linking of dynamic libraries or loadable modules, the options '-Wl,-G' should be explicitly specified in the lists of linker flags defined through the 'CMAKE_SHARED_LINKER_FLAGS' and 'CMAKE_MODULE_LINKER_FLAGS' variables.
Source: opennet.ru
