diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5550c2fc87..626071a512 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -52,7 +52,7 @@ prep:doc-package: - .cmake_doc_artifacts - .run_only_for_package -.upload:source-package: +upload:source-package: extends: - .rsync_upload - .run_only_for_package @@ -175,7 +175,7 @@ build:linux-x86_64-package: needs: - prep:doc-package -.upload:linux-x86_64-package: +upload:linux-x86_64-package: extends: - .rsync_upload - .run_only_for_package @@ -250,7 +250,7 @@ build:macos-package: needs: - prep:doc-package -.upload:macos-package: +upload:macos-package: extends: - .rsync_upload - .run_only_for_package diff --git a/.gitlab/ci/configure_debian10_ninja.cmake b/.gitlab/ci/configure_debian10_ninja.cmake index 2340543180..90556bfd21 100644 --- a/.gitlab/ci/configure_debian10_ninja.cmake +++ b/.gitlab/ci/configure_debian10_ninja.cmake @@ -19,6 +19,7 @@ set(CMake_TEST_FindGSL "ON" CACHE BOOL "") set(CMake_TEST_FindGTest "ON" CACHE BOOL "") set(CMake_TEST_FindGTK2 "ON" CACHE BOOL "") set(CMake_TEST_FindIconv "ON" CACHE BOOL "") +set(CMake_TEST_FindIntl "ON" CACHE BOOL "") set(CMake_TEST_FindJPEG "ON" CACHE BOOL "") set(CMake_TEST_FindJsonCpp "ON" CACHE BOOL "") set(CMake_TEST_FindLAPACK "ON" CACHE BOOL "") diff --git a/.gitlab/ci/configure_fedora33_makefiles.cmake b/.gitlab/ci/configure_fedora33_makefiles.cmake index 8d2454fef0..db2d0059be 100644 --- a/.gitlab/ci/configure_fedora33_makefiles.cmake +++ b/.gitlab/ci/configure_fedora33_makefiles.cmake @@ -19,6 +19,7 @@ set(CMake_TEST_FindGSL "ON" CACHE BOOL "") set(CMake_TEST_FindGTest "ON" CACHE BOOL "") set(CMake_TEST_FindGTK2 "ON" CACHE BOOL "") set(CMake_TEST_FindIconv "ON" CACHE BOOL "") +set(CMake_TEST_FindIntl "ON" CACHE BOOL "") set(CMake_TEST_FindJPEG "ON" CACHE BOOL "") set(CMake_TEST_FindJsonCpp "ON" CACHE BOOL "") set(CMake_TEST_FindLAPACK "ON" CACHE BOOL "") diff --git a/.gitlab/os-linux.yml b/.gitlab/os-linux.yml index c69302a38a..6684d71c8f 100644 --- a/.gitlab/os-linux.yml +++ b/.gitlab/os-linux.yml @@ -52,7 +52,7 @@ image: "kitware/cmake:ci-fedora33-x86_64-2020-11-13" variables: - GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" + GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci/long file name for testing purposes" #### Lint builds diff --git a/Auxiliary/cmake-mode.el b/Auxiliary/cmake-mode.el index caaf0d52f8..c3733ab254 100644 --- a/Auxiliary/cmake-mode.el +++ b/Auxiliary/cmake-mode.el @@ -258,7 +258,8 @@ optional argument topic will be appended to the argument list." (save-selected-window (select-window (display-buffer buffer 'not-this-window)) (cmake-mode) - (read-only-mode 1)) + (read-only-mode 1) + (view-mode 1)) ) ) diff --git a/Auxiliary/vim/extract-upper-case.pl b/Auxiliary/vim/extract-upper-case.pl index 204b49662b..11791991d7 100755 --- a/Auxiliary/vim/extract-upper-case.pl +++ b/Auxiliary/vim/extract-upper-case.pl @@ -3,6 +3,8 @@ use strict; use warnings; use POSIX qw(strftime); +use JSON; +use File::Basename; #my $cmake = "/home/pboettch/devel/upstream/cmake/build/bin/cmake"; my $cmake = "cmake"; @@ -96,6 +98,28 @@ close(CMAKE); # transform all properties in a hash my %properties = map { $_ => 1 } @properties; +# read in manually written files +my $modules_dir = dirname(__FILE__) . "/modules"; +opendir(DIR, $modules_dir) || die "can't opendir $modules_dir: $!"; +my @json_files = grep { /\.json$/ && -f "$modules_dir/$_" } readdir(DIR); +closedir DIR; + +foreach my $file (@json_files) { + local $/; # Enable 'slurp' mode + open my $fh, "<", $modules_dir."/".$file; + my $json = <$fh>; + close $fh; + + my $mod = decode_json($json); + foreach my $var (@{$mod->{variables}}) { + $variables{$var} = 1; + } + + while (my ($cmd, $keywords) = each %{$mod->{commands}}) { + $keywords{$cmd} = [ sort @{$keywords} ]; + } +} + # version open(CMAKE, "$cmake --version|"); my $version = 'unknown'; diff --git a/Auxiliary/vim/syntax/cmake.vim b/Auxiliary/vim/syntax/cmake.vim index 2dd3174abe..a9bcf47bae 100644 --- a/Auxiliary/vim/syntax/cmake.vim +++ b/Auxiliary/vim/syntax/cmake.vim @@ -1,13 +1,13 @@ " Vim syntax file " Program: CMake - Cross-Platform Makefile Generator -" Version: cmake version 3.14.20190529-g067a4f +" Version: cmake version 3.19.20201028-gdab947f " Language: CMake " Author: Andy Cedilnik , " Nicholas Hutchinson , " Patrick Boettcher " Maintainer: Dimitri Merejkowsky " Former Maintainer: Karthik Krishnan -" Last Change: 2019 May 29 +" Last Change: 2020 oct. 28 " " Licence: The CMake license applies to this file. See " https://cmake.org/licensing @@ -44,7 +44,9 @@ syn keyword cmakeProperty contained \ ADDITIONAL_CLEAN_FILES \ ADDITIONAL_MAKE_CLEAN_FILES \ ADVANCED + \ AIX_EXPORT_ALL_SYMBOLS \ ALIASED_TARGET + \ ALIAS_GLOBAL \ ALLOW_DUPLICATE_CUSTOM_TARGETS \ ANDROID_ANT_ADDITIONAL_OPTIONS \ ANDROID_API @@ -79,6 +81,7 @@ syn keyword cmakeProperty contained \ AUTOMOC_EXECUTABLE \ AUTOMOC_MACRO_NAMES \ AUTOMOC_MOC_OPTIONS + \ AUTOMOC_PATH_PREFIX \ AUTOMOC_SOURCE_GROUP \ AUTOMOC_TARGETS_FOLDER \ AUTORCC @@ -100,8 +103,8 @@ syn keyword cmakeProperty contained \ CACHE_VARIABLES \ CLEAN_NO_CUSTOM \ CMAKE_CONFIGURE_DEPENDS - \ CMAKE_CXX_KNOWN_FEATURES \ CMAKE_CUDA_KNOWN_FEATURES + \ CMAKE_CXX_KNOWN_FEATURES \ CMAKE_C_KNOWN_FEATURES \ CMAKE_ROLE \ COMMON_LANGUAGE_RUNTIME @@ -123,9 +126,11 @@ syn keyword cmakeProperty contained \ CPACK_START_MENU_SHORTCUTS \ CPACK_WIX_ACL \ CROSSCOMPILING_EMULATOR + \ CUDA_ARCHITECTURES \ CUDA_EXTENSIONS \ CUDA_PTX_COMPILATION \ CUDA_RESOLVE_DEVICE_SYMBOLS + \ CUDA_RUNTIME_LIBRARY \ CUDA_SEPARABLE_COMPILATION \ CUDA_STANDARD \ CUDA_STANDARD_REQUIRED @@ -142,8 +147,11 @@ syn keyword cmakeProperty contained \ DEPENDS \ DEPLOYMENT_ADDITIONAL_FILES \ DEPLOYMENT_REMOTE_DIRECTORY + \ DEPRECATION \ DISABLED \ DISABLED_FEATURES + \ DISABLE_PRECOMPILE_HEADERS + \ DOTNET_TARGET_FRAMEWORK \ DOTNET_TARGET_FRAMEWORK_VERSION \ ECLIPSE_EXTRA_CPROJECT_CONTENTS \ ECLIPSE_EXTRA_NATURES @@ -202,6 +210,7 @@ syn keyword cmakeProperty contained \ INCLUDE_DIRECTORIES \ INCLUDE_REGULAR_EXPRESSION \ INSTALL_NAME_DIR + \ INSTALL_REMOVE_ENVIRONMENT_RPATH \ INSTALL_RPATH \ INSTALL_RPATH_USE_LINK_PATH \ INTERFACE_AUTOUIC_OPTIONS @@ -214,11 +223,14 @@ syn keyword cmakeProperty contained \ INTERFACE_LINK_LIBRARIES \ INTERFACE_LINK_OPTIONS \ INTERFACE_POSITION_INDEPENDENT_CODE + \ INTERFACE_PRECOMPILE_HEADERS \ INTERFACE_SOURCES \ INTERFACE_SYSTEM_INCLUDE_DIRECTORIES \ INTERPROCEDURAL_OPTIMIZATION \ IN_TRY_COMPILE \ IOS_INSTALL_COMBINED + \ ISPC_HEADER_DIRECTORY + \ ISPC_INSTRUCTION_SETS \ JOB_POOLS \ JOB_POOL_COMPILE \ JOB_POOL_LINK @@ -242,6 +254,8 @@ syn keyword cmakeProperty contained \ LINK_WHAT_YOU_USE \ LISTFILE_STACK \ LOCATION + \ MACHO_COMPATIBILITY_VERSION + \ MACHO_CURRENT_VERSION \ MACOSX_BUNDLE \ MACOSX_BUNDLE_INFO_PLIST \ MACOSX_FRAMEWORK_INFO_PLIST @@ -255,18 +269,29 @@ syn keyword cmakeProperty contained \ NAME \ NO_SONAME \ NO_SYSTEM_FROM_IMPORTED + \ OBJCXX_EXTENSIONS + \ OBJCXX_STANDARD + \ OBJCXX_STANDARD_REQUIRED + \ OBJC_EXTENSIONS + \ OBJC_STANDARD + \ OBJC_STANDARD_REQUIRED \ OBJECT_DEPENDS \ OBJECT_OUTPUTS + \ OPTIMIZE_DEPENDENCIES \ OSX_ARCHITECTURES \ OUTPUT_NAME \ PACKAGES_FOUND \ PACKAGES_NOT_FOUND \ PARENT_DIRECTORY \ PASS_REGULAR_EXPRESSION + \ PCH_INSTANTIATE_TEMPLATES + \ PCH_WARN_INVALID \ PDB_NAME \ PDB_OUTPUT_DIRECTORY \ POSITION_INDEPENDENT_CODE \ POST_INSTALL_SCRIPT + \ PRECOMPILE_HEADERS + \ PRECOMPILE_HEADERS_REUSE_FROM \ PREDEFINED_TARGETS_FOLDER \ PREFIX \ PRE_INSTALL_SCRIPT @@ -278,6 +303,7 @@ syn keyword cmakeProperty contained \ REPORT_UNDEFINED_PROPERTIES \ REQUIRED_FILES \ RESOURCE + \ RESOURCE_GROUPS \ RESOURCE_LOCK \ RULE_LAUNCH_COMPILE \ RULE_LAUNCH_CUSTOM @@ -291,8 +317,10 @@ syn keyword cmakeProperty contained \ SKIP_AUTORCC \ SKIP_AUTOUIC \ SKIP_BUILD_RPATH + \ SKIP_PRECOMPILE_HEADERS \ SKIP_REGULAR_EXPRESSION \ SKIP_RETURN_CODE + \ SKIP_UNITY_BUILD_INCLUSION \ SOURCES \ SOURCE_DIR \ SOVERSION @@ -304,6 +332,7 @@ syn keyword cmakeProperty contained \ SYMBOLIC \ Swift_DEPENDENCIES_FILE \ Swift_DIAGNOSTICS_FILE + \ Swift_LANGUAGE_VERSION \ Swift_MODULE_DIRECTORY \ Swift_MODULE_NAME \ TARGET_ARCHIVES_MAY_BE_SHARED_LIBS @@ -315,6 +344,12 @@ syn keyword cmakeProperty contained \ TIMEOUT \ TIMEOUT_AFTER_MATCH \ TYPE + \ UNITY_BUILD + \ UNITY_BUILD_BATCH_SIZE + \ UNITY_BUILD_CODE_AFTER_INCLUDE + \ UNITY_BUILD_CODE_BEFORE_INCLUDE + \ UNITY_BUILD_MODE + \ UNITY_GROUP \ USE_FOLDERS \ VALUE \ VARIABLES @@ -329,9 +364,11 @@ syn keyword cmakeProperty contained \ VS_DEPLOYMENT_CONTENT \ VS_DEPLOYMENT_LOCATION \ VS_DESKTOP_EXTENSIONS_VERSION + \ VS_DOTNET_DOCUMENTATION_FILE \ VS_DOTNET_REFERENCES \ VS_DOTNET_REFERENCES_COPY_LOCAL \ VS_DOTNET_TARGET_FRAMEWORK_VERSION + \ VS_DPI_AWARE \ VS_GLOBAL_KEYWORD \ VS_GLOBAL_PROJECT_TYPES \ VS_GLOBAL_ROOTNAMESPACE @@ -342,6 +379,8 @@ syn keyword cmakeProperty contained \ VS_KEYWORD \ VS_MOBILE_EXTENSIONS_VERSION \ VS_NO_SOLUTION_DEPLOY + \ VS_PACKAGE_REFERENCES + \ VS_PLATFORM_TOOLSET \ VS_PROJECT_IMPORT \ VS_RESOURCE_GENERATOR \ VS_SCC_AUXPATH @@ -349,6 +388,7 @@ syn keyword cmakeProperty contained \ VS_SCC_PROJECTNAME \ VS_SCC_PROVIDER \ VS_SDK_REFERENCES + \ VS_SETTINGS \ VS_SHADER_DISABLE_OPTIMIZATIONS \ VS_SHADER_ENABLE_DEBUG \ VS_SHADER_ENTRYPOINT @@ -358,6 +398,7 @@ syn keyword cmakeProperty contained \ VS_SHADER_OUTPUT_HEADER_FILE \ VS_SHADER_TYPE \ VS_SHADER_VARIABLE_NAME + \ VS_SOLUTION_DEPLOY \ VS_STARTUP_PROJECT \ VS_TOOL_OVERRIDE \ VS_USER_PROPS @@ -376,11 +417,13 @@ syn keyword cmakeProperty contained \ XCODE_FILE_ATTRIBUTES \ XCODE_GENERATE_SCHEME \ XCODE_LAST_KNOWN_FILE_TYPE + \ XCODE_LINK_BUILD_PHASE_MODE \ XCODE_PRODUCT_TYPE \ XCODE_SCHEME_ADDRESS_SANITIZER \ XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN \ XCODE_SCHEME_ARGUMENTS \ XCODE_SCHEME_DEBUG_AS_ROOT + \ XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING \ XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER \ XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS \ XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE @@ -395,6 +438,7 @@ syn keyword cmakeProperty contained \ XCODE_SCHEME_THREAD_SANITIZER_STOP \ XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER \ XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP + \ XCODE_SCHEME_WORKING_DIRECTORY \ XCODE_SCHEME_ZOMBIE_OBJECTS \ XCTEST @@ -405,6 +449,7 @@ syn keyword cmakeVariable contained \ BUILD_SHARED_LIBS \ CACHE \ CMAKE_ABSOLUTE_DESTINATION_FILES + \ CMAKE_AIX_EXPORT_ALL_SYMBOLS \ CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS \ CMAKE_ANDROID_API \ CMAKE_ANDROID_API_MIN @@ -485,6 +530,9 @@ syn keyword cmakeVariable contained \ CMAKE_ASM_LINKER_WRAPPER_FLAG \ CMAKE_ASM_LINKER_WRAPPER_FLAG_SEP \ CMAKE_ASM_LINK_EXECUTABLE + \ CMAKE_ASM_LINK_LIBRARY_FILE_FLAG + \ CMAKE_ASM_LINK_LIBRARY_FLAG + \ CMAKE_ASM_LINK_LIBRARY_SUFFIX \ CMAKE_ASM_MASM \ CMAKE_ASM_MASM_ANDROID_TOOLCHAIN_MACHINE \ CMAKE_ASM_MASM_ANDROID_TOOLCHAIN_PREFIX @@ -535,6 +583,9 @@ syn keyword cmakeVariable contained \ CMAKE_ASM_MASM_LINKER_WRAPPER_FLAG \ CMAKE_ASM_MASM_LINKER_WRAPPER_FLAG_SEP \ CMAKE_ASM_MASM_LINK_EXECUTABLE + \ CMAKE_ASM_MASM_LINK_LIBRARY_FILE_FLAG + \ CMAKE_ASM_MASM_LINK_LIBRARY_FLAG + \ CMAKE_ASM_MASM_LINK_LIBRARY_SUFFIX \ CMAKE_ASM_MASM_OUTPUT_EXTENSION \ CMAKE_ASM_MASM_PLATFORM_ID \ CMAKE_ASM_MASM_SIMULATE_ID @@ -594,6 +645,9 @@ syn keyword cmakeVariable contained \ CMAKE_ASM_NASM_LINKER_WRAPPER_FLAG \ CMAKE_ASM_NASM_LINKER_WRAPPER_FLAG_SEP \ CMAKE_ASM_NASM_LINK_EXECUTABLE + \ CMAKE_ASM_NASM_LINK_LIBRARY_FILE_FLAG + \ CMAKE_ASM_NASM_LINK_LIBRARY_FLAG + \ CMAKE_ASM_NASM_LINK_LIBRARY_SUFFIX \ CMAKE_ASM_NASM_OUTPUT_EXTENSION \ CMAKE_ASM_NASM_PLATFORM_ID \ CMAKE_ASM_NASM_SIMULATE_ID @@ -620,6 +674,7 @@ syn keyword cmakeVariable contained \ CMAKE_AUTOMOC_DEPEND_FILTERS \ CMAKE_AUTOMOC_MACRO_NAMES \ CMAKE_AUTOMOC_MOC_OPTIONS + \ CMAKE_AUTOMOC_PATH_PREFIX \ CMAKE_AUTOMOC_RELAXED_MODE \ CMAKE_AUTORCC \ CMAKE_AUTORCC_OPTIONS @@ -640,6 +695,7 @@ syn keyword cmakeVariable contained \ CMAKE_CACHE_MINOR_VERSION \ CMAKE_CACHE_PATCH_VERSION \ CMAKE_CFG_INTDIR + \ CMAKE_CLANG_VFS_OVERLAY \ CMAKE_CL_64 \ CMAKE_CODEBLOCKS_COMPILER_ID \ CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES @@ -655,6 +711,7 @@ syn keyword cmakeVariable contained \ CMAKE_CPACK_COMMAND \ CMAKE_CROSSCOMPILING \ CMAKE_CROSSCOMPILING_EMULATOR + \ CMAKE_CROSS_CONFIGS \ CMAKE_CSharp \ CMAKE_CSharp_ANDROID_TOOLCHAIN_MACHINE \ CMAKE_CSharp_ANDROID_TOOLCHAIN_PREFIX @@ -705,6 +762,9 @@ syn keyword cmakeVariable contained \ CMAKE_CSharp_LINKER_WRAPPER_FLAG \ CMAKE_CSharp_LINKER_WRAPPER_FLAG_SEP \ CMAKE_CSharp_LINK_EXECUTABLE + \ CMAKE_CSharp_LINK_LIBRARY_FILE_FLAG + \ CMAKE_CSharp_LINK_LIBRARY_FLAG + \ CMAKE_CSharp_LINK_LIBRARY_SUFFIX \ CMAKE_CSharp_OUTPUT_EXTENSION \ CMAKE_CSharp_PLATFORM_ID \ CMAKE_CSharp_SIMULATE_ID @@ -714,11 +774,13 @@ syn keyword cmakeVariable contained \ CMAKE_CSharp_STANDARD_INCLUDE_DIRECTORIES \ CMAKE_CSharp_STANDARD_LIBRARIES \ CMAKE_CSharp_VISIBILITY_PRESET + \ CMAKE_CTEST_ARGUMENTS \ CMAKE_CTEST_COMMAND \ CMAKE_CUDA \ CMAKE_CUDA_ANDROID_TOOLCHAIN_MACHINE \ CMAKE_CUDA_ANDROID_TOOLCHAIN_PREFIX \ CMAKE_CUDA_ANDROID_TOOLCHAIN_SUFFIX + \ CMAKE_CUDA_ARCHITECTURES \ CMAKE_CUDA_ARCHIVE_APPEND \ CMAKE_CUDA_ARCHIVE_CREATE \ CMAKE_CUDA_ARCHIVE_FINISH @@ -728,7 +790,6 @@ syn keyword cmakeVariable contained \ CMAKE_CUDA_COMPILER_AR \ CMAKE_CUDA_COMPILER_ARCHITECTURE_ID \ CMAKE_CUDA_COMPILER_EXTERNAL_TOOLCHAIN - \ CMAKE_CUDA_COMPILE_FEATURES \ CMAKE_CUDA_COMPILER_ID \ CMAKE_CUDA_COMPILER_LAUNCHER \ CMAKE_CUDA_COMPILER_LOADED @@ -737,6 +798,7 @@ syn keyword cmakeVariable contained \ CMAKE_CUDA_COMPILER_TARGET \ CMAKE_CUDA_COMPILER_VERSION \ CMAKE_CUDA_COMPILER_VERSION_INTERNAL + \ CMAKE_CUDA_COMPILE_FEATURES \ CMAKE_CUDA_COMPILE_OBJECT \ CMAKE_CUDA_CPPCHECK \ CMAKE_CUDA_CPPLINT @@ -768,8 +830,13 @@ syn keyword cmakeVariable contained \ CMAKE_CUDA_LINKER_WRAPPER_FLAG \ CMAKE_CUDA_LINKER_WRAPPER_FLAG_SEP \ CMAKE_CUDA_LINK_EXECUTABLE + \ CMAKE_CUDA_LINK_LIBRARY_FILE_FLAG + \ CMAKE_CUDA_LINK_LIBRARY_FLAG + \ CMAKE_CUDA_LINK_LIBRARY_SUFFIX \ CMAKE_CUDA_OUTPUT_EXTENSION \ CMAKE_CUDA_PLATFORM_ID + \ CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS + \ CMAKE_CUDA_RUNTIME_LIBRARY \ CMAKE_CUDA_SEPARABLE_COMPILATION \ CMAKE_CUDA_SIMULATE_ID \ CMAKE_CUDA_SIMULATE_VERSION @@ -782,6 +849,10 @@ syn keyword cmakeVariable contained \ CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES \ CMAKE_CUDA_VISIBILITY_PRESET \ CMAKE_CURRENT_BINARY_DIR + \ CMAKE_CURRENT_FUNCTION + \ CMAKE_CURRENT_FUNCTION_LIST_DIR + \ CMAKE_CURRENT_FUNCTION_LIST_FILE + \ CMAKE_CURRENT_FUNCTION_LIST_LINE \ CMAKE_CURRENT_LIST_DIR \ CMAKE_CURRENT_LIST_FILE \ CMAKE_CURRENT_LIST_LINE @@ -838,6 +909,9 @@ syn keyword cmakeVariable contained \ CMAKE_CXX_LINKER_WRAPPER_FLAG \ CMAKE_CXX_LINKER_WRAPPER_FLAG_SEP \ CMAKE_CXX_LINK_EXECUTABLE + \ CMAKE_CXX_LINK_LIBRARY_FILE_FLAG + \ CMAKE_CXX_LINK_LIBRARY_FLAG + \ CMAKE_CXX_LINK_LIBRARY_SUFFIX \ CMAKE_CXX_OUTPUT_EXTENSION \ CMAKE_CXX_PLATFORM_ID \ CMAKE_CXX_SIMULATE_ID @@ -900,6 +974,9 @@ syn keyword cmakeVariable contained \ CMAKE_C_LINKER_WRAPPER_FLAG \ CMAKE_C_LINKER_WRAPPER_FLAG_SEP \ CMAKE_C_LINK_EXECUTABLE + \ CMAKE_C_LINK_LIBRARY_FILE_FLAG + \ CMAKE_C_LINK_LIBRARY_FLAG + \ CMAKE_C_LINK_LIBRARY_SUFFIX \ CMAKE_C_OUTPUT_EXTENSION \ CMAKE_C_PLATFORM_ID \ CMAKE_C_SIMULATE_ID @@ -913,9 +990,13 @@ syn keyword cmakeVariable contained \ CMAKE_C_VISIBILITY_PRESET \ CMAKE_DEBUG_POSTFIX \ CMAKE_DEBUG_TARGET_PROPERTIES + \ CMAKE_DEFAULT_BUILD_TYPE + \ CMAKE_DEFAULT_CONFIGS \ CMAKE_DEPENDS_IN_PROJECT_ONLY \ CMAKE_DIRECTORY_LABELS + \ CMAKE_DISABLE_PRECOMPILE_HEADERS \ CMAKE_DL_LIBS + \ CMAKE_DOTNET_TARGET_FRAMEWORK \ CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION \ CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES \ CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT @@ -936,6 +1017,7 @@ syn keyword cmakeVariable contained \ CMAKE_EXTRA_GENERATOR \ CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES \ CMAKE_FIND_APPBUNDLE + \ CMAKE_FIND_DEBUG_MODE \ CMAKE_FIND_FRAMEWORK \ CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX \ CMAKE_FIND_LIBRARY_PREFIXES @@ -960,6 +1042,7 @@ syn keyword cmakeVariable contained \ CMAKE_FIND_USE_PACKAGE_REGISTRY \ CMAKE_FIND_USE_PACKAGE_ROOT_PATH \ CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH + \ CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY \ CMAKE_FOLDER \ CMAKE_FRAMEWORK \ CMAKE_FRAMEWORK_PATH @@ -1014,6 +1097,9 @@ syn keyword cmakeVariable contained \ CMAKE_Fortran_LINKER_WRAPPER_FLAG \ CMAKE_Fortran_LINKER_WRAPPER_FLAG_SEP \ CMAKE_Fortran_LINK_EXECUTABLE + \ CMAKE_Fortran_LINK_LIBRARY_FILE_FLAG + \ CMAKE_Fortran_LINK_LIBRARY_FLAG + \ CMAKE_Fortran_LINK_LIBRARY_SUFFIX \ CMAKE_Fortran_MODDIR_DEFAULT \ CMAKE_Fortran_MODDIR_FLAG \ CMAKE_Fortran_MODOUT_FLAG @@ -1048,7 +1134,6 @@ syn keyword cmakeVariable contained \ CMAKE_HOST_UNIX \ CMAKE_HOST_WIN32 \ CMAKE_IGNORE_PATH - \ CMAKE_ISPC_HEADER_DIRECTORY \ CMAKE_IMPORT_LIBRARY_PREFIX \ CMAKE_IMPORT_LIBRARY_SUFFIX \ CMAKE_INCLUDE_CURRENT_DIR @@ -1062,11 +1147,14 @@ syn keyword cmakeVariable contained \ CMAKE_INSTALL_NAME_DIR \ CMAKE_INSTALL_PREFIX \ CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT + \ CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH \ CMAKE_INSTALL_RPATH \ CMAKE_INSTALL_RPATH_USE_LINK_PATH \ CMAKE_INTERNAL_PLATFORM_ABI \ CMAKE_INTERPROCEDURAL_OPTIMIZATION \ CMAKE_IOS_INSTALL_COMBINED + \ CMAKE_ISPC_HEADER_DIRECTORY + \ CMAKE_ISPC_INSTRUCTION_SETS \ CMAKE_JOB_POOLS \ CMAKE_JOB_POOL_COMPILE \ CMAKE_JOB_POOL_LINK @@ -1121,6 +1209,9 @@ syn keyword cmakeVariable contained \ CMAKE_Java_LINKER_WRAPPER_FLAG \ CMAKE_Java_LINKER_WRAPPER_FLAG_SEP \ CMAKE_Java_LINK_EXECUTABLE + \ CMAKE_Java_LINK_LIBRARY_FILE_FLAG + \ CMAKE_Java_LINK_LIBRARY_FLAG + \ CMAKE_Java_LINK_LIBRARY_SUFFIX \ CMAKE_Java_OUTPUT_EXTENSION \ CMAKE_Java_PLATFORM_ID \ CMAKE_Java_SIMULATE_ID @@ -1151,6 +1242,10 @@ syn keyword cmakeVariable contained \ CMAKE_MAKE_PROGRAM \ CMAKE_MATCH_COUNT \ CMAKE_MAXIMUM_RECURSION_DEPTH + \ CMAKE_MESSAGE_CONTEXT + \ CMAKE_MESSAGE_CONTEXT_SHOW + \ CMAKE_MESSAGE_INDENT + \ CMAKE_MESSAGE_LOG_LEVEL \ CMAKE_MFC_FLAG \ CMAKE_MINIMUM_REQUIRED_VERSION \ CMAKE_MINOR_VERSION @@ -1165,12 +1260,23 @@ syn keyword cmakeVariable contained \ CMAKE_NOT_USING_CONFIG_FLAGS \ CMAKE_NO_BUILTIN_CHRPATH \ CMAKE_NO_SYSTEM_FROM_IMPORTED + \ CMAKE_OBJCXX_CLANG_TIDY + \ CMAKE_OBJCXX_EXTENSIONS + \ CMAKE_OBJCXX_STANDARD + \ CMAKE_OBJCXX_STANDARD_REQUIRED + \ CMAKE_OBJC_CLANG_TIDY + \ CMAKE_OBJC_EXTENSIONS + \ CMAKE_OBJC_STANDARD + \ CMAKE_OBJC_STANDARD_REQUIRED \ CMAKE_OBJECT_PATH_MAX + \ CMAKE_OPTIMIZE_DEPENDENCIES \ CMAKE_OSX_ARCHITECTURES \ CMAKE_OSX_DEPLOYMENT_TARGET \ CMAKE_OSX_SYSROOT \ CMAKE_PARENT_LIST_FILE \ CMAKE_PATCH_VERSION + \ CMAKE_PCH_INSTANTIATE_TEMPLATES + \ CMAKE_PCH_WARN_INVALID \ CMAKE_PDB_OUTPUT_DIRECTORY \ CMAKE_POSITION_INDEPENDENT_CODE \ CMAKE_PREFIX_PATH @@ -1236,6 +1342,9 @@ syn keyword cmakeVariable contained \ CMAKE_RC_LINKER_WRAPPER_FLAG \ CMAKE_RC_LINKER_WRAPPER_FLAG_SEP \ CMAKE_RC_LINK_EXECUTABLE + \ CMAKE_RC_LINK_LIBRARY_FILE_FLAG + \ CMAKE_RC_LINK_LIBRARY_FLAG + \ CMAKE_RC_LINK_LIBRARY_SUFFIX \ CMAKE_RC_OUTPUT_EXTENSION \ CMAKE_RC_PLATFORM_ID \ CMAKE_RC_SIMULATE_ID @@ -1335,7 +1444,11 @@ syn keyword cmakeVariable contained \ CMAKE_Swift_LINKER_WRAPPER_FLAG \ CMAKE_Swift_LINKER_WRAPPER_FLAG_SEP \ CMAKE_Swift_LINK_EXECUTABLE + \ CMAKE_Swift_LINK_LIBRARY_FILE_FLAG + \ CMAKE_Swift_LINK_LIBRARY_FLAG + \ CMAKE_Swift_LINK_LIBRARY_SUFFIX \ CMAKE_Swift_MODULE_DIRECTORY + \ CMAKE_Swift_NUM_THREADS \ CMAKE_Swift_OUTPUT_EXTENSION \ CMAKE_Swift_PLATFORM_ID \ CMAKE_Swift_SIMULATE_ID @@ -1350,6 +1463,8 @@ syn keyword cmakeVariable contained \ CMAKE_TRY_COMPILE_PLATFORM_VARIABLES \ CMAKE_TRY_COMPILE_TARGET_TYPE \ CMAKE_TWEAK_VERSION + \ CMAKE_UNITY_BUILD + \ CMAKE_UNITY_BUILD_BATCH_SIZE \ CMAKE_USER_MAKE_RULES_OVERRIDE \ CMAKE_USER_MAKE_RULES_OVERRIDE_ASM \ CMAKE_USER_MAKE_RULES_OVERRIDE_ASM_MASM @@ -1378,6 +1493,7 @@ syn keyword cmakeVariable contained \ CMAKE_VS_PLATFORM_NAME_DEFAULT \ CMAKE_VS_PLATFORM_TOOLSET \ CMAKE_VS_PLATFORM_TOOLSET_CUDA + \ CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR \ CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE \ CMAKE_VS_PLATFORM_TOOLSET_VERSION \ CMAKE_VS_SDK_EXCLUDE_DIRECTORIES @@ -1388,19 +1504,24 @@ syn keyword cmakeVariable contained \ CMAKE_VS_SDK_REFERENCE_DIRECTORIES \ CMAKE_VS_SDK_SOURCE_DIRECTORIES \ CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION + \ CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM \ CMAKE_VS_WINRT_BY_DEFAULT \ CMAKE_WARN_DEPRECATED \ CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION \ CMAKE_WIN32_EXECUTABLE \ CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS + \ CMAKE_XCODE_BUILD_SYSTEM \ CMAKE_XCODE_GENERATE_SCHEME \ CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY + \ CMAKE_XCODE_LINK_BUILD_PHASE_MODE \ CMAKE_XCODE_PLATFORM_TOOLSET \ CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER \ CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN + \ CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING \ CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER \ CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS \ CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE + \ CMAKE_XCODE_SCHEME_ENVIRONMENT \ CMAKE_XCODE_SCHEME_GUARD_MALLOC \ CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP \ CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES @@ -1410,13 +1531,13 @@ syn keyword cmakeVariable contained \ CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP \ CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER \ CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP + \ CMAKE_XCODE_SCHEME_WORKING_DIRECTORY \ CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS \ CPACK_ABSOLUTE_DESTINATION_FILES \ CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY \ CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION \ CPACK_INCLUDE_TOPLEVEL_DIRECTORY \ CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS - \ CPACK_INSTALL_SCRIPT \ CPACK_PACKAGING_INSTALL_PREFIX \ CPACK_SET_DESTDIR \ CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION @@ -1476,6 +1597,7 @@ syn keyword cmakeVariable contained \ CTEST_P4_COMMAND \ CTEST_P4_OPTIONS \ CTEST_P4_UPDATE_OPTIONS + \ CTEST_RESOURCE_SPEC_FILE \ CTEST_RUN_CURRENT_SCRIPT \ CTEST_SCP_COMMAND \ CTEST_SITE @@ -1493,6 +1615,283 @@ syn keyword cmakeVariable contained \ CTEST_UPDATE_VERSION_OVERRIDE \ CTEST_USE_LAUNCHERS \ CYGWIN + \ DOXYGEN_ABBREVIATE_BRIEF + \ DOXYGEN_ALIASES + \ DOXYGEN_ALLEXTERNALS + \ DOXYGEN_ALLOW_UNICODE_NAMES + \ DOXYGEN_ALPHABETICAL_INDEX + \ DOXYGEN_ALWAYS_DETAILED_SEC + \ DOXYGEN_AUTOLINK_SUPPORT + \ DOXYGEN_BINARY_TOC + \ DOXYGEN_BRIEF_MEMBER_DESC + \ DOXYGEN_BUILTIN_STL_SUPPORT + \ DOXYGEN_CALLER_GRAPH + \ DOXYGEN_CALL_GRAPH + \ DOXYGEN_CASE_SENSE_NAMES + \ DOXYGEN_CHM_FILE + \ DOXYGEN_CHM_INDEX_ENCODING + \ DOXYGEN_CITE_BIB_FILES + \ DOXYGEN_CLANG_ASSISTED_PARSING + \ DOXYGEN_CLANG_DATABASE_PATH + \ DOXYGEN_CLANG_OPTIONS + \ DOXYGEN_CLASS_DIAGRAMS + \ DOXYGEN_CLASS_GRAPH + \ DOXYGEN_COLLABORATION_GRAPH + \ DOXYGEN_COLS_IN_ALPHA_INDEX + \ DOXYGEN_COMPACT_LATEX + \ DOXYGEN_COMPACT_RTF + \ DOXYGEN_CPP_CLI_SUPPORT + \ DOXYGEN_CREATE_SUBDIRS + \ DOXYGEN_DIAFILE_DIRS + \ DOXYGEN_DIA_PATH + \ DOXYGEN_DIRECTORY_GRAPH + \ DOXYGEN_DISABLE_INDEX + \ DOXYGEN_DISTRIBUTE_GROUP_DOC + \ DOXYGEN_DOCBOOK_OUTPUT + \ DOXYGEN_DOCBOOK_PROGRAMLISTING + \ DOXYGEN_DOCSET_BUNDLE_ID + \ DOXYGEN_DOCSET_FEEDNAME + \ DOXYGEN_DOCSET_PUBLISHER_ID + \ DOXYGEN_DOCSET_PUBLISHER_NAME + \ DOXYGEN_DOTFILE_DIRS + \ DOXYGEN_DOT_CLEANUP + \ DOXYGEN_DOT_FONTNAME + \ DOXYGEN_DOT_FONTPATH + \ DOXYGEN_DOT_FONTSIZE + \ DOXYGEN_DOT_GRAPH_MAX_NODES + \ DOXYGEN_DOT_IMAGE_FORMAT + \ DOXYGEN_DOT_MULTI_TARGETS + \ DOXYGEN_DOT_NUM_THREADS + \ DOXYGEN_DOT_PATH + \ DOXYGEN_DOT_TRANSPARENT + \ DOXYGEN_DOXYFILE_ENCODING + \ DOXYGEN_ECLIPSE_DOC_ID + \ DOXYGEN_ENABLED_SECTIONS + \ DOXYGEN_ENABLE_PREPROCESSING + \ DOXYGEN_ENUM_VALUES_PER_LINE + \ DOXYGEN_EXAMPLE_PATH + \ DOXYGEN_EXAMPLE_PATTERNS + \ DOXYGEN_EXAMPLE_RECURSIVE + \ DOXYGEN_EXCLUDE + \ DOXYGEN_EXCLUDE_PATTERNS + \ DOXYGEN_EXCLUDE_SYMBOLS + \ DOXYGEN_EXCLUDE_SYMLINKS + \ DOXYGEN_EXPAND_AS_DEFINED + \ DOXYGEN_EXPAND_ONLY_PREDEF + \ DOXYGEN_EXTENSION_MAPPING + \ DOXYGEN_EXTERNAL_GROUPS + \ DOXYGEN_EXTERNAL_PAGES + \ DOXYGEN_EXTERNAL_SEARCH + \ DOXYGEN_EXTERNAL_SEARCH_ID + \ DOXYGEN_EXTRACT_ALL + \ DOXYGEN_EXTRACT_ANON_NSPACES + \ DOXYGEN_EXTRACT_LOCAL_CLASSES + \ DOXYGEN_EXTRACT_LOCAL_METHODS + \ DOXYGEN_EXTRACT_PACKAGE + \ DOXYGEN_EXTRACT_PRIVATE + \ DOXYGEN_EXTRACT_PRIV_VIRTUAL + \ DOXYGEN_EXTRACT_STATIC + \ DOXYGEN_EXTRA_PACKAGES + \ DOXYGEN_EXTRA_SEARCH_MAPPINGS + \ DOXYGEN_EXT_LINKS_IN_WINDOW + \ DOXYGEN_FILE_PATTERNS + \ DOXYGEN_FILE_VERSION_FILTER + \ DOXYGEN_FILTER_PATTERNS + \ DOXYGEN_FILTER_SOURCE_FILES + \ DOXYGEN_FILTER_SOURCE_PATTERNS + \ DOXYGEN_FORCE_LOCAL_INCLUDES + \ DOXYGEN_FORMULA_FONTSIZE + \ DOXYGEN_FORMULA_TRANSPARENT + \ DOXYGEN_FULL_PATH_NAMES + \ DOXYGEN_GENERATE_AUTOGEN_DEF + \ DOXYGEN_GENERATE_BUGLIST + \ DOXYGEN_GENERATE_CHI + \ DOXYGEN_GENERATE_DEPRECATEDLIST + \ DOXYGEN_GENERATE_DOCBOOK + \ DOXYGEN_GENERATE_DOCSET + \ DOXYGEN_GENERATE_ECLIPSEHELP + \ DOXYGEN_GENERATE_HTML + \ DOXYGEN_GENERATE_HTMLHELP + \ DOXYGEN_GENERATE_LATEX + \ DOXYGEN_GENERATE_LEGEND + \ DOXYGEN_GENERATE_MAN + \ DOXYGEN_GENERATE_PERLMOD + \ DOXYGEN_GENERATE_QHP + \ DOXYGEN_GENERATE_RTF + \ DOXYGEN_GENERATE_TAGFILE + \ DOXYGEN_GENERATE_TESTLIST + \ DOXYGEN_GENERATE_TODOLIST + \ DOXYGEN_GENERATE_TREEVIEW + \ DOXYGEN_GENERATE_XML + \ DOXYGEN_GRAPHICAL_HIERARCHY + \ DOXYGEN_GROUP_GRAPHS + \ DOXYGEN_GROUP_NESTED_COMPOUNDS + \ DOXYGEN_HAVE_DOT + \ DOXYGEN_HHC_LOCATION + \ DOXYGEN_HIDE_COMPOUND_REFERENCE + \ DOXYGEN_HIDE_FRIEND_COMPOUNDS + \ DOXYGEN_HIDE_IN_BODY_DOCS + \ DOXYGEN_HIDE_SCOPE_NAMES + \ DOXYGEN_HIDE_UNDOC_CLASSES + \ DOXYGEN_HIDE_UNDOC_MEMBERS + \ DOXYGEN_HIDE_UNDOC_RELATIONS + \ DOXYGEN_HTML_COLORSTYLE_GAMMA + \ DOXYGEN_HTML_COLORSTYLE_HUE + \ DOXYGEN_HTML_COLORSTYLE_SAT + \ DOXYGEN_HTML_DYNAMIC_MENUS + \ DOXYGEN_HTML_DYNAMIC_SECTIONS + \ DOXYGEN_HTML_EXTRA_FILES + \ DOXYGEN_HTML_EXTRA_STYLESHEET + \ DOXYGEN_HTML_FILE_EXTENSION + \ DOXYGEN_HTML_FOOTER + \ DOXYGEN_HTML_HEADER + \ DOXYGEN_HTML_INDEX_NUM_ENTRIES + \ DOXYGEN_HTML_OUTPUT + \ DOXYGEN_HTML_STYLESHEET + \ DOXYGEN_HTML_TIMESTAMP + \ DOXYGEN_IDL_PROPERTY_SUPPORT + \ DOXYGEN_IGNORE_PREFIX + \ DOXYGEN_IMAGE_PATH + \ DOXYGEN_INCLUDED_BY_GRAPH + \ DOXYGEN_INCLUDE_FILE_PATTERNS + \ DOXYGEN_INCLUDE_GRAPH + \ DOXYGEN_INCLUDE_PATH + \ DOXYGEN_INHERIT_DOCS + \ DOXYGEN_INLINE_GROUPED_CLASSES + \ DOXYGEN_INLINE_INFO + \ DOXYGEN_INLINE_INHERITED_MEMB + \ DOXYGEN_INLINE_SIMPLE_STRUCTS + \ DOXYGEN_INLINE_SOURCES + \ DOXYGEN_INPUT + \ DOXYGEN_INPUT_ENCODING + \ DOXYGEN_INPUT_FILTER + \ DOXYGEN_INTERACTIVE_SVG + \ DOXYGEN_INTERNAL_DOCS + \ DOXYGEN_JAVADOC_AUTOBRIEF + \ DOXYGEN_JAVADOC_BANNER + \ DOXYGEN_LATEX_BATCHMODE + \ DOXYGEN_LATEX_BIB_STYLE + \ DOXYGEN_LATEX_CMD_NAME + \ DOXYGEN_LATEX_EMOJI_DIRECTORY + \ DOXYGEN_LATEX_EXTRA_FILES + \ DOXYGEN_LATEX_EXTRA_STYLESHEET + \ DOXYGEN_LATEX_FOOTER + \ DOXYGEN_LATEX_HEADER + \ DOXYGEN_LATEX_HIDE_INDICES + \ DOXYGEN_LATEX_MAKEINDEX_CMD + \ DOXYGEN_LATEX_OUTPUT + \ DOXYGEN_LATEX_SOURCE_CODE + \ DOXYGEN_LATEX_TIMESTAMP + \ DOXYGEN_LAYOUT_FILE + \ DOXYGEN_LOOKUP_CACHE_SIZE + \ DOXYGEN_MACRO_EXPANSION + \ DOXYGEN_MAKEINDEX_CMD_NAME + \ DOXYGEN_MAN_EXTENSION + \ DOXYGEN_MAN_LINKS + \ DOXYGEN_MAN_OUTPUT + \ DOXYGEN_MAN_SUBDIR + \ DOXYGEN_MARKDOWN_SUPPORT + \ DOXYGEN_MATHJAX_CODEFILE + \ DOXYGEN_MATHJAX_EXTENSIONS + \ DOXYGEN_MATHJAX_FORMAT + \ DOXYGEN_MATHJAX_RELPATH + \ DOXYGEN_MAX_DOT_GRAPH_DEPTH + \ DOXYGEN_MAX_INITIALIZER_LINES + \ DOXYGEN_MSCFILE_DIRS + \ DOXYGEN_MULTILINE_CPP_IS_BRIEF + \ DOXYGEN_OPTIMIZE_FOR_FORTRAN + \ DOXYGEN_OPTIMIZE_OUTPUT_FOR_C + \ DOXYGEN_OPTIMIZE_OUTPUT_JAVA + \ DOXYGEN_OPTIMIZE_OUTPUT_SLICE + \ DOXYGEN_OPTIMIZE_OUTPUT_VHDL + \ DOXYGEN_OUTPUT_DIRECTORY + \ DOXYGEN_OUTPUT_LANGUAGE + \ DOXYGEN_OUTPUT_TEXT_DIRECTION + \ DOXYGEN_PAPER_TYPE + \ DOXYGEN_PDF_HYPERLINKS + \ DOXYGEN_PERLMOD_LATEX + \ DOXYGEN_PERLMOD_MAKEVAR_PREFIX + \ DOXYGEN_PERLMOD_PRETTY + \ DOXYGEN_PLANTUML_CFG_FILE + \ DOXYGEN_PLANTUML_INCLUDE_PATH + \ DOXYGEN_PLANTUML_JAR_PATH + \ DOXYGEN_PREDEFINED + \ DOXYGEN_PROJECT_BRIEF + \ DOXYGEN_PROJECT_LOGO + \ DOXYGEN_PROJECT_NAME + \ DOXYGEN_PROJECT_NUMBER + \ DOXYGEN_QCH_FILE + \ DOXYGEN_QHG_LOCATION + \ DOXYGEN_QHP_CUST_FILTER_ATTRS + \ DOXYGEN_QHP_CUST_FILTER_NAME + \ DOXYGEN_QHP_NAMESPACE + \ DOXYGEN_QHP_SECT_FILTER_ATTRS + \ DOXYGEN_QHP_VIRTUAL_FOLDER + \ DOXYGEN_QT_AUTOBRIEF + \ DOXYGEN_QUIET + \ DOXYGEN_RECURSIVE + \ DOXYGEN_REFERENCED_BY_RELATION + \ DOXYGEN_REFERENCES_LINK_SOURCE + \ DOXYGEN_REFERENCES_RELATION + \ DOXYGEN_REPEAT_BRIEF + \ DOXYGEN_RTF_EXTENSIONS_FILE + \ DOXYGEN_RTF_HYPERLINKS + \ DOXYGEN_RTF_OUTPUT + \ DOXYGEN_RTF_SOURCE_CODE + \ DOXYGEN_RTF_STYLESHEET_FILE + \ DOXYGEN_SEARCHDATA_FILE + \ DOXYGEN_SEARCHENGINE + \ DOXYGEN_SEARCHENGINE_URL + \ DOXYGEN_SEARCH_INCLUDES + \ DOXYGEN_SEPARATE_MEMBER_PAGES + \ DOXYGEN_SERVER_BASED_SEARCH + \ DOXYGEN_SHORT_NAMES + \ DOXYGEN_SHOW_FILES + \ DOXYGEN_SHOW_GROUPED_MEMB_INC + \ DOXYGEN_SHOW_INCLUDE_FILES + \ DOXYGEN_SHOW_NAMESPACES + \ DOXYGEN_SHOW_USED_FILES + \ DOXYGEN_SIP_SUPPORT + \ DOXYGEN_SKIP_FUNCTION_MACROS + \ DOXYGEN_SORT_BRIEF_DOCS + \ DOXYGEN_SORT_BY_SCOPE_NAME + \ DOXYGEN_SORT_GROUP_NAMES + \ DOXYGEN_SORT_MEMBERS_CTORS_1ST + \ DOXYGEN_SORT_MEMBER_DOCS + \ DOXYGEN_SOURCE_BROWSER + \ DOXYGEN_SOURCE_TOOLTIPS + \ DOXYGEN_STRICT_PROTO_MATCHING + \ DOXYGEN_STRIP_CODE_COMMENTS + \ DOXYGEN_STRIP_FROM_INC_PATH + \ DOXYGEN_STRIP_FROM_PATH + \ DOXYGEN_SUBGROUPING + \ DOXYGEN_TAB_SIZE + \ DOXYGEN_TAGFILES + \ DOXYGEN_TCL_SUBST + \ DOXYGEN_TEMPLATE_RELATIONS + \ DOXYGEN_TOC_EXPAND + \ DOXYGEN_TOC_INCLUDE_HEADINGS + \ DOXYGEN_TREEVIEW_WIDTH + \ DOXYGEN_TYPEDEF_HIDES_STRUCT + \ DOXYGEN_UML_LIMIT_NUM_FIELDS + \ DOXYGEN_UML_LOOK + \ DOXYGEN_USE_HTAGS + \ DOXYGEN_USE_MATHJAX + \ DOXYGEN_USE_MDFILE_AS_MAINPAGE + \ DOXYGEN_USE_PDFLATEX + \ DOXYGEN_VERBATIM_HEADERS + \ DOXYGEN_VERBATIM_VARS + \ DOXYGEN_VERSION + \ DOXYGEN_WARNINGS + \ DOXYGEN_WARN_AS_ERROR + \ DOXYGEN_WARN_FORMAT + \ DOXYGEN_WARN_IF_DOC_ERROR + \ DOXYGEN_WARN_IF_UNDOCUMENTED + \ DOXYGEN_WARN_LOGFILE + \ DOXYGEN_WARN_NO_PARAMDOC + \ DOXYGEN_XML_NS_MEMB_FILE_SCOPE + \ DOXYGEN_XML_OUTPUT + \ DOXYGEN_XML_PROGRAMLISTING \ ENV \ EXECUTABLE_OUTPUT_PATH \ GHS-MULTI @@ -1541,9 +1940,11 @@ syn keyword cmakeKWExternalProject contained \ BUILD_BYPRODUCTS \ BUILD_COMMAND \ BUILD_IN_SOURCE + \ CHECKOUT \ CMAKE_ARGS \ CMAKE_CACHE_ARGS \ CMAKE_CACHE_DEFAULT_ARGS + \ CMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY \ CMAKE_TLS_CAINFO \ CMAKE_TLS_VERIFY \ COMMENT @@ -1568,14 +1969,17 @@ syn keyword cmakeKWExternalProject contained \ EP_STEP_TARGETS \ EP_UPDATE_DISCONNECTED \ EXCLUDE_FROM_ALL + \ FALSE \ FORCE \ GHS \ GIT_CONFIG \ GIT_PROGRESS \ GIT_REMOTE_NAME + \ GIT_REMOTE_UPDATE_STRATEGY \ GIT_REPOSITORY \ GIT_SHALLOW \ GIT_SUBMODULES + \ GIT_SUBMODULES_RECURSE \ GIT_TAG \ HG_REPOSITORY \ HG_TAG @@ -1583,6 +1987,7 @@ syn keyword cmakeKWExternalProject contained \ HTTP_PASSWORD \ HTTP_USERNAME \ IGNORED + \ INACTIVITY_TIMEOUT \ INDEPENDENT_STEP_TARGETS \ INSTALL_COMMAND \ INSTALL_DIR @@ -1609,6 +2014,8 @@ syn keyword cmakeKWExternalProject contained \ PATCH_COMMAND \ PREFIX \ PROPERTY + \ REBASE + \ REBASE_CHECKOUT \ REQUIRED \ SOURCE_DIR \ SOURCE_SUBDIR @@ -1671,12 +2078,16 @@ syn keyword cmakeKWadd_custom_command contained \ MAIN_DEPENDENCY \ NOT \ OUTPUT + \ PATH \ POST_BUILD \ PRE_BUILD \ PRE_LINK \ SYMBOLIC \ TARGET_FILE + \ TARGET_LINKER_FILE + \ TARGET_PDB_FILE \ TARGET_PROPERTY + \ TARGET_SONAME_FILE \ USES_TERMINAL \ VERBATIM \ WORKING_DIRECTORY @@ -1695,8 +2106,13 @@ syn keyword cmakeKWadd_custom_target contained \ JOB_POOL \ JOB_POOLS \ JOIN + \ PATH \ SOURCES + \ TARGET_FILE + \ TARGET_LINKER_FILE + \ TARGET_PDB_FILE \ TARGET_PROPERTY + \ TARGET_SONAME_FILE \ USES_TERMINAL \ VERBATIM \ WORKING_DIRECTORY @@ -1710,6 +2126,7 @@ syn keyword cmakeKWadd_dependencies contained syn keyword cmakeKWadd_executable contained \ ALIAS + \ ALIAS_GLOBAL \ CONFIG \ EXCLUDE_FROM_ALL \ GLOBAL @@ -1725,6 +2142,7 @@ syn keyword cmakeKWadd_executable contained syn keyword cmakeKWadd_library contained \ ALIAS + \ ALIAS_GLOBAL \ ARCHIVE_OUTPUT_DIRECTORY \ CLI \ CONFIG @@ -1735,11 +2153,15 @@ syn keyword cmakeKWadd_library contained \ HEADER_FILE_ONLY \ IMPORTED \ IMPORTED_ + \ IMPORTED_IMPLIB + \ IMPORTED_IMPLIB_ \ IMPORTED_LOCATION \ IMPORTED_LOCATION_ \ IMPORTED_OBJECTS \ IMPORTED_OBJECTS_ + \ INTERFACE \ INTERFACE_ + \ INTERFACE_SOURCES \ LIBRARY_OUTPUT_DIRECTORY \ MODULE \ OBJECT @@ -1749,17 +2171,23 @@ syn keyword cmakeKWadd_library contained \ POST_BUILD \ PRE_BUILD \ PRE_LINK - \ PUBLIC_HEADER + \ PRIVATE + \ PUBLIC \ RUNTIME_OUTPUT_DIRECTORY \ SHARED + \ SOURCES \ STATIC \ TARGET_OBJECTS \ UNKNOWN syn keyword cmakeKWadd_link_options contained \ CMAKE_ + \ CUDA_RESOLVE_DEVICE_SYMBOLS + \ CUDA_SEPARABLE_COMPILATION + \ DEVICE_LINK \ GCC \ GNU + \ HOST_LINK \ LANG \ LINKER \ LINK_OPTIONS @@ -1775,6 +2203,7 @@ syn keyword cmakeKWadd_subdirectory contained syn keyword cmakeKWadd_test contained \ BUILD_TESTING \ COMMAND + \ COMMAND_EXPAND_LISTS \ CONFIGURATIONS \ FAIL_REGULAR_EXPRESSION \ NAME @@ -1816,6 +2245,23 @@ syn keyword cmakeKWcmake_host_system_information contained \ TOTAL_PHYSICAL_MEMORY \ TOTAL_VIRTUAL_MEMORY +syn keyword cmakeKWcmake_language contained + \ AND + \ CALL + \ CANCEL_CALL + \ CODE + \ DEFER + \ DIRECTORY + \ EVAL + \ FALSE + \ GET_CALL_IDS + \ ID + \ ID_VAR + \ OR + \ STATUS + \ TRUE + \ WRITE + syn keyword cmakeKWcmake_minimum_required contained \ FATAL_ERROR \ VERSION @@ -1845,6 +2291,72 @@ syn keyword cmakeKWcmake_parse_arguments contained \ _KEYWORDS_MISSING_VALUES \ _UNPARSED_ARGUMENTS +syn keyword cmakeKWcmake_path contained + \ ABSOLUTE_PATH + \ AND + \ APPEND + \ BASE_DIRECTORY + \ CMAKE_PATH + \ COMPARE + \ CONCAT + \ CONVERT + \ ELSEIF + \ ENDIF + \ EXTENSION + \ EXTENSION_DEF + \ FALSE + \ FILENAME_DEF + \ GET + \ GET_EXTENSION + \ GET_FILENAME + \ GET_PARENT_PATH + \ GET_RELATIVE_PATH + \ GET_ROOT_DIRECTORY + \ GET_ROOT_NAME + \ GET_ROOT_PATH + \ GET_STEM + \ HASH + \ HAS_EXTENSION + \ HAS_FILENAME + \ HAS_PARENT_PATH + \ HAS_RELATIVE_PATH + \ HAS_ROOT_DIRECTORY + \ HAS_ROOT_NAME + \ HAS_ROOT_PATH + \ HAS_STEM + \ IF + \ IS_ABSOLUTE + \ IS_PREFIX + \ IS_RELATIVE + \ LAST_ONLY + \ MATCHES + \ NATIVE_PATH + \ NORMALIZE + \ NORMAL_PATH + \ NOT + \ NOT_EQUAL + \ OP + \ OS + \ OUTPUT_VARIABLE + \ PARENT_PATH + \ PROXIMATE_PATH + \ REAL_PATH + \ RELATIVE_PATH + \ REMOVE_EXTENSION + \ REMOVE_FILENAME + \ REPLACE_EXTENSION + \ REPLACE_FILENAME + \ RETURN + \ ROOT_DIRECTORY + \ ROOT_NAME + \ ROOT_PATH + \ STEM + \ STREQUAL + \ TO_CMAKE_PATH_LIST + \ TO_NATIVE_PATH_LIST + \ TRUE + \ XOR + syn keyword cmakeKWcmake_policy contained \ CMAKE_POLICY_DEFAULT_CMP \ CMP @@ -1862,10 +2374,13 @@ syn keyword cmakeKWconfigure_file contained \ CRLF \ DOS \ ESCAPE_QUOTES + \ FILE_PERMISSIONS \ FOO_ENABLE \ FOO_STRING \ LF \ NEWLINE_STYLE + \ NO_SOURCE_PERMISSIONS + \ USE_SOURCE_PERMISSIONS \ VAR syn keyword cmakeKWcreate_test_sourcelist contained @@ -1935,6 +2450,7 @@ syn keyword cmakeKWctest_run_script contained syn keyword cmakeKWctest_start contained \ APPEND + \ GROUP \ QUIET \ TAG \ TRACK @@ -1957,6 +2473,7 @@ syn keyword cmakeKWctest_submit contained \ SUBMIT_URL syn keyword cmakeKWctest_test contained + \ AFTER_TIMEOUT \ APPEND \ BUILD \ CAPTURE_CMAKE_ERROR @@ -1972,12 +2489,17 @@ syn keyword cmakeKWctest_test contained \ ON \ PARALLEL_LEVEL \ QUIET + \ REPEAT + \ RESOURCE_SPEC_FILE \ RETURN_VALUE \ SCHEDULE_RANDOM \ START + \ STOP_ON_FAILURE \ STOP_TIME \ STRIDE \ TEST_LOAD + \ UNTIL_FAIL + \ UNTIL_PASS syn keyword cmakeKWctest_update contained \ CAPTURE_CMAKE_ERROR @@ -2005,9 +2527,18 @@ syn keyword cmakeKWdefine_property contained \ TEST \ VARIABLE +syn keyword cmakeKWdoxygen_add_docs contained + \ ALL + \ COMMENT + \ USE_STAMP_FILE + \ WORKING_DIRECTORY + syn keyword cmakeKWenable_language contained \ ASM \ CUDA + \ ISPC + \ OBJC + \ OBJCXX \ OPTIONAL syn keyword cmakeKWenable_testing contained @@ -2020,15 +2551,20 @@ syn keyword cmakeKWexec_program contained syn keyword cmakeKWexecute_process contained \ ANSI + \ ANY \ AUTO \ COMMAND \ COMMAND_ECHO + \ COMMAND_ERROR_IS_FATAL + \ ECHO_ERROR_VARIABLE + \ ECHO_OUTPUT_VARIABLE \ ENCODING \ ERROR_FILE \ ERROR_QUIET \ ERROR_STRIP_TRAILING_WHITESPACE \ ERROR_VARIABLE \ INPUT_FILE + \ LAST \ NONE \ OEM \ OUTPUT_FILE @@ -2070,63 +2606,107 @@ syn keyword cmakeKWexport_library_dependencies contained syn keyword cmakeKWfile contained \ ALGO \ APPEND + \ ARCHIVE_CREATE + \ ARCHIVE_EXTRACT \ ASCII + \ BASE_DIRECTORY + \ BUNDLE_EXECUTABLE + \ CHMOD + \ CHMOD_RECURSE + \ CMAKE_GET_RUNTIME_DEPENDENCIES_COMMAND + \ CMAKE_GET_RUNTIME_DEPENDENCIES_PLATFORM + \ CMAKE_GET_RUNTIME_DEPENDENCIES_TOOL + \ CMAKE_OBJDUMP \ CMAKE_TLS_CAINFO \ CMAKE_TLS_VERIFY + \ CODE + \ COMPILE_FEATURES + \ COMPRESSION + \ COMPRESSION_LEVEL \ CONDITION - \ CONFIG + \ CONFIGURE \ CONFIGURE_DEPENDS + \ CONFLICTING_DEPENDENCIES_PREFIX \ CONTENT + \ CONVERT \ COPY \ COPY_ON_ERROR \ CREATE_LINK + \ CRLF \ DESTINATION + \ DIRECTORIES \ DIRECTORY_PERMISSIONS + \ DLL + \ DOS \ DOWNLOAD \ ENCODING - \ EXCLUDE + \ ESCAPE_QUOTES + \ EXECUTABLES \ EXPECTED_HASH \ FILES_MATCHING \ FILE_PERMISSIONS \ FOLLOW_SYMLINKS \ FOLLOW_SYMLINK_CHAIN + \ FORMAT \ FUNCTION \ GENERATE + \ GET_RUNTIME_DEPENDENCIES \ GLOB \ GLOB_RECURSE + \ GROUP_EXECUTE + \ GROUP_READ + \ GROUP_WRITE \ GUARD \ HASH \ HEX \ HTTPHEADER \ IGNORED \ INACTIVITY_TIMEOUT + \ INPUT \ INSTALL \ IS_ABSOLUTE \ LENGTH_MAXIMUM \ LENGTH_MINIMUM \ LF + \ LIBRARIES \ LIMIT \ LIMIT_COUNT \ LIMIT_INPUT \ LIMIT_OUTPUT \ LIST_DIRECTORIES + \ LIST_ONLY \ LOCK \ LOG \ MAKE_DIRECTORY + \ MODULES + \ MTIME + \ MYLIBRARY \ NETRC \ NETRC_FILE \ NEWLINE_CONSUME + \ NEWLINE_STYLE \ NOT \ NO_HEX_CONVERSION \ NO_SOURCE_PERMISSIONS \ OFFSET - \ OLD + \ ONLY \ OPTIONAL \ OUTPUT + \ OWNER_EXECUTE + \ OWNER_READ + \ OWNER_WRITE + \ PATHS \ PATTERN + \ PATTERNS + \ PERMISSIONS + \ POST_EXCLUDE_REGEXES + \ POST_INCLUDE_REGEXES + \ PRE_EXCLUDE_REGEXES + \ PRE_INCLUDE_REGEXES \ PROCESS \ READ \ READ_SYMLINK + \ REAL_PATH \ REGEX \ RELATIVE_PATH \ RELEASE @@ -2134,33 +2714,51 @@ syn keyword cmakeKWfile contained \ REMOVE_RECURSE \ RENAME \ REQUIRED + \ RESOLVED_DEPENDENCIES_VAR \ RESULT \ RESULT_VARIABLE + \ RPATH + \ RUNPATH + \ SCRIPT + \ SHARED \ SHOW_PROGRESS \ SIZE \ SSL + \ STATIC \ STATUS \ STRINGS \ SYMBOLIC + \ TARGET + \ TARGET_PROPERTY \ TIMESTAMP \ TLS_CAINFO \ TLS_VERIFY \ TOUCH \ TOUCH_NOCREATE \ TO_CMAKE_PATH + \ TO_CMAKE_PATH_LIST \ TO_NATIVE_PATH + \ TO_NATIVE_PATH_LIST + \ UNRESOLVED_DEPENDENCIES_VAR \ UPLOAD \ URL \ USERPWD \ USE_SOURCE_PERMISSIONS \ UTC \ UTF + \ VERBOSE + \ WORLD_EXECUTE + \ WORLD_READ + \ WORLD_WRITE \ WRITE + \ XZ + \ _FILENAMES syn keyword cmakeKWfind_file contained \ CMAKE_FIND_ROOT_PATH_BOTH \ DOC \ DVAR + \ FALSE \ HINTS \ INCLUDE \ NAMES @@ -2174,14 +2772,16 @@ syn keyword cmakeKWfind_file contained \ ONLY_CMAKE_FIND_ROOT_PATH \ PATHS \ PATH_SUFFIXES + \ REQUIRED \ VAR syn keyword cmakeKWfind_library contained \ CMAKE_FIND_ROOT_PATH_BOTH \ DOC \ DVAR + \ FALSE \ HINTS - \ LIB + \ INCLUDE \ NAMES \ NAMES_PER_DIR \ NO_CMAKE_ENVIRONMENT_PATH @@ -2194,6 +2794,7 @@ syn keyword cmakeKWfind_library contained \ ONLY_CMAKE_FIND_ROOT_PATH \ PATHS \ PATH_SUFFIXES + \ REQUIRED \ VAR syn keyword cmakeKWfind_package contained @@ -2207,8 +2808,12 @@ syn keyword cmakeKWfind_package contained \ DEC \ DVAR \ EXACT + \ EXCLUDE + \ FALSE + \ FIND_PACKAGE_VERSION_FORMAT \ FRAMEWORK \ HINTS + \ INCLUDE \ MODULE \ NAMES \ NATURAL @@ -2228,12 +2833,26 @@ syn keyword cmakeKWfind_package contained \ OPTIONAL_COMPONENTS \ PACKAGE_FIND_NAME \ PACKAGE_FIND_VERSION + \ PACKAGE_FIND_VERSION_COMPLETE \ PACKAGE_FIND_VERSION_COUNT \ PACKAGE_FIND_VERSION_MAJOR + \ PACKAGE_FIND_VERSION_MAX + \ PACKAGE_FIND_VERSION_MAX_COUNT + \ PACKAGE_FIND_VERSION_MAX_MAJOR + \ PACKAGE_FIND_VERSION_MAX_MINOR + \ PACKAGE_FIND_VERSION_MAX_PATCH + \ PACKAGE_FIND_VERSION_MAX_TWEAK \ PACKAGE_FIND_VERSION_MINOR + \ PACKAGE_FIND_VERSION_MIN_COUNT + \ PACKAGE_FIND_VERSION_MIN_MAJOR + \ PACKAGE_FIND_VERSION_MIN_MINOR + \ PACKAGE_FIND_VERSION_MIN_PATCH + \ PACKAGE_FIND_VERSION_MIN_TWEAK \ PACKAGE_FIND_VERSION_PATCH + \ PACKAGE_FIND_VERSION_RANGE + \ PACKAGE_FIND_VERSION_RANGE_MAX + \ PACKAGE_FIND_VERSION_RANGE_MIN \ PACKAGE_FIND_VERSION_TWEAK - \ PACKAGE_VERSION \ PACKAGE_VERSION_COMPATIBLE \ PACKAGE_VERSION_EXACT \ PACKAGE_VERSION_UNSUITABLE @@ -2258,6 +2877,7 @@ syn keyword cmakeKWfind_path contained \ CMAKE_FIND_ROOT_PATH_BOTH \ DOC \ DVAR + \ FALSE \ HINTS \ INCLUDE \ NAMES @@ -2271,12 +2891,14 @@ syn keyword cmakeKWfind_path contained \ ONLY_CMAKE_FIND_ROOT_PATH \ PATHS \ PATH_SUFFIXES + \ REQUIRED \ VAR syn keyword cmakeKWfind_program contained \ CMAKE_FIND_ROOT_PATH_BOTH \ DOC \ DVAR + \ FALSE \ HINTS \ NAMES \ NAMES_PER_DIR @@ -2290,22 +2912,26 @@ syn keyword cmakeKWfind_program contained \ ONLY_CMAKE_FIND_ROOT_PATH \ PATHS \ PATH_SUFFIXES + \ REQUIRED \ VAR syn keyword cmakeKWfltk_wrap_ui contained \ FLTK syn keyword cmakeKWforeach contained + \ APPEND \ IN \ ITEMS \ LISTS \ RANGE \ STATUS + \ ZIP_LISTS syn keyword cmakeKWfunction contained \ ARGC \ ARGN \ ARGV + \ CALL \ FOO \ PARENT_SCOPE @@ -2333,6 +2959,7 @@ syn keyword cmakeKWget_filename_component contained \ PROGRAM \ PROGRAM_ARGS \ REALPATH + \ REAL_PATH syn keyword cmakeKWget_property contained \ BRIEF_DOCS @@ -2345,13 +2972,15 @@ syn keyword cmakeKWget_property contained \ SET \ SOURCE \ TARGET + \ TARGET_DIRECTORY \ TEST \ VARIABLE syn keyword cmakeKWget_source_file_property contained + \ DIRECTORY \ INHERITED \ LOCATION - \ VAR + \ TARGET_DIRECTORY syn keyword cmakeKWget_target_property contained \ INHERITED @@ -2427,6 +3056,7 @@ syn keyword cmakeKWinclude_guard contained syn keyword cmakeKWinstall contained \ AFTER + \ AIX \ APT \ ARCHIVE \ BEFORE @@ -2460,6 +3090,7 @@ syn keyword cmakeKWinstall contained \ DIRECTORY_PERMISSIONS \ DLL \ DOC + \ ENABLE_EXPORTS \ EXCLUDE_FROM_ALL \ EXPORT \ EXPORT_ANDROID_MK @@ -2565,6 +3196,7 @@ syn keyword cmakeKWlist contained \ INTERNAL \ JOIN \ LENGTH + \ NATURAL \ ORDER \ OUTPUT_VARIABLE \ PARENT_SCOPE @@ -2600,6 +3232,7 @@ syn keyword cmakeKWmacro contained \ ARGC \ ARGN \ ARGV + \ CALL \ DEFINED \ FOO \ GREATER @@ -2616,12 +3249,18 @@ syn keyword cmakeKWmath contained \ OUTPUT_FORMAT syn keyword cmakeKWmessage contained + \ APPEND \ AUTHOR_WARNING + \ CHECK_ + \ CHECK_FAIL + \ CHECK_PASS + \ CHECK_START \ DEBUG \ DEPRECATION \ FATAL_ERROR \ GUI \ NOTICE + \ POP_BACK \ SEND_ERROR \ STATUS \ TRACE @@ -2638,15 +3277,18 @@ syn keyword cmakeKWproject contained \ CUDA \ DESCRIPTION \ HOMEPAGE_URL + \ ISPC \ LANGUAGES \ NAME \ NONE + \ OBJC + \ OBJCXX \ PROJECT \ VERSION \ _BINARY_DIR \ _DESCRIPTION \ _HOMEPAGE_URL - \ _INCLUDE + \ _INCLUDE_BEFORE \ _SOURCE_DIR \ _VERSION \ _VERSION_MAJOR @@ -2664,9 +3306,14 @@ syn keyword cmakeKWremove contained \ VALUE \ VAR +syn keyword cmakeKWreturn contained + \ DEFER + syn keyword cmakeKWseparate_arguments contained \ MSDN \ NATIVE_COMMAND + \ PROGRAM + \ SEPARATE_ARGS \ UNIX_COMMAND \ WINDOWS_COMMAND @@ -2695,12 +3342,15 @@ syn keyword cmakeKWset_property contained \ PROPERTY \ SOURCE \ TARGET + \ TARGET_DIRECTORY \ TEST \ WIX syn keyword cmakeKWset_source_files_properties contained + \ DIRECTORY \ PROPERTIES \ SOURCE + \ TARGET_DIRECTORY syn keyword cmakeKWset_target_properties contained \ PROPERTIES @@ -2710,6 +3360,9 @@ syn keyword cmakeKWset_tests_properties contained \ PROPERTIES \ TEST +syn keyword cmakeKWsite_name contained + \ HOSTNAME + syn keyword cmakeKWsource_group contained \ FILES \ PREFIX @@ -2719,20 +3372,27 @@ syn keyword cmakeKWsource_group contained syn keyword cmakeKWstring contained \ ALPHABET \ APPEND + \ ARRAY \ ASCII + \ BOOLEAN \ CMAKE_MATCH_ \ COMPARE \ CONCAT \ CONFIGURE \ EQUAL + \ ERROR_VARIABLE \ ESCAPE_QUOTES \ FIND \ GENEX_STRIP + \ GET \ GREATER \ GREATER_EQUAL \ GUID \ HASH + \ HEX \ JOIN + \ JSON + \ JSONLENGTH \ LENGTH \ LESS \ LESS_EQUAL @@ -2740,17 +3400,24 @@ syn keyword cmakeKWstring contained \ MATCH \ MATCHALL \ MATCHES + \ MEMBER \ NAMESPACE \ NOTEQUAL + \ NULL + \ NUMBER + \ OBJECT + \ OFF \ ONLY \ PREPEND \ RANDOM \ RANDOM_SEED \ REGEX + \ REMOVE \ REPEAT \ REPLACE \ REVERSE \ RFC + \ SET \ SHA \ SOURCE_DATE_EPOCH \ STRIP @@ -2853,8 +3520,12 @@ syn keyword cmakeKWtarget_link_options contained \ ALIAS \ BEFORE \ CMAKE_ + \ CUDA_RESOLVE_DEVICE_SYMBOLS + \ CUDA_SEPARABLE_COMPILATION + \ DEVICE_LINK \ GCC \ GNU + \ HOST_LINK \ IMPORTED \ INTERFACE \ INTERFACE_LINK_OPTIONS @@ -2870,9 +3541,23 @@ syn keyword cmakeKWtarget_link_options contained \ _LINKER_WRAPPER_FLAG_SEP syn keyword cmakeKWtarget_precompile_headers contained + \ ALIAS + \ ANGLE + \ BUILD_INTERFACE + \ COMPILE_LANGUAGE + \ DISABLE_PRECOMPILE_HEADERS + \ EXPORT + \ FI + \ GCC + \ IMPORTED \ INTERFACE + \ INTERFACE_PRECOMPILE_HEADERS + \ PRECOMPILE_HEADERS + \ PRECOMPILE_HEADERS_REUSE_FROM \ PRIVATE \ PUBLIC + \ REUSE_FROM + \ SKIP_PRECOMPILE_HEADERS syn keyword cmakeKWtarget_sources contained \ ALIAS @@ -2911,6 +3596,12 @@ syn keyword cmakeKWtry_compile contained \ LINK_OPTIONS \ MULTI \ NOT + \ OBJCXX_EXTENSIONS + \ OBJCXX_STANDARD + \ OBJCXX_STANDARD_REQUIRED + \ OBJC_EXTENSIONS + \ OBJC_STANDARD + \ OBJC_STANDARD_REQUIRED \ OUTPUT_VARIABLE \ PRIVATE \ SOURCES @@ -2956,7 +3647,14 @@ syn keyword cmakeKWvariable_requires contained \ TEST_VARIABLE syn keyword cmakeKWvariable_watch contained + \ APPEND \ COMMAND + \ DEFINED + \ MODIFIED_ACCESS + \ READ_ACCESS + \ REMOVED_ACCESS + \ UNKNOWN_MODIFIED_ACCESS + \ UNKNOWN_READ_ACCESS syn keyword cmakeKWwrite_file contained \ APPEND @@ -2988,39 +3686,49 @@ syn keyword cmakeGeneratorExpressions contained \ CONFIGURATION \ CUDA_COMPILER_ID \ CUDA_COMPILER_VERSION + \ CUDA_RESOLVE_DEVICE_SYMBOLS + \ CUDA_SEPARABLE_COMPILATION \ CUSTOM_KEYS \ CXX_COMPILER_ID \ CXX_COMPILER_VERSION + \ CXX_CONFIG \ CXX_STANDARD \ C_COMPILER_ID \ C_COMPILER_VERSION \ C_STANDARD \ DEBUG_MODE \ DEBUG_POSTFIX + \ DEVICE_LINK + \ DLL \ EXCLUDE \ EXPORT \ FALSE \ FILTER \ FOO_EXTRA_THINGS - \ Fortran_COMPILER_ID - \ Fortran_COMPILER_VERSION \ GENERATE \ GENEX_EVAL \ GNU + \ HOST_LINK \ IF \ IGNORE \ IMPORT_PREFIX \ IMPORT_SUFFIX \ INCLUDE_DIRECTORIES \ INSTALL_INTERFACE + \ INSTALL_NAME_DIR \ INSTALL_PREFIX + \ INTERFACE \ INTERFACE_LINK_LIBRARIES \ IN_LIST + \ ISPC_COMPILER_ID + \ ISPC_COMPILER_VERSION \ JOIN \ LANG \ LANG_COMPILER_ID \ LIBRARY_OUTPUT_NAME \ LIBRARY_OUTPUT_NAME_ + \ LINK_LANGUAGE + \ LINK_LANG_AND_ID \ LINK_LIBRARIES \ LINK_ONLY \ LOWER_CASE @@ -3028,6 +3736,10 @@ syn keyword cmakeGeneratorExpressions contained \ MAP_IMPORTED_CONFIG_ \ NO \ NOT + \ OBJCXX_COMPILER_ID + \ OBJCXX_COMPILER_VERSION + \ OBJC_COMPILER_ID + \ OBJC_COMPILER_VERSION \ OFF \ OLD_COMPILER \ OUTPUT_NAME @@ -3046,6 +3758,7 @@ syn keyword cmakeGeneratorExpressions contained \ SDK \ SEMICOLON \ SHELL_PATH + \ STATIC \ STREQUAL \ TARGET_BUNDLE_CONTENT_DIR \ TARGET_BUNDLE_DIR @@ -3100,8 +3813,10 @@ syn keyword cmakeCommand \ break \ build_command \ cmake_host_system_information + \ cmake_language \ cmake_minimum_required \ cmake_parse_arguments + \ cmake_path \ cmake_policy \ configure_file \ continue @@ -3258,8 +3973,10 @@ hi def link cmakeKWadd_subdirectory ModeMsg hi def link cmakeKWadd_test ModeMsg hi def link cmakeKWbuild_command ModeMsg hi def link cmakeKWcmake_host_system_information ModeMsg +hi def link cmakeKWcmake_language ModeMsg hi def link cmakeKWcmake_minimum_required ModeMsg hi def link cmakeKWcmake_parse_arguments ModeMsg +hi def link cmakeKWcmake_path ModeMsg hi def link cmakeKWcmake_policy ModeMsg hi def link cmakeKWconfigure_file ModeMsg hi def link cmakeKWcreate_test_sourcelist ModeMsg @@ -3274,6 +3991,7 @@ hi def link cmakeKWctest_test ModeMsg hi def link cmakeKWctest_update ModeMsg hi def link cmakeKWctest_upload ModeMsg hi def link cmakeKWdefine_property ModeMsg +hi def link cmakeKWdoxygen_add_docs ModeMsg hi def link cmakeKWenable_language ModeMsg hi def link cmakeKWenable_testing ModeMsg hi def link cmakeKWexec_program ModeMsg @@ -3318,6 +4036,7 @@ hi def link cmakeKWproject ModeMsg hi def link cmakeKWqt_wrap_cpp ModeMsg hi def link cmakeKWqt_wrap_ui ModeMsg hi def link cmakeKWremove ModeMsg +hi def link cmakeKWreturn ModeMsg hi def link cmakeKWseparate_arguments ModeMsg hi def link cmakeKWset ModeMsg hi def link cmakeKWset_directory_properties ModeMsg @@ -3325,6 +4044,7 @@ hi def link cmakeKWset_property ModeMsg hi def link cmakeKWset_source_files_properties ModeMsg hi def link cmakeKWset_target_properties ModeMsg hi def link cmakeKWset_tests_properties ModeMsg +hi def link cmakeKWsite_name ModeMsg hi def link cmakeKWsource_group ModeMsg hi def link cmakeKWstring ModeMsg hi def link cmakeKWsubdirs ModeMsg diff --git a/CMakeLists.txt b/CMakeLists.txt index 2d860d4a8b..a2fcf2e372 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -cmake_minimum_required(VERSION 3.1...3.15 FATAL_ERROR) +cmake_minimum_required(VERSION 3.1...3.18 FATAL_ERROR) set(CMAKE_USER_MAKE_RULES_OVERRIDE_C ${CMAKE_CURRENT_SOURCE_DIR}/Source/Modules/OverrideC.cmake) set(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX ${CMAKE_CURRENT_SOURCE_DIR}/Source/Modules/OverrideCXX.cmake) project(CMake) diff --git a/Help/command/DEVICE_LINK_OPTIONS.txt b/Help/command/DEVICE_LINK_OPTIONS.txt index 3f0226fdcd..1297cd0547 100644 --- a/Help/command/DEVICE_LINK_OPTIONS.txt +++ b/Help/command/DEVICE_LINK_OPTIONS.txt @@ -1,11 +1,12 @@ -When a device link step is involved, which is controlled by -:prop_tgt:`CUDA_SEPARABLE_COMPILATION` and -:prop_tgt:`CUDA_RESOLVE_DEVICE_SYMBOLS` properties and policy :policy:`CMP0105`, -the raw options will be delivered to the host and device link steps (wrapped in -``-Xcompiler`` or equivalent for device link). Options wrapped with -``$`` -:manual:`generator expression ` will be used -only for the device link step. Options wrapped with ``$`` -:manual:`generator expression ` will be used -only for the host link step. +.. versionadded:: 3.18 + When a device link step is involved, which is controlled by + :prop_tgt:`CUDA_SEPARABLE_COMPILATION` and + :prop_tgt:`CUDA_RESOLVE_DEVICE_SYMBOLS` properties and policy :policy:`CMP0105`, + the raw options will be delivered to the host and device link steps (wrapped in + ``-Xcompiler`` or equivalent for device link). Options wrapped with + ``$`` + :manual:`generator expression ` will be used + only for the device link step. Options wrapped with ``$`` + :manual:`generator expression ` will be used + only for the host link step. diff --git a/Help/command/FIND_XXX.txt b/Help/command/FIND_XXX.txt index 4a62c5b5ba..97eecfca36 100644 --- a/Help/command/FIND_XXX.txt +++ b/Help/command/FIND_XXX.txt @@ -33,9 +33,6 @@ of this command. If the |SEARCH_XXX| is found the result is stored in the variable and the search will not be repeated unless the variable is cleared. If nothing is found, the result will be ``-NOTFOUND``. -The ``REQUIRED`` option stops processing with an error message if nothing -is found, otherwise the search will be attempted again the -next time |FIND_XXX| is invoked with the same variable. Options include: @@ -60,7 +57,11 @@ Options include: Specify the documentation string for the ```` cache entry. ``REQUIRED`` - Stop processing with an error message if nothing is found. + .. versionadded:: 3.18 + + Stop processing with an error message if nothing is found, otherwise + the search will be attempted again the next time |FIND_XXX| is invoked + with the same variable. If ``NO_DEFAULT_PATH`` is specified, then no additional paths are added to the search. @@ -84,20 +85,21 @@ If ``NO_DEFAULT_PATH`` is not specified, the search process is as follows: |prefix_XXX_SUBDIR| for each ```` in :variable:`CMAKE_SYSTEM_PREFIX_PATH` -1. If called from within a find module or any other script loaded by a call to - :command:`find_package()`, search prefixes unique to the - current package being found. Specifically, look in the - :variable:`_ROOT` CMake variable and the - :envvar:`_ROOT` environment variable. - The package root variables are maintained as a stack, so if called from - nested find modules or config packages, root paths from the parent's find - module or config package will be searched after paths from the current - module or package. In other words, the search order would be - ``_ROOT``, ``ENV{_ROOT}``, - ``_ROOT``, ``ENV{_ROOT}``, etc. - This can be skipped if ``NO_PACKAGE_ROOT_PATH`` is passed or by setting - the :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` to ``FALSE``. - See policy :policy:`CMP0074`. +1. .. versionadded:: 3.12 + If called from within a find module or any other script loaded by a call to + :command:`find_package()`, search prefixes unique to the + current package being found. Specifically, look in the + :variable:`_ROOT` CMake variable and the + :envvar:`_ROOT` environment variable. + The package root variables are maintained as a stack, so if called from + nested find modules or config packages, root paths from the parent's find + module or config package will be searched after paths from the current + module or package. In other words, the search order would be + ``_ROOT``, ``ENV{_ROOT}``, + ``_ROOT``, ``ENV{_ROOT}``, etc. + This can be skipped if ``NO_PACKAGE_ROOT_PATH`` is passed or by setting + the :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` to ``FALSE``. + See policy :policy:`CMP0074`. * |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX| @@ -151,6 +153,10 @@ If ``NO_DEFAULT_PATH`` is not specified, the search process is as follows: or in the short-hand version of the command. These are typically hard-coded guesses. +.. versionadded:: 3.16 + Added ``CMAKE_FIND_USE__PATH`` variables to globally disable + various search locations. + .. |FIND_ARGS_XXX| replace:: NAMES name On macOS the :variable:`CMAKE_FIND_FRAMEWORK` and diff --git a/Help/command/OPTIONS_SHELL.txt b/Help/command/OPTIONS_SHELL.txt index 0f8ec323cd..4051ffe16e 100644 --- a/Help/command/OPTIONS_SHELL.txt +++ b/Help/command/OPTIONS_SHELL.txt @@ -1,9 +1,11 @@ The final set of compile or link options used for a target is constructed by accumulating options from the current target and the usage requirements of its dependencies. The set of options is de-duplicated to avoid repetition. -While beneficial for individual options, the de-duplication step can break -up option groups. For example, ``-D A -D B`` becomes ``-D A B``. One may -specify a group of options using shell-like quoting along with a ``SHELL:`` -prefix. The ``SHELL:`` prefix is dropped, and the rest of the option string -is parsed using the :command:`separate_arguments` ``UNIX_COMMAND`` mode. -For example, ``"SHELL:-D A" "SHELL:-D B"`` becomes ``-D A -D B``. + +.. versionadded:: 3.12 + While beneficial for individual options, the de-duplication step can break + up option groups. For example, ``-D A -D B`` becomes ``-D A B``. One may + specify a group of options using shell-like quoting along with a ``SHELL:`` + prefix. The ``SHELL:`` prefix is dropped, and the rest of the option string + is parsed using the :command:`separate_arguments` ``UNIX_COMMAND`` mode. + For example, ``"SHELL:-D A" "SHELL:-D B"`` becomes ``-D A -D B``. diff --git a/Help/command/add_custom_command.rst b/Help/command/add_custom_command.rst index 231f9dad41..45e4e3e665 100644 --- a/Help/command/add_custom_command.rst +++ b/Help/command/add_custom_command.rst @@ -51,6 +51,8 @@ The options are: used in the future. ``BYPRODUCTS`` + .. versionadded:: 3.2 + Specify the files the command is expected to produce but whose modification time may or may not be newer than the dependencies. If a byproduct name is a relative path it will be interpreted @@ -88,10 +90,11 @@ The options are: * The target is not being cross-compiled (i.e. the :variable:`CMAKE_CROSSCOMPILING` variable is not set to true). - * The target is being cross-compiled and an emulator is provided (i.e. - its :prop_tgt:`CROSSCOMPILING_EMULATOR` target property is set). - In this case, the contents of :prop_tgt:`CROSSCOMPILING_EMULATOR` will be - prepended to the command before the location of the target executable. + * .. versionadded:: 3.6 + The target is being cross-compiled and an emulator is provided (i.e. + its :prop_tgt:`CROSSCOMPILING_EMULATOR` target property is set). + In this case, the contents of :prop_tgt:`CROSSCOMPILING_EMULATOR` will be + prepended to the command before the location of the target executable. If neither of the above conditions are met, it is assumed that the command name is a program to be found on the ``PATH`` at build time. @@ -153,18 +156,23 @@ The options are: If any dependency is an ``OUTPUT`` of another custom command in the same directory (``CMakeLists.txt`` file), CMake automatically brings the other custom command into the target in which this command is built. - A target-level dependency is added if any dependency is listed as - ``BYPRODUCTS`` of a target or any of its build events in the same - directory to ensure the byproducts will be available. + + .. versionadded:: 3.16 + A target-level dependency is added if any dependency is listed as + ``BYPRODUCTS`` of a target or any of its build events in the same + directory to ensure the byproducts will be available. If ``DEPENDS`` is not specified, the command will run whenever the ``OUTPUT`` is missing; if the command does not actually create the ``OUTPUT``, the rule will always run. - Arguments to ``DEPENDS`` may use - :manual:`generator expressions `. + .. versionadded:: 3.1 + Arguments to ``DEPENDS`` may use + :manual:`generator expressions `. ``COMMAND_EXPAND_LISTS`` + .. versionadded:: 3.8 + Lists in ``COMMAND`` arguments will be expanded, including those created with :manual:`generator expressions `, @@ -184,6 +192,8 @@ The options are: only for Makefile generators and will be ignored by other generators. ``JOB_POOL`` + .. versionadded:: 3.15 + Specify a :prop_gbl:`pool ` for the :generator:`Ninja` generator. Incompatible with ``USES_TERMINAL``, which implies the ``console`` pool. @@ -211,6 +221,8 @@ The options are: source file property. ``USES_TERMINAL`` + .. versionadded:: 3.2 + The command will be given direct access to the terminal if possible. With the :generator:`Ninja` generator, this places the command in the ``console`` :prop_gbl:`pool `. @@ -230,15 +242,23 @@ The options are: If it is a relative path it will be interpreted relative to the build tree directory corresponding to the current source directory. - Arguments to ``WORKING_DIRECTORY`` may use - :manual:`generator expressions `. + .. versionadded:: 3.13 + Arguments to ``WORKING_DIRECTORY`` may use + :manual:`generator expressions `. ``DEPFILE`` + .. versionadded:: 3.7 + Specify a ``.d`` depfile for the :generator:`Ninja` generator. A ``.d`` file holds dependencies usually emitted by the custom command itself. Using ``DEPFILE`` with other generators than Ninja is an error. + If the ``DEPFILE`` argument is relative, it should be relative to + :variable:`CMAKE_CURRENT_BINARY_DIR`, and any relative paths inside the + ``DEPFILE`` should also be relative to :variable:`CMAKE_CURRENT_BINARY_DIR` + (see policy :policy:`CMP0116`.) + Build Events ^^^^^^^^^^^^ diff --git a/Help/command/add_custom_target.rst b/Help/command/add_custom_target.rst index 2eb0c88649..7c29ddab7f 100644 --- a/Help/command/add_custom_target.rst +++ b/Help/command/add_custom_target.rst @@ -32,6 +32,8 @@ The options are: called ``ALL``). ``BYPRODUCTS`` + .. versionadded:: 3.2 + Specify the files the command is expected to produce but whose modification time may or may not be updated on subsequent builds. If a byproduct name is a relative path it will be interpreted @@ -67,10 +69,11 @@ The options are: * The target is not being cross-compiled (i.e. the :variable:`CMAKE_CROSSCOMPILING` variable is not set to true). - * The target is being cross-compiled and an emulator is provided (i.e. - its :prop_tgt:`CROSSCOMPILING_EMULATOR` target property is set). - In this case, the contents of :prop_tgt:`CROSSCOMPILING_EMULATOR` will be - prepended to the command before the location of the target executable. + * .. versionadded:: 3.6 + The target is being cross-compiled and an emulator is provided (i.e. + its :prop_tgt:`CROSSCOMPILING_EMULATOR` target property is set). + In this case, the contents of :prop_tgt:`CROSSCOMPILING_EMULATOR` will be + prepended to the command before the location of the target executable. If neither of the above conditions are met, it is assumed that the command name is a program to be found on the ``PATH`` at build time. @@ -103,14 +106,18 @@ The options are: :command:`add_custom_command` command calls in the same directory (``CMakeLists.txt`` file). They will be brought up to date when the target is built. - A target-level dependency is added if any dependency is a byproduct - of a target or any of its build events in the same directory to ensure - the byproducts will be available before this target is built. + + .. versionchanged:: 3.16 + A target-level dependency is added if any dependency is a byproduct + of a target or any of its build events in the same directory to ensure + the byproducts will be available before this target is built. Use the :command:`add_dependencies` command to add dependencies on other targets. ``COMMAND_EXPAND_LISTS`` + .. versionadded:: 3.8 + Lists in ``COMMAND`` arguments will be expanded, including those created with :manual:`generator expressions `, @@ -119,6 +126,8 @@ The options are: to be properly expanded. ``JOB_POOL`` + .. versionadded:: 3.15 + Specify a :prop_gbl:`pool ` for the :generator:`Ninja` generator. Incompatible with ``USES_TERMINAL``, which implies the ``console`` pool. @@ -141,6 +150,8 @@ The options are: tool-specific special characters. ``USES_TERMINAL`` + .. versionadded:: 3.2 + The command will be given direct access to the terminal if possible. With the :generator:`Ninja` generator, this places the command in the ``console`` :prop_gbl:`pool `. @@ -150,5 +161,6 @@ The options are: If it is a relative path it will be interpreted relative to the build tree directory corresponding to the current source directory. - Arguments to ``WORKING_DIRECTORY`` may use - :manual:`generator expressions `. + .. versionadded:: 3.13 + Arguments to ``WORKING_DIRECTORY`` may use + :manual:`generator expressions `. diff --git a/Help/command/add_dependencies.rst b/Help/command/add_dependencies.rst index de219a5087..14c0183031 100644 --- a/Help/command/add_dependencies.rst +++ b/Help/command/add_dependencies.rst @@ -17,6 +17,9 @@ Dependencies added to an :ref:`imported target ` or an :ref:`interface library ` are followed transitively in its place since the target itself does not build. +.. versionadded:: 3.3 + Allow adding dependencies to interface libraries. + See the ``DEPENDS`` option of :command:`add_custom_target` and :command:`add_custom_command` commands for adding file-level dependencies in custom rules. See the :prop_sf:`OBJECT_DEPENDS` diff --git a/Help/command/add_executable.rst b/Help/command/add_executable.rst index e073228de6..dde94293e9 100644 --- a/Help/command/add_executable.rst +++ b/Help/command/add_executable.rst @@ -17,13 +17,21 @@ Normal Executables [source1] [source2 ...]) Adds an executable target called ```` to be built from the source -files listed in the command invocation. (The source files can be omitted -here if they are added later using :command:`target_sources`.) The +files listed in the command invocation. The ```` corresponds to the logical target name and must be globally unique within a project. The actual file name of the executable built is constructed based on conventions of the native platform (such as ``.exe`` or just ````). +.. versionadded:: 3.1 + Source arguments to ``add_executable`` may use "generator expressions" with + the syntax ``$<...>``. See the :manual:`cmake-generator-expressions(7)` + manual for available expressions. + +.. versionadded:: 3.11 + The source files can be omitted if they are added later using + :command:`target_sources`. + By default the executable file will be created in the build tree directory corresponding to the source tree directory in which the command was invoked. See documentation of the @@ -43,10 +51,8 @@ If ``EXCLUDE_FROM_ALL`` is given the corresponding property will be set on the created target. See documentation of the :prop_tgt:`EXCLUDE_FROM_ALL` target property for details. -Source arguments to ``add_executable`` may use "generator expressions" with -the syntax ``$<...>``. See the :manual:`cmake-generator-expressions(7)` -manual for available expressions. See the :manual:`cmake-buildsystem(7)` -manual for more on defining buildsystem properties. +See the :manual:`cmake-buildsystem(7)` manual for more on defining +buildsystem properties. See also :prop_sf:`HEADER_FILE_ONLY` on what to do if some sources are pre-processed, and you want to have the original sources reachable from @@ -85,10 +91,14 @@ be used to refer to ```` in subsequent commands. The ```` does not appear in the generated buildsystem as a make target. The ```` may not be an ``ALIAS``. -An ``ALIAS`` to a non-``GLOBAL`` :ref:`Imported Target ` -has scope in the directory in which the alias is created and below. -The :prop_tgt:`ALIAS_GLOBAL` target property can be used to check if the -alias is global or not. +.. versionadded:: 3.11 + An ``ALIAS`` can target a ``GLOBAL`` :ref:`Imported Target ` + +.. versionadded:: 3.18 + An ``ALIAS`` can target a non-``GLOBAL`` Imported Target. Such alias is + scoped to the directory in which it is created and subdirectories. + The :prop_tgt:`ALIAS_GLOBAL` target property can be used to check if the + alias is global or not. ``ALIAS`` targets can be used as targets to read properties from, executables for custom commands and custom targets. They can also be diff --git a/Help/command/add_library.rst b/Help/command/add_library.rst index b7dfabc8e5..d3fbdcf199 100644 --- a/Help/command/add_library.rst +++ b/Help/command/add_library.rst @@ -17,13 +17,21 @@ Normal Libraries [...]) Adds a library target called ```` to be built from the source files -listed in the command invocation. (The source files can be omitted here -if they are added later using :command:`target_sources`.) The ```` +listed in the command invocation. The ```` corresponds to the logical target name and must be globally unique within a project. The actual file name of the library built is constructed based on conventions of the native platform (such as ``lib.a`` or ``.lib``). +.. versionadded:: 3.1 + Source arguments to ``add_library`` may use "generator expressions" with + the syntax ``$<...>``. See the :manual:`cmake-generator-expressions(7)` + manual for available expressions. + +.. versionadded:: 3.11 + The source files can be omitted if they are added later using + :command:`target_sources`. + ``STATIC``, ``SHARED``, or ``MODULE`` may be given to specify the type of library to be created. ``STATIC`` libraries are archives of object files for use when linking other targets. ``SHARED`` libraries are linked @@ -34,9 +42,13 @@ type is ``STATIC`` or ``SHARED`` based on whether the current value of the variable :variable:`BUILD_SHARED_LIBS` is ``ON``. For ``SHARED`` and ``MODULE`` libraries the :prop_tgt:`POSITION_INDEPENDENT_CODE` target property is set to ``ON`` automatically. -A ``SHARED`` or ``STATIC`` library may be marked with the :prop_tgt:`FRAMEWORK` +A ``SHARED`` library may be marked with the :prop_tgt:`FRAMEWORK` target property to create an macOS Framework. +.. versionadded:: 3.8 + A ``STATIC`` library may be marked with the :prop_tgt:`FRAMEWORK` + target property to create a static Framework. + If a library does not export any symbols, it must not be declared as a ``SHARED`` library. For example, a Windows resource DLL or a managed C++/CLI DLL that exports no unmanaged symbols would need to be a ``MODULE`` library. @@ -55,10 +67,8 @@ If ``EXCLUDE_FROM_ALL`` is given the corresponding property will be set on the created target. See documentation of the :prop_tgt:`EXCLUDE_FROM_ALL` target property for details. -Source arguments to ``add_library`` may use "generator expressions" with -the syntax ``$<...>``. See the :manual:`cmake-generator-expressions(7)` -manual for available expressions. See the :manual:`cmake-buildsystem(7)` -manual for more on defining buildsystem properties. +See the :manual:`cmake-buildsystem(7)` manual for more on defining +buildsystem properties. See also :prop_sf:`HEADER_FILE_ONLY` on what to do if some sources are pre-processed, and you want to have the original sources reachable from @@ -93,6 +103,9 @@ systems (such as Xcode) may not like targets that have only object files, so consider adding at least one real source file to any target that references ``$``. +.. versionadded:: 3.12 + Object libraries can be linked to with :command:`target_link_libraries`. + Interface Libraries ^^^^^^^^^^^^^^^^^^^ @@ -121,23 +134,28 @@ like any other target. An interface library created with the above signature has no source files itself and is not included as a target in the generated buildsystem. -Since CMake 3.19, an interface library target may be created with -source files: +.. versionadded:: 3.15 + An interface library can have :prop_tgt:`PUBLIC_HEADER` and + :prop_tgt:`PRIVATE_HEADER` properties. The headers specified by those + properties can be installed using the :command:`install(TARGETS)` command. -.. code-block:: cmake +.. versionadded:: 3.19 + An interface library target may be created with source files: - add_library( INTERFACE [...] [EXCLUDE_FROM_ALL]) + .. code-block:: cmake -Source files may be listed directly in the ``add_library`` call or added -later by calls to :command:`target_sources` with the ``PRIVATE`` or -``PUBLIC`` keywords. + add_library( INTERFACE [...] [EXCLUDE_FROM_ALL]) -If an interface library has source files (i.e. the :prop_tgt:`SOURCES` -target property is set), it will appear in the generated buildsystem -as a build target much like a target defined by the -:command:`add_custom_target` command. It does not compile any sources, -but does contain build rules for custom commands created by the -:command:`add_custom_command` command. + Source files may be listed directly in the ``add_library`` call or added + later by calls to :command:`target_sources` with the ``PRIVATE`` or + ``PUBLIC`` keywords. + + If an interface library has source files (i.e. the :prop_tgt:`SOURCES` + target property is set), it will appear in the generated buildsystem + as a build target much like a target defined by the + :command:`add_custom_target` command. It does not compile any sources, + but does contain build rules for custom commands created by the + :command:`add_custom_command` command. .. note:: In most command signatures where the ``INTERFACE`` keyword appears, @@ -211,10 +229,14 @@ used to refer to ```` in subsequent commands. The ```` does not appear in the generated buildsystem as a make target. The ```` may not be an ``ALIAS``. -An ``ALIAS`` to a non-``GLOBAL`` :ref:`Imported Target ` -has scope in the directory in which the alias is created and below. -The :prop_tgt:`ALIAS_GLOBAL` target property can be used to check if the -alias is global or not. +.. versionadded:: 3.11 + An ``ALIAS`` can target a ``GLOBAL`` :ref:`Imported Target ` + +.. versionadded:: 3.18 + An ``ALIAS`` can target a non-``GLOBAL`` Imported Target. Such alias is + scoped to the directory in which it is created and below. + The :prop_tgt:`ALIAS_GLOBAL` target property can be used to check if the + alias is global or not. ``ALIAS`` targets can be used as linkable targets and as targets to read properties from. They can also be tested for existence with the diff --git a/Help/command/add_test.rst b/Help/command/add_test.rst index 2b4d082d1a..832d8db3b1 100644 --- a/Help/command/add_test.rst +++ b/Help/command/add_test.rst @@ -31,6 +31,8 @@ if necessary. See policy :policy:`CMP0110`. The options are: current source directory. ``COMMAND_EXPAND_LISTS`` + .. versionadded:: 3.16 + Lists in ``COMMAND`` arguments will be expanded, including those created with :manual:`generator expressions `. @@ -43,6 +45,9 @@ unless the :prop_test:`PASS_REGULAR_EXPRESSION`, :prop_test:`FAIL_REGULAR_EXPRESSION` or :prop_test:`SKIP_REGULAR_EXPRESSION` test property is used. +.. versionadded:: 3.16 + Added :prop_test:`SKIP_REGULAR_EXPRESSION` property. + The ``COMMAND`` and ``WORKING_DIRECTORY`` options may use "generator expressions" with the syntax ``$<...>``. See the :manual:`cmake-generator-expressions(7)` manual for available expressions. diff --git a/Help/command/cmake_host_system_information.rst b/Help/command/cmake_host_system_information.rst index 2e9563aab3..2b902a9159 100644 --- a/Help/command/cmake_host_system_information.rst +++ b/Help/command/cmake_host_system_information.rst @@ -24,6 +24,14 @@ Key Description ``AVAILABLE_VIRTUAL_MEMORY`` Available virtual memory in MiB [#mebibytes]_ ``TOTAL_PHYSICAL_MEMORY`` Total physical memory in MiB [#mebibytes]_ ``AVAILABLE_PHYSICAL_MEMORY`` Available physical memory in MiB [#mebibytes]_ +============================= ================================================ + +.. versionadded:: 3.10 + Additional ```` values are available: + +============================= ================================================ +Key Description +============================= ================================================ ``IS_64BIT`` One if processor is 64Bit ``HAS_FPU`` One if processor has floating point unit ``HAS_MMX`` One if processor supports MMX instructions diff --git a/Help/command/cmake_minimum_required.rst b/Help/command/cmake_minimum_required.rst index e6ebcf0db8..fe0e424918 100644 --- a/Help/command/cmake_minimum_required.rst +++ b/Help/command/cmake_minimum_required.rst @@ -7,6 +7,9 @@ Require a minimum version of cmake. cmake_minimum_required(VERSION [...] [FATAL_ERROR]) +.. versionadded:: 3.12 + The optional ```` version. + Sets the minimum required version of cmake for a project. Also updates the policy settings as explained below. diff --git a/Help/command/cmake_parse_arguments.rst b/Help/command/cmake_parse_arguments.rst index 8803ec8bd0..8dedc80108 100644 --- a/Help/command/cmake_parse_arguments.rst +++ b/Help/command/cmake_parse_arguments.rst @@ -21,11 +21,12 @@ respective options. The first signature reads processes arguments passed in the ``...``. This may be used in either a :command:`macro` or a :command:`function`. -The ``PARSE_ARGV`` signature is only for use in a :command:`function` -body. In this case the arguments that are parsed come from the -``ARGV#`` variables of the calling function. The parsing starts with -the ````-th argument, where ```` is an unsigned integer. This allows for -the values to have special characters like ``;`` in them. +.. versionadded:: 3.7 + The ``PARSE_ARGV`` signature is only for use in a :command:`function` + body. In this case the arguments that are parsed come from the + ``ARGV#`` variables of the calling function. The parsing starts with + the ````-th argument, where ```` is an unsigned integer. + This allows for the values to have special characters like ``;`` in them. The ```` argument contains all options for the respective macro, i.e. keywords which can be used when calling the macro without any value @@ -40,12 +41,11 @@ The ```` argument contains all keywords for this macro which can be followed by more than one value, like e.g. the ``TARGETS`` or ``FILES`` keywords of the :command:`install` command. -.. note:: - - All keywords shall be unique. I.e. every keyword shall only be specified - once in either ````, ```` or - ````. A warning will be emitted if uniqueness is - violated. +.. versionchanged:: 3.5 + All keywords shall be unique. I.e. every keyword shall only be specified + once in either ````, ```` or + ````. A warning will be emitted if uniqueness is + violated. When done, ``cmake_parse_arguments`` will consider for each of the keywords listed in ````, ```` and @@ -61,10 +61,12 @@ All remaining arguments are collected in a variable were recognized. This can be checked afterwards to see whether your macro was called with unrecognized parameters. -```` and ```` that were given no -values at all are collected in a variable ``_KEYWORDS_MISSING_VALUES`` -that will be undefined if all keywords received values. This can be checked -to see if there were keywords without any values given. +.. versionadded:: 3.15 + ```` and ```` that were given no + values at all are collected in a variable + ``_KEYWORDS_MISSING_VALUES`` that will be undefined if all keywords + received values. This can be checked to see if there were keywords without + any values given. Consider the following example macro, ``my_install()``, which takes similar arguments to the real :command:`install` command: diff --git a/Help/command/cmake_path.rst b/Help/command/cmake_path.rst new file mode 100644 index 0000000000..2d37ae0ac3 --- /dev/null +++ b/Help/command/cmake_path.rst @@ -0,0 +1,817 @@ +cmake_path +---------- + +.. versionadded:: 3.20 + +Filesystem path manipulation command. + +This command is dedicated to the manipulation of objects of type path which +represent paths on a filesystem. Only syntactic aspects of paths are handled: +the pathname may represent a non-existing path or even one that is not allowed +to exist on the current file system or OS. + +For operations involving the filesystem, have a look at the :command:`file` +command. + +The path name has the following syntax: + +1. ``root-name`` (optional): identifies the root on a filesystem with multiple + roots (such as ``"C:"`` or ``"//myserver"``). + +2. ``root-directory`` (optional): a directory separator that, if present, marks + this path as absolute. If it is missing (and the first element other than + the ``root-name`` is a ``item-name``), then the path is relative. + +Zero or more of the following: + +3. ``item-name``: sequence of characters that aren't directory separators. This + name may identify a file, a hard link, a symbolic link, or a directory. Two + special ``item-names`` are recognized: + + * ``dot``: the item name consisting of a single dot character ``.`` is a + directory name that refers to the current directory. + + * ``dot-dot``: the item name consisting of two dot characters ``..`` is a + directory name that refers to the parent directory. + +4. ``directory-separator``: the forward slash character ``/``. If this + character is repeated, it is treated as a single directory separator: + ``/usr///////lib`` is the same as ``/usr/lib``. + +.. _FILENAME_DEF: + +A path has a filename if it does not ends with a ``directory-separator``. The +filename is the last ``item-name`` of the path. + +.. _EXTENSION_DEF: + +A :ref:`filename ` can have an extension. By default, the +extension is defined as the sub-string beginning at the leftmost period +(including the period) and until the end of the pathname. When the option +``LAST_ONLY`` is specified, the extension is the sub-string beginning at the +rightmost period. + +The following exceptions apply: + + * If the first character in the :ref:`filename ` is a period, + that period is ignored (a filename like ``".profile"`` is not treated as an + extension). + + * If the pathname is either ``.`` or ``..``. + +.. note:: + + ``cmake_path`` command handles paths in the format of the build system, not + the target system. So this is not generally applicable to the target system + in cross-compiling environment. + +For all commands, ```` placeholder expect a variable name. An error +will be raised if the variable does not exist, except for `SET`_ and `APPEND`_ +sub-commands. ```` placeholder expect a string literal. +``[...]`` placeholder expect zero or more arguments. ```` +placeholder expect a variable name. + +.. note:: + + ``cmake_path`` command does not support list of paths. The ```` + placeholder must store only one path name. + +To initialize a path variable, three possibilities can be used: + +1. :command:`set` command. +2. :ref:`cmake_path(SET) ` command. Mainly used to build a + path variable from a native path. +3. :ref:`cmake_path(APPEND) ` command. Can be used to build a path from + already available path fragments. + + .. code-block:: cmake + + # To build the path "${CMAKE_CURRENT_SOURCE_DIR}/data" + + set (path1 "${CMAKE_CURRENT_SOURCE_DIR}/data") + + cmake_path(SET path2 "${CMAKE_CURRENT_SOURCE_DIR}/data") + + cmake_path(APPEND path3 "${CMAKE_CURRENT_SOURCE_DIR}" "data") + +`Modification`_ and `Generation`_ sub-commands store the result in-place or in +the variable specified by ``OUTPUT_VARIABLE`` option. All other sub-commands +store the result in the required ```` variable. + +Sub-commands supporting ``NORMALIZE`` option will :ref:`normalize ` +the path. + +Synopsis +^^^^^^^^ + +.. parsed-literal:: + + `Decomposition`_ + cmake_path(`GET`_ :ref:`ROOT_NAME ` ) + cmake_path(`GET`_ :ref:`ROOT_DIRECTORY ` ) + cmake_path(`GET`_ :ref:`ROOT_PATH ` ) + cmake_path(`GET`_ :ref:`FILENAME ` ) + cmake_path(`GET`_ :ref:`EXTENSION ` [LAST_ONLY] ) + cmake_path(`GET`_ :ref:`STEM ` [LAST_ONLY] ) + cmake_path(`GET`_ :ref:`RELATIVE_PATH ` ) + cmake_path(`GET`_ :ref:`PARENT_PATH ` ) + + `Modification`_ + cmake_path(`SET`_ [NORMALIZE] ) + cmake_path(`APPEND`_ [...] [OUTPUT_VARIABLE ]) + cmake_path(`APPEND_STRING`_ [...] [OUTPUT_VARIABLE ]) + cmake_path(`REMOVE_FILENAME`_ [OUTPUT_VARIABLE ]) + cmake_path(`REPLACE_FILENAME`_ [OUTPUT_VARIABLE ]) + cmake_path(`REMOVE_EXTENSION`_ [LAST_ONLY] + [OUTPUT_VARIABLE ]) + cmake_path(`REPLACE_EXTENSION`_ [LAST_ONLY] + [OUTPUT_VARIABLE ]) + + `Generation`_ + cmake_path(`NORMAL_PATH`_ [OUTPUT_VARIABLE ]) + cmake_path(`RELATIVE_PATH`_ [BASE_DIRECTORY ] + [OUTPUT_VARIABLE ]) + cmake_path(`ABSOLUTE_PATH`_ [BASE_DIRECTORY ] [NORMALIZE] + [OUTPUT_VARIABLE ]) + + `Conversion`_ + cmake_path(`NATIVE_PATH`_ [NORMALIZE] ) + cmake_path(`CONVERT`_ `TO_CMAKE_PATH_LIST`_ ) + cmake_path(`CONVERT`_ `TO_NATIVE_PATH_LIST`_ ) + + `Comparison`_ + cmake_path(`COMPARE`_ ) + + `Query`_ + cmake_path(`HAS_ROOT_NAME`_ ) + cmake_path(`HAS_ROOT_DIRECTORY`_ ) + cmake_path(`HAS_ROOT_PATH`_ ) + cmake_path(`HAS_FILENAME`_ ) + cmake_path(`HAS_EXTENSION`_ ) + cmake_path(`HAS_STEM`_ ) + cmake_path(`HAS_RELATIVE_PATH`_ ) + cmake_path(`HAS_PARENT_PATH`_ ) + cmake_path(`IS_ABSOLUTE`_ ) + cmake_path(`IS_RELATIVE`_ ) + cmake_path(`IS_PREFIX`_ [NORMALIZE] ) + + `Hashing`_ + cmake_path(`HASH`_ [NORMALIZE] ) + +Decomposition +^^^^^^^^^^^^^ + +.. _GET: +.. _GET_ROOT_NAME: + +.. code-block:: cmake + + cmake_path(GET ROOT_NAME ) + +Returns the root name of the path. If the path does not include a root name, +returns an empty path. + +.. note:: + + Only ``Windows`` system has the concept of ``root-name``, so on all other + systems, it is always an empty path. + +For example: + + .. code-block:: cmake + + set (path "c:/a") + cmake_path (GET path ROOT_NAME output) + message ("Root name is \"${output}\"") + + Will display:: + + Root name is "c:" + +.. _GET_ROOT_DIRECTORY: + +.. code-block:: cmake + + cmake_path(GET ROOT_DIRECTORY ) + +Returns the root directory of the path. If the path does not include a root +directory, returns an empty path. + +For example: + + .. code-block:: cmake + + set (path "c:/a") + cmake_path (GET path ROOT_DIRECTORY output) + message ("Root directory is \"${output}\"") + + Will display:: + + Root directory is "/" + +.. _GET_ROOT_PATH: + +.. code-block:: cmake + + cmake_path(GET ROOT_PATH ) + +Returns the root path of the path. If the path does not include a root path, +returns an empty path. + +Effectively, returns the following: ``root-name root-directory``. + +For example: + + .. code-block:: cmake + + set (path "c:/a") + cmake_path (GET path ROOT_PATH output) + message ("Root path is \"${output}\"") + + Will display:: + + Root path is "c:/" + +.. _GET_FILENAME: + +.. code-block:: cmake + + cmake_path(GET FILENAME ) + +Returns the :ref:`filename ` component of the path. If the path +ends with a ``directory-separator``, there is no filename, so returns an empty +path. + +For example: + + .. code-block:: cmake + + set (path "/a") + cmake_path (GET path FILENAME output) + message ("First filename is \"${output}\"") + + set (path "/a/") + cmake_path (GET path FILENAME output) + message ("Second filename is \"${output}\"") + + Will display:: + + First filename is "a" + Second filename is "" + +.. _GET_EXTENSION: + +.. code-block:: cmake + + cmake_path(GET EXTENSION [LAST_ONLY] ) + +Returns the :ref:`extension ` of the filename component. + +If the :ref:`filename ` component of the path contains a period +(``.``), and is not one of the special filesystem elements ``dot`` or +``dot-dot``, then the :ref:`extension ` is returned. + +For example: + + .. code-block:: cmake + + set (path "name.ext1.ext2") + cmake_path (GET path EXTENSION result) + message ("Full extension is \"${result}\"") + cmake_path (GET path EXTENSION LAST_ONLY result) + message ("Last extension is \"${result}\"") + + Will display:: + + Full extension is ".ext1.ext2" + Last extension is ".ext2" + +The following exceptions apply: + + * If the first character in the filename is a period, that period is ignored + (a filename like ``".profile"`` is not treated as an extension). + + * If the pathname is either ``.`` or ``..``, or if + :ref:`filename ` component does not contain the ``.`` + character, then an empty path is returned. + +.. _GET_STEM: + +.. code-block:: cmake + + cmake_path(GET STEM [LAST_ONLY] ) + +Returns the :ref:`filename ` component of the path stripped of +its :ref:`extension `. + +For Example: + + .. code-block:: cmake + + set (path "name.ext1.ext2") + cmake_path (GET path STEM result) + message ("Filename without the extension is \"${result}\"") + cmake_path (GET path STEM LAST_ONLY result) + message ("Filename whiteout the last extension is \"${result}\"") + + Will display:: + + Filename without the extension is "name" + Filename without the last extension is "name.ext1" + +The following exceptions apply: + + * If the first character in the filename is a period, that period is ignored + (a filename like ``".profile"`` is not treated as an extension). + + * If the filename is one of the special filesystem components ``dot`` or + ``dot-dot``, or if it has no periods, the function returns the entire + :ref:`filename ` component. + +.. _GET_RELATIVE_PATH: + +.. code-block:: cmake + + cmake_path(GET RELATIVE_PATH ) + +Returns path relative to ``root-path``, that is, a pathname composed of +every component of ```` after ``root-path``. If ```` is +an empty path, returns an empty path. + +For Example: + + .. code-block:: cmake + + set (path "/a/b") + cmake_path (GET path RELATIVE_PATH result) + message ("Relative path is \"${result}\"") + + set (path "/") + cmake_path (GET path RELATIVE_PATH result) + message ("Relative path is \"${result}\"") + + Will display:: + + Relative path is "a/b" + Relative path is "" + +.. _GET_PARENT_PATH: + +.. code-block:: cmake + + cmake_path(GET PARENT_PATH ) + +Returns the path to the parent directory. + +If `HAS_RELATIVE_PATH`_ sub-command returns false, the result is a copy of +````. Otherwise, the result is ```` with one fewer element. + +For Example: + + .. code-block:: cmake + + set (path "c:/a/b") + cmake_path (GET path PARENT_PATH result) + message ("Parent path is \"${result}\"") + + set (path "c:/") + cmake_path (GET path PARENT_PATH result) + message ("Parent path is \"${result}\"") + + Will display:: + + Parent path is "c:/a" + Relative path is "c:/" + +Modification +^^^^^^^^^^^^ + +.. _cmake_path-SET: +.. _SET: + +.. code-block:: cmake + + cmake_path(SET [NORMALIZE] ) + +Assign the ```` path to ````. Moreover, if ```` is a +native path, it is converted into cmake-style path with forward-slashes +(``/``). On Windows, the long filename marker is taken into account. + +When ``NORMALIZE`` option is specified, the path is :ref:`normalized +` before the conversion. + +For Example: + + .. code-block:: cmake + + set (native_path "c:\\a\\b/..\\c") + cmake_path (SET path "${native_path}") + message ("CMake path is \"${path}\"") + + cmake_path (SET path NORMALIZE "${native_path}") + message ("Normalized CMake path is \"${path}\"") + + Will display:: + + CMake path is "c:/a/b/../c" + Normalized CMake path is "c:/a/c" + +.. _APPEND: + +.. code-block:: cmake + + cmake_path(APPEND [...] [OUTPUT_VARIABLE ]) + +Append all the ```` arguments to the ```` using ``/`` as +``directory-separator``. + +For each ```` argument, the following algorithm (pseudo-code) applies: + + .. code-block:: cmake + + # is the contents of + + IF (.is_absolute() OR + (.has_root_name() AND + NOT .root_name() STREQUAL .root_name())) + replaces with + RETURN() + ENDIF() + + IF (.has_root_directory()) + remove any root-directory and the entire relative path from + ELSEIF (.has_filename() OR + (NOT .has_root_directory() OR .is_absolute())) + appends directory-separator to + ENDIF() + + appends omitting any root-name to + +.. _APPEND_STRING: + +.. code-block:: cmake + + cmake_path(APPEND_STRING [...] [OUTPUT_VARIABLE ]) + +Append all the ```` arguments to the ```` without +``directory-separator``. + +.. _REMOVE_FILENAME: + +.. code-block:: cmake + + cmake_path(REMOVE_FILENAME [OUTPUT_VARIABLE ]) + +Removes the :ref:`filename ` component (as returned by +:ref:`GET ... FILENAME `) from ````. + +After this function returns, if change is done in-place, `HAS_FILENAME`_ +returns false for ````. + +For Example: + + .. code-block:: cmake + + set (path "/a/b") + cmake_path (REMOVE_FILENAME path) + message ("First path is \"${path}\"") + + cmake_path (REMOVE_FILENAME path) + message ("Second path is \"${result}\"") + + Will display:: + + First path is "/a/" + Second path is "/a/" + +.. _REPLACE_FILENAME: + +.. code-block:: cmake + + cmake_path(REPLACE_FILENAME [OUTPUT_VARIABLE ]) + +Replaces the :ref:`filename ` component from ```` with +````. + +If ```` has no filename component (`HAS_FILENAME`_ returns false), +the path is unchanged. + +Equivalent to the following: + + .. code-block:: cmake + + cmake_path(HAS_FILENAME path has_filename) + if (has_filename) + cmake_path(REMOVE_FILENAME path) + cmake_path(APPEND path "replacement"); + endif() + +.. _REMOVE_EXTENSION: + +.. code-block:: cmake + + cmake_path(REMOVE_EXTENSION [LAST_ONLY] + [OUTPUT_VARIABLE ]) + +Removes the :ref:`extension `, if any, from ````. + +.. _REPLACE_EXTENSION: + +.. code-block:: cmake + + cmake_path(REPLACE_EXTENSION [LAST_ONLY] + [OUTPUT_VARIABLE ]) + +Replaces the :ref:`extension ` with ````. + + 1. If ```` has an :ref:`extension ` + (`HAS_EXTENSION`_ is true), it is removed. + 2. A ``dot`` character is appended to ````, if ```` is not + empty or does not begin with a ``dot`` character. + 3. ```` is appended as if `APPEND_STRING`_ was used. + + +Equivalent to the following: + + .. code-block:: cmake + + cmake_path(REMOVE_EXTENSION path) + if (NOT "input" MATCHES "^\\.") + cmake_path(APPEND_STRING path ".") + endif() + cmake_path(APPEND_STRING path "input"); + +Generation +^^^^^^^^^^ + +.. _NORMAL_PATH: + +.. code-block:: cmake + + cmake_path(NORMAL_PATH [OUTPUT_VARIABLE ]) + +Normalize ````. + +A path can be normalized by following this algorithm: + + 1. If the path is empty, stop (normal form of an empty path is an empty + path). + 2. Replace each ``directory-separator`` (which may consist of multiple + separators) with a single ``/``. + 3. Replace each ``directory-separator`` character in the ``root-name`` with + ``/``. + 4. Remove each ``dot`` and any immediately following ``directory-separator``. + 5. Remove each non-dot-dot filename immediately followed by a + ``directory-separator`` and a ``dot-dot``, along with any immediately + following ``directory-separator``. + 6. If there is ``root-directory``, remove all ``dot-dots`` and any + ``directory-separators`` immediately following them. + 7. If the last filename is ``dot-dot``, remove any trailing + ``directory-separator``. + 8. If the path is empty, add a ``dot`` (normal form of ``./`` is ``.``). + +.. _cmake_path-RELATIVE_PATH: +.. _RELATIVE_PATH: + +.. code-block:: cmake + + cmake_path(RELATIVE_PATH [BASE_DIRECTORY ] + [OUTPUT_VARIABLE ]) + +Returns ```` made relative to ``BASE_DIRECTORY`` argument. If +``BASE_DIRECTORY`` is not specified, the default base directory will be +:variable:`CMAKE_CURRENT_SOURCE_DIR`. + +For reference, the algorithm used to compute the relative path is described +`here `_. + +.. _ABSOLUTE_PATH: + +.. code-block:: cmake + + cmake_path(ABSOLUTE_PATH [BASE_DIRECTORY ] [NORMALIZE] + [OUTPUT_VARIABLE ]) + +If ```` is a relative path (`IS_RELATIVE`_ is true), it is evaluated +relative to the given base directory specified by ``BASE_DIRECTORY`` option. + +If ``BASE_DIRECTORY`` is not specifired, the default base directory will be +:variable:`CMAKE_CURRENT_SOURCE_DIR`. + +When ``NORMALIZE`` option is specified, the path is :ref:`normalized +` after the path computation. + +Because ``cmake_path`` does not access to the filesystem, symbolic links are +not resolved. To compute a real path, use :command:`file(REAL_PATH)` +command. + +Conversion +^^^^^^^^^^ + +.. _cmake_path-NATIVE_PATH: +.. _NATIVE_PATH: + +.. code-block:: cmake + + cmake_path(NATIVE_PATH [NORMALIZE] ) + +Converts a cmake-style ```` into a native +path with platform-specific slashes (``\`` on Windows and ``/`` elsewhere). + +When ``NORMALIZE`` option is specified, the path is :ref:`normalized +` before the conversion. + +.. _CONVERT: +.. _cmake_path-TO_CMAKE_PATH_LIST: +.. _TO_CMAKE_PATH_LIST: + +.. code-block:: cmake + + cmake_path(CONVERT TO_CMAKE_PATH_LIST [NORMALIZE]) + +Converts a native ```` path into cmake-style path with forward-slashes +(``/``). On Windows, the long filename marker is taken into account. The input +can be a single path or a system search path like ``$ENV{PATH}``. A search +path will be converted to a cmake-style list separated by ``;`` characters. The +result of the conversion is stored in the ```` variable. + +When ``NORMALIZE`` option is specified, the path is :ref:`normalized +` before the conversion. + +.. _cmake_path-TO_NATIVE_PATH_LIST: +.. _TO_NATIVE_PATH_LIST: + +.. code-block:: cmake + + cmake_path(CONVERT TO_NATIVE_PATH_LIST [NORMALIZE]) + +Converts a cmake-style ```` path into a native path with +platform-specific slashes (``\`` on Windows and ``/`` elsewhere). The input can +be a single path or a cmake-style list. A list will be converted into a native +search path. The result of the conversion is stored in the ```` +variable. + +When ``NORMALIZE`` option is specified, the path is :ref:`normalized +` before the conversion. + +For Example: + + .. code-block:: cmake + + set (paths "/a/b/c" "/x/y/z") + cmake_path (CONVERT "${paths}" TO_NATIVE_PATH_LIST native_paths) + message ("Native path list is \"${native_paths}\"") + + Will display, on Windows:: + + Native path list is "\a\b\c;\x\y\z" + + And on the all other systems:: + + Native path list is "/a/b/c:/x/y/z" + +Comparison +^^^^^^^^^^ + +.. _COMPARE: + +.. code-block:: cmake + + cmake_path(COMPARE EQUAL ) + cmake_path(COMPARE NOT_EQUAL ) + +Compares the lexical representations of the path and another path. + +For testing equality, the following algorithm (pseudo-code) apply: + + .. code-block:: cmake + + IF (NOT .root_name() STREQUAL .root_name()) + returns FALSE + ELSEIF (.has_root_directory() XOR .has_root_directory()) + returns FALSE + ENDIF() + + returns TRUE or FALSE if the relative portion of is + lexicographically equal or not to the relative portion of . + Comparison is performed path component-wise + +Query +^^^^^ + +.. _HAS_ROOT_NAME: + +.. code-block:: cmake + + cmake_path(HAS_ROOT_NAME ) + +Checks if ```` has ``root-name``. + +.. _HAS_ROOT_DIRECTORY: + +.. code-block:: cmake + + cmake_path(HAS_ROOT_DIRECTORY ) + +Checks if ```` has ``root-directory``. + +.. _HAS_ROOT_PATH: + +.. code-block:: cmake + + cmake_path(HAS_ROOT_PATH ) + +Checks if ```` has root path. + +Effectively, checks if ```` has ``root-name`` and ``root-directory``. + +.. _HAS_FILENAME: + +.. code-block:: cmake + + cmake_path(HAS_FILENAME ) + +Checks if ```` has a :ref:`filename `. + +.. _HAS_EXTENSION: + +.. code-block:: cmake + + cmake_path(HAS_EXTENSION ) + +Checks if ```` has an :ref:`extension `. If the first +character in the filename is a period, it is not treated as an extension (for +example ".profile"). + +.. _HAS_STEM: + +.. code-block:: cmake + + cmake_path(HAS_STEM ) + +Checks if ```` has stem (:ref:`GET ... STEM ` returns a non +empty path). + +.. _HAS_RELATIVE_PATH: + +.. code-block:: cmake + + cmake_path(HAS_RELATIVE_PATH ) + +Checks if ```` has relative path (`GET_RELATIVE_PATH`_ returns a +non-empty path). + +.. _HAS_PARENT_PATH: + +.. code-block:: cmake + + cmake_path(HAS_PARENT_PATH ) + +Checks if ```` has parent path. The result is true except if the path +is only composed of a :ref:`filename `. + +.. _IS_ABSOLUTE: + +.. code-block:: cmake + + cmake_path(IS_ABSOLUTE ) + +Checks if ```` is absolute. + +An absolute path is a path that unambiguously identifies the location of a file +without reference to an additional starting location. + +.. _IS_RELATIVE: + +.. code-block:: cmake + + cmake_path(IS_RELATIVE ) + +Checks if path is relative (i.e. not :ref:`absolute `). + +.. _IS_PREFIX: + +.. code-block:: cmake + + cmake_path(IS_PREFIX [NORMALIZE] ) + +Checks if ```` is the prefix of ````. + +When ``NORMALIZE`` option is specified, the paths are :ref:`normalized +` before the check. + +Hashing +^^^^^^^ + +.. _HASH: + +.. code-block:: cmake + + cmake_path(HASH [NORMALIZE] ) + +Compute hash value of ```` such that if for two paths (``p1`` and +``p2``) are equal (:ref:`COMPARE ... EQUAL `) then hash value of p1 is +equal to hash value of p2. + +When ``NORMALIZE`` option is specified, the paths are :ref:`normalized +` before the check. diff --git a/Help/command/cmake_policy.rst b/Help/command/cmake_policy.rst index 4bc7807bb1..94060d9b82 100644 --- a/Help/command/cmake_policy.rst +++ b/Help/command/cmake_policy.rst @@ -28,6 +28,9 @@ encourage projects to set policies based on CMake versions: cmake_policy(VERSION [...]) +.. versionadded:: 3.12 + The optional ```` version. + ```` and the optional ```` are each CMake versions of the form ``major.minor[.patch[.tweak]]``, and the ``...`` is literal. The ```` version must be at least ``2.4`` and at most the running version of CMake. diff --git a/Help/command/configure_file.rst b/Help/command/configure_file.rst index c59995ae2a..63ea84d1b3 100644 --- a/Help/command/configure_file.rst +++ b/Help/command/configure_file.rst @@ -6,8 +6,9 @@ Copy a file to another location and modify its contents. .. code-block:: cmake configure_file( + [FILE_PERMISSIONS ...] [COPYONLY] [ESCAPE_QUOTES] [@ONLY] - [NO_SOURCE_PERMISSIONS] + [NO_SOURCE_PERMISSIONS] [USE_SOURCE_PERMISSIONS] [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ]) Copies an ```` file to an ```` file and substitutes @@ -37,22 +38,24 @@ a false constant by the :command:`if` command. The "..." content on the line after the variable name, if any, is processed as above. Input file lines of the form ``#cmakedefine01 VAR`` will be replaced with either ``#define VAR 1`` or ``#define VAR 0`` similarly. -The result lines (with the exception of the ``#undef`` comments) can be -indented using spaces and/or tabs between the ``#`` character -and the ``cmakedefine`` or ``cmakedefine01`` words. This whitespace -indentation will be preserved in the output lines: -.. code-block:: c +.. versionadded:: 3.10 + The result lines (with the exception of the ``#undef`` comments) can be + indented using spaces and/or tabs between the ``#`` character + and the ``cmakedefine`` or ``cmakedefine01`` words. This whitespace + indentation will be preserved in the output lines: - # cmakedefine VAR - # cmakedefine01 VAR + .. code-block:: c -will be replaced, if ``VAR`` is defined, with + # cmakedefine VAR + # cmakedefine01 VAR -.. code-block:: c + will be replaced, if ``VAR`` is defined, with - # define VAR - # define VAR 1 + .. code-block:: c + + # define VAR + # define VAR 1 If the input file is modified the build system will re-run CMake to re-configure the file and generate the build system again. @@ -72,6 +75,9 @@ The arguments are: If the path names an existing directory the output file is placed in that directory with the same file name as the input file. +``FILE_PERMISSIONS ...`` + Use user provided permissions for the output file. + ``COPYONLY`` Copy the file without replacing any variable references or other content. This option may not be used with ``NEWLINE_STYLE``. @@ -84,10 +90,17 @@ The arguments are: This is useful for configuring scripts that use ``${VAR}`` syntax. ``NO_SOURCE_PERMISSIONS`` + .. versionadded:: 3.19 + Does not transfer the file permissions of the original file to the copy. The copied file permissions default to the standard 644 value (-rw-r--r--). +``USE_SOURCE_PERMISSIONS`` + .. versionadded:: 3.20 + + Transfer the file permissions of the original file to the output file. + ``NEWLINE_STYLE