1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330

CMake 3.7 Release Notes * * * * * * * * * * * * * * * * * * * * * * * Changes made since CMake 3.6 include the following . New Features === === === === Platforms -- -- -- -- - * CMake now supports Cross Compiling for Android with simple toolchain files . * The Clang compiler is now supported on AIX . Generators -- -- -- -- -- * The "Ninja" generator learned to conditionally support Fortran when using a "ninja" tool that has the necessary features . See generator documentation for details . * The "Ninja" generator learned to produce phony targets of the form "sub/dir/{test,install,package}" to drive the build of a subdirectory installation , test or packaging target . This is equivalent to "cd sub/dir; make {test,install,package}" with Makefile Generators . * The "Visual Studio 15" generator was added . This is experimental and based on Preview 4 because this version of VS has not been released . * Visual Studio Generators for VS 2010 and above learned to place ".natvis" source files into VS project files properly . * The "Xcode" generator 's rudimentary Swift language support learned to honor a new "CMAKE_Swift_LANGUAGE_VERSION" variable to tell Xcode what version of Swift is used by the source. * The "CodeLite" generator gained a new "CMAKE_CODELITE_USE_TARGETS" option to change project creation from projects to targets. Commands -------- * The "add_custom_command()" command gained a new "DEPFILE" option that works with the "Ninja" generator to provide implicit dependency information to the build tool. * The "cmake_parse_arguments()" command gained a new "PARSE_ARGV" mode to read arguments directly from "ARGC" and "ARGV#" variables inside a "function()" body. * The "export()" command gained an "ANDROID_MK" option to generate "Android.mk" files referencing CMake-built libraries as prebuilts for the Android NDK build system. * The "file(DOWNLOAD)" and "file(UPLOAD)" commands gained "HTTPHEADER <HTTP-header>" and "USERPWD <username>:<password>" options. * The "find_library()" and "find_package()" commands learned to search in "lib32/" directories when the build targets a 32-bit architecture. See the "FIND_LIBRARY_USE_LIB32_PATHS" global property. * The "find_package()" command gained the possibility of sorting compatible libraries by "NAME" or by "NATURAL" sorting by setting the two new variables "CMAKE_FIND_PACKAGE_SORT_ORDER" and "CMAKE_FIND_PACKAGE_SORT_DIRECTION". * The "if()" command gained new boolean comparison operations "LESS_EQUAL", "GREATER_EQUAL", "STRLESS_EQUAL", "STRGREATER_EQUAL", "VERSION_LESS_EQUAL", and "VERSION_GREATER_EQUAL". * The "install()" command gained an "EXPORT_ANDROID_MK" subcommand to install "Android.mk" files referencing installed libraries as prebuilts for the Android NDK build system. * The "string(TIMESTAMP)" and "file(TIMESTAMP)" commands gained support for the "%a" and "%b" placeholders. These are the abbreviated weekday and month names. * The "try_compile()" command source file signature now honors configuration-specific flags (e.g. "CMAKE_<LANG>_FLAGS_DEBUG") in the generated test project. Previously only the default such flags for the current toolchain were used. See policy "CMP0066". Variables --------- * Variable "CMAKE_FIND_PACKAGE_SORT_ORDER" was added to control the sorting mode of the "find_package()" command. * Variable "CMAKE_FIND_PACKAGE_SORT_DIRECTION" was added to control the sorting direction the "find_package()" command. * "Toolchain files" may now set a "CMAKE_<LANG>_FLAGS_INIT" variable to initialize the "CMAKE_<LANG>_FLAGS" cache entry the first time a language is enabled in a build tree. * "Toolchain files" may now set "CMAKE_EXE_LINKER_FLAGS_INIT", "CMAKE_SHARED_LINKER_FLAGS_INIT", and "CMAKE_MODULE_LINKER_FLAGS_INIT" variables to initialize the "CMAKE_EXE_LINKER_FLAGS", "CMAKE_SHARED_LINKER_FLAGS", and "CMAKE_MODULE_LINKER_FLAGS" cache entries the first time a language is enabled in a build tree. Properties ---------- * On Apple platforms the "BUNDLE_EXTENSION" target property now also applies to Frameworks and App Bundles. * A "BINARY_DIR" directory property was added to get the absolute path to the binary directory corresponding to the source directory on which the property is read. * A "BUILDSYSTEM_TARGETS" directory property was added to get the list of logical buildsystem target names added by the project in a directory. * A "LINK_WHAT_YOU_USE" target property and supporting "CMAKE_LINK_WHAT_YOU_USE" variable were introduced to detect (on UNIX) shared libraries that are linked but not needed by running "ldd -r -u". * A "SOURCE_DIR" directory property was added to get the absolute path to the source directory associated with a directory. * A "SUBDIRECTORIES" directory property was added to get the list of subdirectories added by a project in a directory. * A "VS_SDK_REFERENCES" target property was added to tell Visual Studio Generators to reference the named SDKs. * A "VS_TOOL_OVERRIDE" source file property was created to tell Visual Studio Generators what tool to use for a source file. * The "WINDOWS_EXPORT_ALL_SYMBOLS" target property now applies to executable targets with the "ENABLE_EXPORTS" property set. * A "XCODE_FILE_ATTRIBUTES" source file property was added to tell the "Xcode" generator to generate custom content in the Xcode project attributes for the file. Modules ------- * An "AndroidTestUtilities" module was added to manage transfer of test data to an Android device. * The "CheckFortranSourceCompiles" module macro "CHECK_Fortran_SOURCE_COMPILES" gained a "SRC_EXT" option to specify a custom test Fortran source file extension. * The "ExternalProject" module gained "HTTP_USERNAME" and "HTTP_PASSWORD" options to set http download credentials. * The "ExternalProject" module gained a "HTTP_HEADER" option to add http download headers. * The "FindBISON" module "BISON_TARGET" macro learned a new "REPORT_FILE" option to specify the bison "--report-file=" option. * The "FindBZip2" module now provides imported targets. * A "FindICU" module was introduced to find the International Components for Unicode (ICU) libraries and programs. * The "FindMatlab" module learned to find the SIMULINK and MAT components. * The "FindMatlab" module "matlab_add_mex()" command learned to add executables and modules. * The "FindMatlab" module "matlab_add_unit_test()" command learned to support inline Matlab test code. * The "FindOpenCL" module now provides imported targets. * The "FindOpenMP" module learned to detect the OpenMP version (specification date) from the compiler. * A "FindVulkan" module was added. * The "GenerateExportHeader" module learned a new "CUSTOM_CONTENT_FROM_VARIABLE" option to specify a variable containing custom content for inclusion in the generated header. * The "GNUInstallDirs" module gained a new "GNUInstallDirs_get_absolute_install_dir()" command. * The "UseJava" module gained APIs to "export" jar targets for use by external CMake projects. See the "install_jar_exports" and "export_jars" functions. CTest ----- * CTest now supports test fixtures through the new "FIXTURES_SETUP", "FIXTURES_CLEANUP" and "FIXTURES_REQUIRED" test properties. When using regular expressions or "--rerun-failed" to limit the tests to be run, a fixture' s setup and cleanup tests will automatically be added to the execution set if any test requires that fixture . * The "ctest_configure()" , "ctest_build()" , "ctest_test()" , "ctest_coverage()" , and "ctest_upload()" commands gained a new "CAPTURE_CMAKE_ERROR" option to capture any errors that occur as the commands run into a variable and avoid affecting the return code of the "ctest(1)" process . CPack -- -- - * CPack gained a "productbuild" generator on OS X , configured by the "CPackProductBuild" module . * CPack gained a new "CPACK_PACKAGE_CHECKSUM" variable to enable generation of a checksum file for each package file . * The "CPackDeb" module learned to support long file names when archive format is set to GNU tar . See "CPACK_DEBIAN_ARCHIVE_TYPE" * The "CPackIFW" module gained a new "cpack_ifw_add_package_resources()" command to include additional resources in the installer binary . * The "CPackIFW" module "cpack_ifw_configure_component()" and "cpack_ifw_configure_component_group()" commands gained a new "USER_INTERFACES" option to add a list of additonal pages to the IFW installer . * The "CPackRPM" module learned to generate debuginfo packages on demand . See "CPACK_RPM_DEBUGINFO_PACKAGE" and its per component version . * The "CPackRPM" module learned to generate source rpm ( SRPM ) packages on demand . See "CPACK_RPM_PACKAGE_SOURCES" , "CPACK_RPM_SOURCE_PKG_BUILD_PARAMS" and "CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX" . * The CPack NSIS generator now supports "CPACK_NSIS_<compName>_INSTALL_DIRECTORY" . This can be used to set component specific installation directories . * The CPack WIX generator now supports "CPACK_WIX_SKIP_PROGRAM_FOLDER" to allow specification of a custom absolute installation prefix outside of the ProgramFiles folders . * The CPack WIX generator now supports "CPACK_COMPONENT_<compName>_DISABLED" . This can be used to deselect a component from being installed by default . * The CPack WIX generator now supports "CPACK_WIX_PATCH_FILE" fragments for Feature elements . * The CPack WIX generator now supports "CPACK_WIX_ROOT_FEATURE_TITLE" and "CPACK_WIX_ROOT_FEATURE_DESCRIPTION" to allow the specification of a custom title and description for the root feature element . Other -- -- - * "cmake(1)" gained a "-E capabilities" option to provide a machine - readable ( JSON ) description of the capabilities of the cmake tool ( available generators , etc . ) . * A new "cmake-server(7)" mode was added to provide semantic information about a CMake - generated buildsystem to clients through a JSON protocol . Currently all protocols are experimental and subject to change . * The "cmake(1)" command learned a "--trace-source=<file>" option . * "ccmake(1)" learned to support vim - like navigation bindings . * "cmake-gui(1)" gained a button to open the generated project file for Visual Studio Generators and the "Xcode" generator . Deprecated and Removed Features === === === === === === === === === === = * We no longer provide Linux i386 binaries for download from "cmake.org" for new versions of CMake . * Vim support files "cmake-indent.vim" , "cmake-syntax.vim" , and "cmake-help.vim" have been removed in favor of the files now provided from the vim - cmake - syntax project . * Support for building CMake itself with some compilers was dropped : * Visual Studio 7.1 and 2005 -- superseded by VS 2008 and above * MinGW . org mingw32 -- superseded by MSYS2 mingw32 and mingw64 CMake still supports generating build systems for other projects using these compilers . Other Changes === === === === = * The Fortran dependency scanner learned to support the syntax of Fortran Submodules . * Vim support files "indent/cmake.vim" and "syntax/cmake.vim" from the vim - cmake - syntax project are now distributed with CMake . -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- Changes made since CMake 3.7.0 - rc3 : Brad King ( 2 ) : QtAutogen : Do not re - generate AUTORCC outputs on every build CMake 3.7.0 Florent Castelli ( 1 ) : PkgConfig : Fix FindPkgConfig imported target feature