/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
   file LICENSE.rst or https://cmake.org/licensing for details.  */

// Built-in cache variable documentation table.
//
// This file is hand-maintained.  Each entry's Summary is a one-line tooltip
// installed as the ``HELPSTRING`` of cache variables created via
// ``cmake -D <var>=<value>`` when the user did not supply one.
//
// Membership policy: this table is deliberately limited to variables that a
// user would plausibly set on the ``cmake`` command line when configuring a
// project.
//
// Maintenance discipline:
//   * Adding a new user-facing variable: hand-write one entry below in
//     ASCII sort order and make sure the corresponding
//     Help/variable/<NAME>.rst exists.
//   * Significantly rewording a Help/variable/<NAME>.rst that has an entry
//     here: review and update the corresponding Summary in the same change
//     so the tooltip and the manual stay in step.  CMake reviewers should
//     look for this co-evolution.
//   * Structural drift (typo in NAME, RST renamed or removed) is caught by
//     Tests/RunCMake/CacheVarHelpCoverage, which asserts that every entry
//     in this table has a matching Help/variable/<NAME>.rst.
//
// The Entry layout below (two lines per row, ``{ "NAME",\n    "summary" },``)
// is intentional: it keeps the table easy to diff, review, and hand-edit
// against the corresponding Help/variable/*.rst manuals.  clang-format is
// suppressed across the array so contributors can update one Summary
// without the formatter reflowing every neighbor.

#include "cmCacheDocumentationTable.h"

#include <algorithm>
#include <cstddef>
#include <iterator>
#include <string>

#include <cm/string_view>
#include <cmext/string_view>

#include "cmCachePatternTable.h"

namespace {

using cmCacheDocumentationTable::Entry;

// The entries are sorted by Name in ASCII order so that std::lower_bound
// can locate a variable in O(log N) time without any runtime indexing
// structure.  The testCacheDocumentationTable regression test in
// Tests/CMakeLib verifies this invariant.
/* clang-format off */
Entry const kEntries[] = {
  { "BUILD_SHARED_LIBS"_s,
    "Global default for the library type used by add_library() when no STATIC/SHARED keyword is given: SHARED if true, STATIC otherwise. Not defined by CMake itself; commonly exposed as an option() by projects."_s },
  { "BUILD_TESTING"_s,
    "Control whether the CTest module invokes enable_testing()"_s },
  { "CMAKE_ADD_CUSTOM_COMMAND_DEPENDS_EXPLICIT_ONLY"_s,
    "Enable DEPENDS_EXPLICIT_ONLY option by default for add_custom_command()"_s },
  { "CMAKE_ADSP_ROOT"_s,
    "When cross-compiling for ADSP SHARC/Blackfin, this variable holds the absolute path to the root install directory of the CCES or VDSP++ toolchain."_s },
  { "CMAKE_AIX_EXPORT_ALL_SYMBOLS"_s,
    "Default value for AIX_EXPORT_ALL_SYMBOLS target property"_s },
  { "CMAKE_AIX_SHARED_LIBRARY_ARCHIVE"_s,
    "Enable or disable creation of shared library archives"_s },
  { "CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS"_s,
    "Default value for ANDROID_ANT_ADDITIONAL_OPTIONS target property"_s },
  { "CMAKE_ANDROID_API"_s,
    "When cross-compiling for Android with NVIDIA Nsight Tegra Visual Studio Edition, sets the default for the ANDROID_API target property. In other Android builds, initializes CMAKE_SYSTEM_VERSION if not already set."_s },
  { "CMAKE_ANDROID_API_MIN"_s,
    "Default minimum Android API level for targets"_s },
  { "CMAKE_ANDROID_ARCH"_s,
    "When cross-compiling for Android with NVIDIA Nsight Tegra Visual Studio Edition, sets the default for the ANDROID_ARCH target property. Otherwise, the architecture name (arm, arm64, x86, x86_64) corresponding to CMAKE_ANDROID_ARCH_ABI."_s },
  { "CMAKE_ANDROID_ARCH_ABI"_s,
    "When cross-compiling for Android, this variable specifies the target architecture and ABI (arm64-v8a, armeabi-v7a, x86, x86_64, etc.)."_s },
  { "CMAKE_ANDROID_ARM_MODE"_s,
    "When cross-compiling for Android with armeabi architecture, set to ON to target 32-bit ARM (-marm) instead of the default 16-bit Thumb."_s },
  { "CMAKE_ANDROID_ARM_NEON"_s,
    "When Cross Compiling for Android and CMAKE_ANDROID_ARCH_ABI is set to armeabi-v7a set CMAKE_ANDROID_ARM_NEON to ON to target ARM NEON devices."_s },
  { "CMAKE_ANDROID_ASSETS_DIRECTORIES"_s,
    "Default value for ANDROID_ASSETS_DIRECTORIES target property"_s },
  { "CMAKE_ANDROID_EXCEPTIONS"_s,
    "Specify whether C++ exceptions are enabled in Android NDK builds"_s },
  { "CMAKE_ANDROID_GUI"_s,
    "Default value for ANDROID_GUI target property of executables"_s },
  { "CMAKE_ANDROID_JAR_DEPENDENCIES"_s,
    "Default value for ANDROID_JAR_DEPENDENCIES target property"_s },
  { "CMAKE_ANDROID_JAR_DIRECTORIES"_s,
    "Default value for ANDROID_JAR_DIRECTORIES target property"_s },
  { "CMAKE_ANDROID_JAVA_SOURCE_DIR"_s,
    "Default value for ANDROID_JAVA_SOURCE_DIR target property"_s },
  { "CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES"_s,
    "Default value for ANDROID_NATIVE_LIB_DEPENDENCIES target property"_s },
  { "CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES"_s,
    "Default value for ANDROID_NATIVE_LIB_DIRECTORIES target property"_s },
  { "CMAKE_ANDROID_NDK"_s,
    "When Cross Compiling for Android with the NDK, this variable holds the absolute path to the root directory of the NDK. The directory must contain a platforms subdirectory holding the android-<api> directories."_s },
  { "CMAKE_ANDROID_NDK_DEPRECATED_HEADERS"_s,
    "When cross-compiling for Android with the NDK, specify whether to use deprecated per-api-level headers instead of the unified headers."_s },
  { "CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION"_s,
    "When cross-compiling for Android with the NDK, specify the toolchain version (clang on r19+, or GCC/Clang version on r18-); default selects latest available GCC."_s },
  { "CMAKE_ANDROID_PROCESS_MAX"_s,
    "Default value for ANDROID_PROCESS_MAX target property"_s },
  { "CMAKE_ANDROID_PROGUARD"_s,
    "Default value for ANDROID_PROGUARD target property"_s },
  { "CMAKE_ANDROID_PROGUARD_CONFIG_PATH"_s,
    "Default value for ProGuard config file location on Android targets"_s },
  { "CMAKE_ANDROID_RTTI"_s,
    "Enable RTTI for Android NDK cross compilation"_s },
  { "CMAKE_ANDROID_SECURE_PROPS_PATH"_s,
    "Default value for Android secure properties file location"_s },
  { "CMAKE_ANDROID_SKIP_ANT_STEP"_s,
    "Default value for skipping Ant build step for Android targets"_s },
  { "CMAKE_ANDROID_STANDALONE_TOOLCHAIN"_s,
    "When Cross Compiling for Android with a Standalone Toolchain, this variable holds the absolute path to the root directory of the toolchain. The specified directory must contain a sysroot subdirectory."_s },
  { "CMAKE_ANDROID_STL_TYPE"_s,
    "For Android with Tegra, sets default ANDROID_STL_TYPE target property; for NDK, selects STL variant (none, system, gabi++, gnustl, c++, stlport); default is gnustl_static or c++_static."_s },
  { "CMAKE_APPBUNDLE_PATH"_s,
    "Search path for macOS application bundles used by find_program() and find_package()"_s },
  { "CMAKE_APPLE_SILICON_PROCESSOR"_s,
    "On Apple Silicon macOS hosts, set to arm64 or x86_64 to specify CMAKE_HOST_SYSTEM_PROCESSOR; user cache entry only, never modified by project code."_s },
  { "CMAKE_ARCHIVE_OUTPUT_DIRECTORY"_s,
    "Default output directory for archive target files"_s },
  { "CMAKE_AUTOGEN_BETTER_GRAPH_MULTI_CONFIG"_s,
    "Enable better dependency graph for multi-config autogen targets"_s },
  { "CMAKE_AUTOGEN_COMMAND_LINE_LENGTH_MAX"_s,
    "Limit for autogen command line length triggering response file use on Windows"_s },
  { "CMAKE_AUTOGEN_INTERMEDIATE_DIR_STRATEGY"_s,
    "Strategy for autogen intermediate directories: FULL (pattern-based) or SHORT (hash-based)"_s },
  { "CMAKE_AUTOGEN_ORIGIN_DEPENDS"_s,
    "Forward origin target dependencies to autogen targets"_s },
  { "CMAKE_AUTOGEN_PARALLEL"_s,
    "Number of parallel moc/uic processes for autogen targets"_s },
  { "CMAKE_AUTOGEN_USE_SYSTEM_INCLUDE"_s,
    "Add autogen include directory as system include to targets"_s },
  { "CMAKE_AUTOGEN_VERBOSE"_s,
    "Sets verbosity of AUTOMOC/AUTOUIC/AUTORCC generators; positive integer or true boolean enables extra output."_s },
  { "CMAKE_AUTOMOC"_s,
    "Whether to handle Qt moc automatically for targets"_s },
  { "CMAKE_AUTOMOC_COMPILER_PREDEFINES"_s,
    "Whether to generate compiler predefines for moc"_s },
  { "CMAKE_AUTOMOC_DEPEND_FILTERS"_s,
    "Filter definitions for extracting additional dependencies for moc"_s },
  { "CMAKE_AUTOMOC_EXECUTABLE"_s,
    "Path to moc executable for AUTOMOC"_s },
  { "CMAKE_AUTOMOC_INCLUDE_DIRECTORIES"_s,
    "Include directories for AUTOMOC to pass to moc."_s },
  { "CMAKE_AUTOMOC_MACRO_NAMES"_s,
    "Macro names used by AUTOMOC to determine if a file needs moc processing."_s },
  { "CMAKE_AUTOMOC_MOC_OPTIONS"_s,
    "Additional options for moc when using CMAKE_AUTOMOC."_s },
  { "CMAKE_AUTOMOC_PATH_PREFIX"_s,
    "Generate -p path prefix option for moc on AUTOMOC targets."_s },
  { "CMAKE_AUTORCC"_s,
    "Whether to handle rcc automatically for Qt targets."_s },
  { "CMAKE_AUTORCC_EXECUTABLE"_s,
    "Custom rcc executable path for AUTORCC."_s },
  { "CMAKE_AUTORCC_OPTIONS"_s,
    "Additional options for rcc when using CMAKE_AUTORCC."_s },
  { "CMAKE_AUTOUIC"_s,
    "Whether to handle uic automatically for Qt targets."_s },
  { "CMAKE_AUTOUIC_EXECUTABLE"_s,
    "Custom uic executable path for AUTOUIC."_s },
  { "CMAKE_AUTOUIC_OPTIONS"_s,
    "Additional options for uic when using CMAKE_AUTOUIC."_s },
  { "CMAKE_AUTOUIC_SEARCH_PATHS"_s,
    "Search paths for AUTOUIC to find included .ui files."_s },
  { "CMAKE_BUILD_RPATH"_s,
    "Runtime path (RPATH) entries to add to binaries in the build tree."_s },
  { "CMAKE_BUILD_RPATH_USE_ORIGIN"_s,
    "Whether to use relative paths for the build RPATH."_s },
  { "CMAKE_BUILD_TYPE"_s,
    "Build type for single-configuration generators (Makefile Generators, Ninja, etc.). Typical values: Debug, Release, RelWithDebInfo, MinSizeRel; custom build types may also be defined."_s },
  { "CMAKE_BUILD_WITH_INSTALL_NAME_DIR"_s,
    "Whether to use INSTALL_NAME_DIR on targets in the build tree."_s },
  { "CMAKE_BUILD_WITH_INSTALL_RPATH"_s,
    "Build with install RPATH instead of requiring relinking."_s },
  { "CMAKE_CLANG_VFS_OVERLAY"_s,
    "Absolute path to clang virtual file system YAML file for Windows clang-cl cross-compilation"_s },
  { "CMAKE_CODEBLOCKS_COMPILER_ID"_s,
    "Compiler ID in generated CodeBlocks project files; auto-detected if empty"_s },
  { "CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES"_s,
    "Exclude files outside project root from CodeBlocks project files"_s },
  { "CMAKE_CODELITE_USE_TARGETS"_s,
    "Generate CodeLite project files based on targets rather than projects"_s },
  { "CMAKE_COLOR_DIAGNOSTICS"_s,
    "Enable color diagnostics in compiler and build system output"_s },
  { "CMAKE_COLOR_MAKEFILE"_s,
    "Enable color output when using Makefile generators"_s },
  { "CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY"_s,
    "Directory for compiler-generated .pdb debug symbol files"_s },
  { "CMAKE_COMPILE_WARNING_AS_ERROR"_s,
    "Specify whether to treat warnings on compile as errors. This variable is used to initialize the COMPILE_WARNING_AS_ERROR property on all the targets."_s },
  { "CMAKE_CONFIGURATION_TYPES"_s,
    "Semicolon-separated list of available build types for multi-config generators (Visual Studio, Xcode, Ninja Multi-Config). Typical entries: Debug, Release, RelWithDebInfo, MinSizeRel; custom entries may also be defined."_s },
  { "CMAKE_CROSSCOMPILING"_s,
    "Set to true by CMake when cross compiling (if CMAKE_SYSTEM_NAME is manually set). Not recommended for Apple device builds due to SDK-based target selection."_s },
  { "CMAKE_CROSS_CONFIGS"_s,
    "Semicolon-separated list of configurations for Ninja Multi-Config cross-config mode"_s },
  { "CMAKE_CTEST_ARGUMENTS"_s,
    "Command-line arguments to pass to ctest when running tests"_s },
  { "CMAKE_CUDA_ARCHITECTURES"_s,
    "Default GPU architectures for CUDA compilation"_s },
  { "CMAKE_CUDA_EXTENSIONS"_s,
    "Default value for CUDA_EXTENSIONS target property if set when a target is created. See the cmake-compile-features(7) manual for information on compile features and a list of supported compilers."_s },
  { "CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS"_s,
    "Default value for CUDA_RESOLVE_DEVICE_SYMBOLS target property"_s },
  { "CMAKE_CUDA_RUNTIME_LIBRARY"_s,
    "Select CUDA runtime library for compiling and linking CUDA code"_s },
  { "CMAKE_CUDA_SEPARABLE_COMPILATION"_s,
    "Default value for CUDA_SEPARABLE_COMPILATION target property"_s },
  { "CMAKE_CUDA_STANDARD"_s,
    "Default value for CUDA_STANDARD target property if set when a target is created. See the cmake-compile-features(7) manual for information on compile features and a list of supported compilers."_s },
  { "CMAKE_CUDA_STANDARD_REQUIRED"_s,
    "Default value for CUDA_STANDARD_REQUIRED target property if set when a target is created. See the cmake-compile-features(7) manual for information on compile features and a list of supported compilers."_s },
  { "CMAKE_CXX_EXTENSIONS"_s,
    "Default value for CXX_EXTENSIONS target property if set when a target is created. See the cmake-compile-features(7) manual for information on compile features and a list of supported compilers."_s },
  { "CMAKE_CXX_MODULE_STD"_s,
    "Whether to add utility targets as dependencies for C++23 targets"_s },
  { "CMAKE_CXX_SCAN_FOR_MODULES"_s,
    "Whether to scan C++ source files for module dependencies"_s },
  { "CMAKE_CXX_STANDARD"_s,
    "Default value used to initialize the CXX_STANDARD target property when a target is created. See the cmake-compile-features(7) manual for the list of supported standards and compilers."_s },
  { "CMAKE_CXX_STANDARD_REQUIRED"_s,
    "Default value for CXX_STANDARD_REQUIRED target property if set when a target is created. See the cmake-compile-features(7) manual for information on compile features and a list of supported compilers."_s },
  { "CMAKE_C_EXTENSIONS"_s,
    "Default value for C_EXTENSIONS target property if set when a target is created. See the cmake-compile-features(7) manual for information on compile features and a list of supported compilers."_s },
  { "CMAKE_C_STANDARD"_s,
    "Default value used to initialize the C_STANDARD target property when a target is created. See the cmake-compile-features(7) manual for the list of supported standards and compilers."_s },
  { "CMAKE_C_STANDARD_REQUIRED"_s,
    "Default value for C_STANDARD_REQUIRED target property if set when a target is created. See the cmake-compile-features(7) manual for information on compile features and a list of supported compilers."_s },
  { "CMAKE_DEBUGGER_WORKING_DIRECTORY"_s,
    "Working directory for debugger when launching targets"_s },
  { "CMAKE_DEBUG_TARGET_PROPERTIES"_s,
    "Enables debug output for target properties by listing which properties to trace when evaluating targets."_s },
  { "CMAKE_DEFAULT_BUILD_TYPE"_s,
    "Default configuration to use in build.ninja for Ninja Multi-Config"_s },
  { "CMAKE_DEFAULT_CONFIGS"_s,
    "Default configurations to build for targets without :Config suffix"_s },
  { "CMAKE_DEPENDS_IN_PROJECT_ONLY"_s,
    "Only consider dependencies within project source and binary directories"_s },
  { "CMAKE_DEPENDS_USE_COMPILER"_s,
    "Set FALSE to use CMake for dependency discovery instead of compiler"_s },
  { "CMAKE_DISABLE_PRECOMPILE_HEADERS"_s,
    "Default value for disabling precompiled headers on all targets"_s },
  { "CMAKE_DLL_NAME_WITH_SOVERSION"_s,
    "Whether to include soversion in DLL names on Windows platform"_s },
  { "CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES"_s,
    "Generate linked resources in Eclipse project generator output"_s },
  { "CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT"_s,
    "Generate Eclipse project in source directory for version control integration"_s },
  { "CMAKE_ECLIPSE_RESOURCE_ENCODING"_s,
    "Set the resource encoding in Eclipse CDT4 project generator."_s },
  { "CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION"_s,
    "Error when cmake_install.cmake encounters absolute INSTALL DESTINATION."_s },
  { "CMAKE_EXECUTABLE_ENABLE_EXPORTS"_s,
    "Specify whether executables export symbols for loadable modules"_s },
  { "CMAKE_EXECUTE_PROCESS_COMMAND_ECHO"_s,
    "Print commands in execute_process() calls to STDERR, STDOUT, or NONE."_s },
  { "CMAKE_EXECUTE_PROCESS_COMMAND_ERROR_IS_FATAL"_s,
    "Default for execute_process() COMMAND_ERROR_IS_FATAL option."_s },
  { "CMAKE_EXE_LINKER_FLAGS"_s,
    "Linker flags to be used to create executables"_s },
  { "CMAKE_EXPORT_BUILD_DATABASE"_s,
    "Experimental; gated by CMAKE_EXPERIMENTAL_EXPORT_BUILD_DATABASE. Enables build_database.json with C++ module compile commands."_s },
  { "CMAKE_EXPORT_COMPILE_COMMANDS"_s,
    "Enable output of a compile_commands.json file listing the exact compiler invocation for each translation unit. Implemented by the Makefile and Ninja generators; ignored elsewhere."_s },
  { "CMAKE_EXPORT_NO_PACKAGE_REGISTRY"_s,
    "Disable the export(PACKAGE) command from writing to the user package registry when CMP0090 is not set to NEW."_s },
  { "CMAKE_EXPORT_PACKAGE_REGISTRY"_s,
    "Enable the export(PACKAGE) command to write to the user package registry when CMP0090 is set to NEW."_s },
  { "CMAKE_EXPORT_SARIF"_s,
    "Enable CMake diagnostics output in SARIF format, written to .cmake/sarif/cmake.sarif by default or to path specified by cmake --sarif-output."_s },
  { "CMAKE_FIND_APPBUNDLE"_s,
    "Control how find_*() commands select macOS Application Bundles."_s },
  { "CMAKE_FIND_DEBUG_MODE"_s,
    "Print debug information for find_program, find_library, find_file, find_path, and find_package to stderr. Output is human-readable, not machine-parseable."_s },
  { "CMAKE_FIND_FRAMEWORK"_s,
    "Control how find_*() commands select macOS Frameworks."_s },
  { "CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX"_s,
    "Suffix to search in lib<suffix> directories before lib in find_library()."_s },
  { "CMAKE_FIND_NO_INSTALL_PREFIX"_s,
    "Exclude CMAKE_INSTALL_PREFIX from CMAKE_SYSTEM_PREFIX_PATH."_s },
  { "CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY"_s,
    "DEPRECATED: Use CMAKE_FIND_USE_PACKAGE_REGISTRY instead. When unset, find_package uses User Package Registry unless disabled. Ignored if CMAKE_FIND_USE_PACKAGE_REGISTRY is set."_s },
  { "CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY"_s,
    "DEPRECATED: Use CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY instead. When unset, find_package uses System Package Registry unless disabled. Ignored if CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY is set."_s },
  { "CMAKE_FIND_PACKAGE_PREFER_CONFIG"_s,
    "Prefer find_package() Config mode over Module mode."_s },
  { "CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS"_s,
    "Resolve symbolic links in <PackageName>_DIR during find_package() lookups."_s },
  { "CMAKE_FIND_PACKAGE_TARGETS_GLOBAL"_s,
    "Promote IMPORTED targets found by find_package() to GLOBAL scope."_s },
  { "CMAKE_FIND_PACKAGE_WARN_NO_MODULE"_s,
    "Warn when find_package() implicitly assumes Config mode."_s },
  { "CMAKE_FIND_ROOT_PATH"_s,
    "Semicolon-separated list of alternative filesystem roots searched by find_package(), find_library(), and the other find_*() commands. Most useful when cross-compiling."_s },
  { "CMAKE_FIND_ROOT_PATH_MODE_INCLUDE"_s,
    "Control whether CMAKE_FIND_ROOT_PATH is used by find_file/find_path"_s },
  { "CMAKE_FIND_ROOT_PATH_MODE_LIBRARY"_s,
    "Control whether CMAKE_FIND_ROOT_PATH is used by find_library"_s },
  { "CMAKE_FIND_ROOT_PATH_MODE_PACKAGE"_s,
    "Control whether CMAKE_FIND_ROOT_PATH is used by find_package"_s },
  { "CMAKE_FIND_ROOT_PATH_MODE_PROGRAM"_s,
    "Control whether CMAKE_FIND_ROOT_PATH is used by find_program"_s },
  { "CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH"_s,
    "Controls whether find commands search cmake-specific environment variables"_s },
  { "CMAKE_FIND_USE_CMAKE_PATH"_s,
    "Controls whether find commands search cmake-specific cache variables"_s },
  { "CMAKE_FIND_USE_CMAKE_SYSTEM_PATH"_s,
    "Controls whether find commands search platform-specific cmake variables"_s },
  { "CMAKE_FIND_USE_INSTALL_PREFIX"_s,
    "Controls whether find commands search CMAKE_INSTALL_PREFIX locations"_s },
  { "CMAKE_FIND_USE_PACKAGE_REGISTRY"_s,
    "Controls whether find_package searches the User Package Registry; takes precedence over the deprecated CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY variable."_s },
  { "CMAKE_FIND_USE_PACKAGE_ROOT_PATH"_s,
    "Controls whether find commands search <PackageName>_ROOT variables"_s },
  { "CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH"_s,
    "Controls whether find commands search system environment variables"_s },
  { "CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY"_s,
    "Controls whether find_package searches the System Package Registry"_s },
  { "CMAKE_FOLDER"_s,
    "Set the folder name to organize targets in an IDE"_s },
  { "CMAKE_FRAMEWORK"_s,
    "Default value for FRAMEWORK target property"_s },
  { "CMAKE_FRAMEWORK_PATH"_s,
    "Semicolon-separated list of directories for macOS framework search path"_s },
  { "CMAKE_Fortran_FORMAT"_s,
    "Set to FIXED or FREE to indicate the Fortran source layout"_s },
  { "CMAKE_Fortran_MODULE_DIRECTORY"_s,
    "Fortran module output directory"_s },
  { "CMAKE_Fortran_PREPROCESS"_s,
    "Default value for Fortran_PREPROCESS target property"_s },
  { "CMAKE_GENERATOR_PLATFORM"_s,
    "Generator-specific target-platform name (set via cmake -A, cmake-gui, or the CMAKE_GENERATOR_PLATFORM environment variable). Used by Visual Studio and Green Hills MULTI; ignored by other generators. Not to be modified by project code."_s },
  { "CMAKE_GENERATOR_TOOLSET"_s,
    "Native-build-system toolset specification (set via cmake -T, cmake-gui, or the CMAKE_GENERATOR_TOOLSET environment variable). Used by Visual Studio, Xcode, and Green Hills MULTI; ignored by other generators. Not to be modified by project code."_s },
  { "CMAKE_GHS_NO_SOURCE_GROUP_FILE"_s,
    "ON/OFF boolean to control if project file for target is single or multiple"_s },
  { "CMAKE_GLOBAL_AUTOGEN_TARGET"_s,
    "Switch to enable generation of a global autogen target"_s },
  { "CMAKE_GLOBAL_AUTOGEN_TARGET_NAME"_s,
    "Change the name of the global autogen target"_s },
  { "CMAKE_GLOBAL_AUTORCC_TARGET"_s,
    "Switch to enable generation of a global autorcc target"_s },
  { "CMAKE_GLOBAL_AUTORCC_TARGET_NAME"_s,
    "Change the name of the global autorcc target"_s },
  { "CMAKE_GNUtoMS"_s,
    "Convert GNU import libraries (.dll.a) to MS format (.lib)"_s },
  { "CMAKE_HIP_ARCHITECTURES"_s,
    "List of GPU architectures for HIP device code generation; interpreted per CMAKE_HIP_PLATFORM"_s },
  { "CMAKE_HIP_EXTENSIONS"_s,
    "Default value for HIP_EXTENSIONS target property if set when a target is created. See the cmake-compile-features(7) manual for information on compile features and a list of supported compilers."_s },
  { "CMAKE_HIP_PLATFORM"_s,
    "GPU platform for HIP targets (amd, nvidia, or spirv)"_s },
  { "CMAKE_HIP_STANDARD"_s,
    "Default value for HIP_STANDARD target property if set when a target is created. See the cmake-compile-features(7) manual for information on compile features and a list of supported compilers."_s },
  { "CMAKE_HIP_STANDARD_REQUIRED"_s,
    "Default value for HIP_STANDARD_REQUIRED target property if set when a target is created. See the cmake-compile-features(7) manual for information on compile features and a list of supported compilers."_s },
  { "CMAKE_IGNORE_PATH"_s,
    "Semicolon-separated list of directories to ignore in find commands"_s },
  { "CMAKE_IGNORE_PREFIX_PATH"_s,
    "Semicolon-separated list of search prefixes to ignore in find commands"_s },
  { "CMAKE_INCLUDE_CURRENT_DIR"_s,
    "Automatically add CMAKE_CURRENT_SOURCE_DIR and CMAKE_CURRENT_BINARY_DIR to include path. Does not propagate to subdirectories. Defaults to OFF."_s },
  { "CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE"_s,
    "Automatically add CMAKE_CURRENT_SOURCE_DIR and CMAKE_CURRENT_BINARY_DIR to INTERFACE_INCLUDE_DIRECTORIES for libraries and executables. Defaults to OFF."_s },
  { "CMAKE_INCLUDE_DIRECTORIES_BEFORE"_s,
    "When ON, include_directories prepends instead of appending directories"_s },
  { "CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE"_s,
    "Force project include directories to appear first in compiler command lines"_s },
  { "CMAKE_INCLUDE_PATH"_s,
    "Semicolon-separated search path for find_file and find_path commands"_s },
  { "CMAKE_INSTALL_DEFAULT_COMPONENT_NAME"_s,
    "Default component name for install commands when COMPONENT argument is omitted"_s },
  { "CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS"_s,
    "Default permissions for directories created implicitly during installation"_s },
  { "CMAKE_INSTALL_EXPORTS_AS_PACKAGE_INFO"_s,
    "Experimental feature (requires CMAKE_EXPERIMENTAL_FIXME gate): directives to install package information when exported target info is installed via install(EXPORT)."_s },
  { "CMAKE_INSTALL_MESSAGE"_s,
    "Verbosity of installation messages: ALWAYS (default, shows Installing and Up-to-date), LAZY (only Installing), or NEVER (silent)."_s },
  { "CMAKE_INSTALL_NAME_DIR"_s,
    "Directory name for installed targets on Apple platforms"_s },
  { "CMAKE_INSTALL_OBJECT_NAME_STRATEGY"_s,
    "Strategy to use for naming installed object files"_s },
  { "CMAKE_INSTALL_OBJECT_ONLY_USE_DESTINATION"_s,
    "Controls whether install DESTINATION for object libraries uses subdirectories"_s },
  { "CMAKE_INSTALL_PREFIX"_s,
    "Install directory prepended to all install() destinations. Defaults to c:/Program Files/${PROJECT_NAME} on Windows and /usr/local on UNIX; may be overridden at install time via cmake --install --prefix."_s },
  { "CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH"_s,
    "Boolean controlling whether toolchain-defined rpaths are removed during install"_s },
  { "CMAKE_INSTALL_RPATH"_s,
    "Semicolon-separated list specifying rpath to use in installed targets"_s },
  { "CMAKE_INSTALL_RPATH_USE_LINK_PATH"_s,
    "If TRUE, append linker search and installed library paths to installed rpath"_s },
  { "CMAKE_INTERMEDIATE_DIR_STRATEGY"_s,
    "CMAKE_INTERMEDIATE_DIR_STRATEGY is a string cache variable specifying the strategy to use for target intermediate directories and their contents. The supported values are:"_s },
  { "CMAKE_INTERPROCEDURAL_OPTIMIZATION"_s,
    "Default value for INTERPROCEDURAL_OPTIMIZATION of targets"_s },
  { "CMAKE_IOS_INSTALL_COMBINED"_s,
    "This is deprecated. Default value for IOS_INSTALL_COMBINED of targets. This variable is used to initialize the IOS_INSTALL_COMBINED property on all the targets."_s },
  { "CMAKE_ISPC_HEADER_DIRECTORY"_s,
    "Default output directory for ISPC-generated headers"_s },
  { "CMAKE_ISPC_HEADER_SUFFIX"_s,
    "Output suffix for ISPC-generated headers"_s },
  { "CMAKE_ISPC_INSTRUCTION_SETS"_s,
    "Default instruction sets for ISPC compilation"_s },
  { "CMAKE_KATE_FILES_MODE"_s,
    "Kate project generator file mode (AUTO, SVN, GIT, HG, FOSSIL, or LIST)"_s },
  { "CMAKE_KATE_MAKE_ARGUMENTS"_s,
    "Arguments passed to make tool when Kate invokes build"_s },
  { "CMAKE_LIBRARY_OUTPUT_DIRECTORY"_s,
    "Where to put all LIBRARY target files when built"_s },
  { "CMAKE_LIBRARY_PATH"_s,
    "Semicolon-separated search path for find_library command"_s },
  { "CMAKE_LINKER_TYPE"_s,
    "Specify which linker to use for link steps; initialized on targets and used by try_compile()."_s },
  { "CMAKE_LINK_DEPENDS_NO_SHARED"_s,
    "Whether to skip link dependencies on shared library files"_s },
  { "CMAKE_LINK_DEPENDS_USE_LINKER"_s,
    "For Makefile/Ninja generators, whether linker generates link dependencies"_s },
  { "CMAKE_LINK_DIRECTORIES_BEFORE"_s,
    "Prepend directories by default in link_directories instead of appending"_s },
  { "CMAKE_LINK_INTERFACE_LIBRARIES"_s,
    "Default value for LINK_INTERFACE_LIBRARIES of targets"_s },
  { "CMAKE_LINK_LIBRARIES_ONLY_TARGETS"_s,
    "Enable check that all target-like items in target_link_libraries() are existing targets."_s },
  { "CMAKE_LINK_LIBRARIES_STRATEGY"_s,
    "Specify a strategy for ordering targets' link dependencies on linker command lines."_s },
  { "CMAKE_LINK_SEARCH_END_STATIC"_s,
    "End link line with static system libraries; use -Bstatic with compatible linkers."_s },
  { "CMAKE_LINK_SEARCH_START_STATIC"_s,
    "Assume linker looks for static libraries by default; use -Bstatic with compatible linkers."_s },
  { "CMAKE_LINK_WARNING_AS_ERROR"_s,
    "Specify whether to treat warnings on link as errors. This variable is used to initialize the LINK_WARNING_AS_ERROR property on all the targets."_s },
  { "CMAKE_LINK_WHAT_YOU_USE"_s,
    "Default value for LINK_WHAT_YOU_USE target property"_s },
  { "CMAKE_MACOSX_BUNDLE"_s,
    "Default value for MACOSX_BUNDLE target property"_s },
  { "CMAKE_MACOSX_RPATH"_s,
    "Whether to use rpaths on macOS and iOS"_s },
  { "CMAKE_MAKE_PROGRAM"_s,
    "Tool that can launch the native build system. The value may be the full path to an executable or just the tool name if it is expected to be in the PATH. The tool selected depends on the CMAKE_GENERATOR used to configure the project:"_s },
  { "CMAKE_MAXIMUM_RECURSION_DEPTH"_s,
    "Maximum recursion depth for CMake scripts"_s },
  { "CMAKE_MESSAGE_CONTEXT"_s,
    "List of context names prepended to message output when logging context enabled"_s },
  { "CMAKE_MESSAGE_CONTEXT_SHOW"_s,
    "Setting this variable to true enables showing a context with each line logged by message command (see CMAKE_MESSAGE_CONTEXT for how context is specified), as an alternative to cmake --log-context option."_s },
  { "CMAKE_MESSAGE_INDENT"_s,
    "Indentation strings prepended to message command output for NOTICE and below"_s },
  { "CMAKE_MESSAGE_LOG_LEVEL"_s,
    "When set, specifies the logging level used by message command with values same as cmake(1) --log-level option; command line option takes precedence if both are set."_s },
  { "CMAKE_MFC_FLAG"_s,
    "Use the MFC library for an executable or dll; enables Microsoft Foundation Classes (MFC); set to 1 for static library, 2 for shared; used in Visual Studio project files."_s },
  { "CMAKE_MODULE_LINKER_FLAGS"_s,
    "Linker flags to be used to create modules"_s },
  { "CMAKE_MODULE_PATH"_s,
    "Semicolon-separated list of directories searched for CMake modules by include() and find_package() before the modules shipped with CMake. Empty by default."_s },
  { "CMAKE_MSVCIDE_RUN_PATH"_s,
    "Extra PATH locations for executing add_custom_command or add_custom_target with Visual Studio Generators; allows running commands and dlls the IDE doesn't know about; initialized from CMAKE_MSVCIDE_RUN_PATH environment variable if set."_s },
  { "CMAKE_MSVC_DEBUG_INFORMATION_FORMAT"_s,
    "Select the MSVC debug information format targeting the MSVC ABI"_s },
  { "CMAKE_MSVC_RUNTIME_CHECKS"_s,
    "Select the list of enabled runtime checks when targeting MSVC ABI"_s },
  { "CMAKE_MSVC_RUNTIME_LIBRARY"_s,
    "Select the MSVC runtime library for use by compilers targeting MSVC ABI"_s },
  { "CMAKE_NINJA_OUTPUT_PATH_PREFIX"_s,
    "Tell Ninja Generators to add a prefix to every output path"_s },
  { "CMAKE_NO_BUILTIN_CHRPATH"_s,
    "Do not use builtin binary editor to fix runtime library search paths"_s },
  { "CMAKE_NO_SYSTEM_FROM_IMPORTED"_s,
    "Default value for NO_SYSTEM_FROM_IMPORTED target property"_s },
  { "CMAKE_OBJCXX_EXTENSIONS"_s,
    "Default value for OBJCXX_EXTENSIONS target property if set when a target is created. See the cmake-compile-features(7) manual for information on compile features and a list of supported compilers."_s },
  { "CMAKE_OBJCXX_STANDARD"_s,
    "Default value for OBJCXX_STANDARD target property if set when a target is created. See the cmake-compile-features(7) manual for information on compile features and a list of supported compilers."_s },
  { "CMAKE_OBJCXX_STANDARD_REQUIRED"_s,
    "Default value for OBJCXX_STANDARD_REQUIRED target property if set when a target is created. See the cmake-compile-features(7) manual for information on compile features and a list of supported compilers."_s },
  { "CMAKE_OBJC_EXTENSIONS"_s,
    "Default value for OBJC_EXTENSIONS target property if set when a target is created. See the cmake-compile-features(7) manual for information on compile features and a list of supported compilers."_s },
  { "CMAKE_OBJC_STANDARD"_s,
    "Default value for OBJC_STANDARD target property if set when a target is created. See the cmake-compile-features(7) manual for information on compile features and a list of supported compilers."_s },
  { "CMAKE_OBJC_STANDARD_REQUIRED"_s,
    "Default value for OBJC_STANDARD_REQUIRED target property if set when a target is created. See the cmake-compile-features(7) manual for information on compile features and a list of supported compilers."_s },
  { "CMAKE_OBJECT_PATH_MAX"_s,
    "Maximum object file full-path length allowed by native build tools; CMake hashes long paths to keep them under this limit."_s },
  { "CMAKE_OPTIMIZE_DEPENDENCIES"_s,
    "Initializes the OPTIMIZE_DEPENDENCIES target property"_s },
  { "CMAKE_OSX_ARCHITECTURES"_s,
    "Target architectures for macOS and iOS builds (e.g. x86_64;arm64). Initializes the OSX_ARCHITECTURES target property; if empty, the compiler's default architecture is used."_s },
  { "CMAKE_OSX_DEPLOYMENT_TARGET"_s,
    "Minimum macOS or iOS version on which the built binaries are to be deployed. Initialized from the MACOSX_DEPLOYMENT_TARGET environment variable when not set explicitly."_s },
  { "CMAKE_OSX_SYSROOT"_s,
    "Location or short name (e.g. macosx) of the macOS platform SDK passed to the compiler via -isysroot. Initialized from the SDKROOT environment variable; empty by default."_s },
  { "CMAKE_PCH_INSTANTIATE_TEMPLATES"_s,
    "Initializes the PCH_INSTANTIATE_TEMPLATES target property"_s },
  { "CMAKE_PCH_WARN_INVALID"_s,
    "Initializes the PCH_WARN_INVALID target property"_s },
  { "CMAKE_PDB_OUTPUT_DIRECTORY"_s,
    "Output directory for MS debug symbol .pdb files generated by linker"_s },
  { "CMAKE_PKG_CONFIG_DISABLE_UNINSTALLED"_s,
    "Disable uninstalled package file priority in pkg-config searches"_s },
  { "CMAKE_PKG_CONFIG_PC_LIB_DIRS"_s,
    "Primary search paths for pkg-config package files"_s },
  { "CMAKE_PKG_CONFIG_PC_PATH"_s,
    "Supplementary search paths for pkg-config package files"_s },
  { "CMAKE_PKG_CONFIG_SYSROOT_DIR"_s,
    "Path to prepend to -I include and -L library directories extracted by cmake_pkg_config command."_s },
  { "CMAKE_PKG_CONFIG_TOP_BUILD_DIR"_s,
    "Path to derive pc_top_builddir package variable by cmake_pkg_config command."_s },
  { "CMAKE_PLATFORM_NO_VERSIONED_SONAME"_s,
    "Disable version information on shared library targets on applicable platforms"_s },
  { "CMAKE_POLICY_VERSION_MINIMUM"_s,
    "Set minimum Policy Version for a project; for configuring third-party projects without modifying their code."_s },
  { "CMAKE_POSITION_INDEPENDENT_CODE"_s,
    "Default value used to initialize the POSITION_INDEPENDENT_CODE target property on targets that are not SHARED or MODULE libraries. SHARED and MODULE libraries always have PIC enabled."_s },
  { "CMAKE_PREFIX_PATH"_s,
    "Semicolon-separated list of installation prefixes searched by find_package(), find_program(), find_library(), find_file(), and find_path(). Empty by default; intended to be set by the project or the user."_s },
  { "CMAKE_PROGRAM_PATH"_s,
    "Semicolon-separated list of directories to search for programs with find_program command."_s },
  { "CMAKE_PROJECT_INCLUDE"_s,
    "CMake language file(s) to include as last step of project command calls for code injection without source modification."_s },
  { "CMAKE_PROJECT_INCLUDE_BEFORE"_s,
    "CMake language file(s) to include as first step of project command calls for code injection without source modification."_s },
  { "CMAKE_PROJECT_TOP_LEVEL_INCLUDES"_s,
    "Semicolon-separated list of CMake language files to include as part of the very first project() call."_s },
  { "CMAKE_RUNTIME_OUTPUT_DIRECTORY"_s,
    "Where to put all RUNTIME target files when built"_s },
  { "CMAKE_Rust_EDITION"_s,
    "Default Rust edition for Rust targets when created"_s },
  { "CMAKE_SHARED_LIBRARY_ENABLE_EXPORTS"_s,
    "Specify whether shared library generates an import file"_s },
  { "CMAKE_SHARED_LINKER_FLAGS"_s,
    "Linker flags to be used to create shared libraries"_s },
  { "CMAKE_SKIP_BUILD_RPATH"_s,
    "Do not include RPATHs in the build tree"_s },
  { "CMAKE_SKIP_INSTALL_ALL_DEPENDENCY"_s,
    "If true, install target does not depend on all target; installation proceeds independently of build status."_s },
  { "CMAKE_SKIP_INSTALL_RPATH"_s,
    "Do not include RPATHs in the install tree"_s },
  { "CMAKE_SKIP_LINTING"_s,
    "Default value for the SKIP_LINTING target property"_s },
  { "CMAKE_SKIP_TEST_ALL_DEPENDENCY"_s,
    "If true, test target does not depend on all target; test execution proceeds independently of build status."_s },
  { "CMAKE_STAGING_PREFIX"_s,
    "Install path to use when cross-compiling; also used as a search prefix by find_*() commands."_s },
  { "CMAKE_STATIC_LINKER_FLAGS"_s,
    "Flags to be used to create static libraries"_s },
  { "CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS"_s,
    "Semicolon-separated list of environment variables (var=value format) for Sublime Text 2 project generation."_s },
  { "CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE"_s,
    "If true, exclude build tree from Sublime Text 2 .sublime-project file if build tree is inside source tree."_s },
  { "CMAKE_SUPPRESS_REGENERATION"_s,
    "If true, CMake does not add special regeneration target or perform build system checks for source changes."_s },
  { "CMAKE_SYSROOT"_s,
    "Path passed to the compiler via --sysroot (when supported) and used as a prefix for find_*() searches. May only be set in a toolchain file (CMAKE_TOOLCHAIN_FILE)."_s },
  { "CMAKE_SYSTEM_NAME"_s,
    "Name of the operating system being targeted (e.g. Linux, Darwin, Windows). Defaults to CMAKE_HOST_SYSTEM_NAME; set explicitly when first configuring a build tree to enable cross-compiling."_s },
  { "CMAKE_SYSTEM_PROCESSOR"_s,
    "Target system processor; same as CMAKE_HOST_SYSTEM_PROCESSOR for non-cross-compiling, set explicitly in toolchain files."_s },
  { "CMAKE_SYSTEM_VERSION"_s,
    "Version of the target operating system. Defaults to CMAKE_HOST_SYSTEM_VERSION for host builds; must be set explicitly alongside CMAKE_SYSTEM_NAME when cross-compiling."_s },
  { "CMAKE_Swift_LANGUAGE_VERSION"_s,
    "Swift language version (defaults based on Xcode version if not set)"_s },
  { "CMAKE_TLS_CAINFO"_s,
    "Path to TLS CA certificate file for file(DOWNLOAD), file(UPLOAD), ExternalProject, and FetchContent"_s },
  { "CMAKE_TLS_VERIFY"_s,
    "Enable TLS verification for file(DOWNLOAD), file(UPLOAD), ExternalProject, and FetchContent"_s },
  { "CMAKE_TLS_VERSION"_s,
    "Minimum TLS version for file(DOWNLOAD), file(UPLOAD), ExternalProject, and FetchContent (see manual)"_s },
  { "CMAKE_TOOLCHAIN_FILE"_s,
    "Path to a CMake toolchain file, read early in the CMake run, that specifies the compilers, toolchain utilities, and target-platform information used when cross-compiling."_s },
  { "CMAKE_TRY_COMPILE_CONFIGURATION"_s,
    "Build configuration used for try_compile and try_run projects"_s },
  { "CMAKE_TRY_COMPILE_NO_PLATFORM_VARIABLES"_s,
    "Set to a true value to tell the try_compile command not to propagate any platform variables into the test project. The try_compile command normally passes some CMake variables that configure the platform and toolchain behavior into test projects. See policy CMP0137."_s },
  { "CMAKE_TRY_COMPILE_PLATFORM_VARIABLES"_s,
    "List of variables that the try_compile command source file signature must propagate into the test project in order to target the same platform as the host project. This variable should not be set by project code. It is meant to be set by CMake's platform information modules or by a toolchain file."_s },
  { "CMAKE_TRY_COMPILE_TARGET_TYPE"_s,
    "Type of target generated for try_compile calls using the source file signature. Valid values are EXECUTABLE (use add_executable, default) or STATIC_LIBRARY (use add_library with STATIC option to avoid linking)."_s },
  { "CMAKE_UNITY_BUILD"_s,
    "Enable batch compilation of multiple sources within targets"_s },
  { "CMAKE_UNITY_BUILD_BATCH_SIZE"_s,
    "Specifies default upper limit on number of source files combined in one unity source file"_s },
  { "CMAKE_UNITY_BUILD_RELOCATABLE"_s,
    "Enable relative paths in generated unity build source files"_s },
  { "CMAKE_UNITY_BUILD_UNIQUE_ID"_s,
    "Specify unique identifier name generated per file in unity build"_s },
  { "CMAKE_USER_MAKE_RULES_OVERRIDE"_s,
    "Specify a CMake file that overrides platform information. CMake loads the specified file while enabling support for each language from either the project or enable_language commands. It is loaded after CMake's builtin compiler and platform information modules have been loaded but before the information is used."_s },
  { "CMAKE_VERBOSE_MAKEFILE"_s,
    "Enable verbose output from Makefile builds, showing each command line as it is launched. Initialized to FALSE by the project() command; users may override per build tree."_s },
  { "CMAKE_VERIFY_INTERFACE_HEADER_SETS"_s,
    "Enable interface header set verification for targets"_s },
  { "CMAKE_VERIFY_PRIVATE_HEADER_SETS"_s,
    "Enable private header set verification for targets"_s },
  { "CMAKE_VISIBILITY_INLINES_HIDDEN"_s,
    "Default value for VISIBILITY_INLINES_HIDDEN target property"_s },
  { "CMAKE_VS_DEBUGGER_COMMAND"_s,
    "Initialize debugger command path for Visual Studio targets"_s },
  { "CMAKE_VS_DEBUGGER_COMMAND_ARGUMENTS"_s,
    "Initialize debugger command arguments for Visual Studio targets"_s },
  { "CMAKE_VS_DEBUGGER_ENVIRONMENT"_s,
    "Initialize debugger environment variables for Visual Studio targets"_s },
  { "CMAKE_VS_DEBUGGER_WORKING_DIRECTORY"_s,
    "Initialize debugger working directory for Visual Studio targets"_s },
  { "CMAKE_VS_GLOBALS"_s,
    "Set custom global Visual Studio properties on all targets"_s },
  { "CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD"_s,
    "Include INSTALL target in default Visual Studio build"_s },
  { "CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD"_s,
    "Include PACKAGE target in default Visual Studio build"_s },
  { "CMAKE_VS_JUST_MY_CODE_DEBUGGING"_s,
    "Enable Just My Code debugging with Visual Studio"_s },
  { "CMAKE_VS_NO_COMPILE_BATCHING"_s,
    "Disable compile batching for Visual Studio generator"_s },
  { "CMAKE_VS_NUGET_PACKAGE_RESTORE"_s,
    "Controls whether msbuild automatically restores NuGet packages before a build (Visual Studio Generators)"_s },
  { "CMAKE_VS_SDK_EXCLUDE_DIRECTORIES"_s,
    "Override Visual Studio default Exclude Directories"_s },
  { "CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES"_s,
    "Override Visual Studio default Executable Directories"_s },
  { "CMAKE_VS_SDK_INCLUDE_DIRECTORIES"_s,
    "Override Visual Studio default Include Directories"_s },
  { "CMAKE_VS_SDK_LIBRARY_DIRECTORIES"_s,
    "Override Visual Studio default Library Directories"_s },
  { "CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES"_s,
    "Override Visual Studio default Library WinRT Directories"_s },
  { "CMAKE_VS_SDK_REFERENCE_DIRECTORIES"_s,
    "Override Visual Studio default Reference Directories"_s },
  { "CMAKE_VS_SDK_SOURCE_DIRECTORIES"_s,
    "Override Visual Studio default Source Directories"_s },
  { "CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION"_s,
    "Visual Studio Windows Target Platform Version. CMake selects the Windows SDK version when targeting Windows 10 and above on VS 2015+."_s },
  { "CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION"_s,
    "Ask cmake_install.cmake script to warn when encountering files with absolute INSTALL DESTINATION"_s },
  { "CMAKE_WATCOM_RUNTIME_LIBRARY"_s,
    "Initialize WATCOM_RUNTIME_LIBRARY target property for all targets"_s },
  { "CMAKE_WIN32_EXECUTABLE"_s,
    "Default value for WIN32_EXECUTABLE target property"_s },
  { "CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS"_s,
    "Default value for WINDOWS_EXPORT_ALL_SYMBOLS target property"_s },
  { "CMAKE_XCODE_GENERATE_SCHEME"_s,
    "Enable generation of scheme files by the Xcode generator for analyze, archive, and test actions"_s },
  { "CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY"_s,
    "If enabled, Xcode generator produces a single project file instead of one per project() invocation"_s },
  { "CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER"_s,
    "Enable Address Sanitizer in the Diagnostics section of the generated Xcode scheme"_s },
  { "CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN"_s,
    "Enable detection of stack use-after-return in the Diagnostics section of the generated Xcode scheme"_s },
  { "CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING"_s,
    "Enable debugging when using document Versions Browser in the generated Xcode scheme."_s },
  { "CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER"_s,
    "Disable the Main Thread Checker in the Diagnostics section of the generated Xcode scheme."_s },
  { "CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS"_s,
    "Enable Dynamic Library Loads in the Diagnostics section of the generated Xcode scheme."_s },
  { "CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE"_s,
    "Enable Dynamic Linker API usage in the Diagnostics section of the generated Xcode scheme."_s },
  { "CMAKE_XCODE_SCHEME_ENABLE_GPU_API_VALIDATION"_s,
    "Populate Metal: API Validation in the Options section of the generated Xcode scheme."_s },
  { "CMAKE_XCODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE"_s,
    "Set GPU Frame Capture to Metal or Disabled in the Options section of the generated Xcode scheme."_s },
  { "CMAKE_XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION"_s,
    "Populate Metal: Shader Validation in the Options section of the generated Xcode scheme."_s },
  { "CMAKE_XCODE_SCHEME_ENVIRONMENT"_s,
    "Specify environment variables as MYVAR=value list to add to the Arguments section of the Xcode scheme."_s },
  { "CMAKE_XCODE_SCHEME_GUARD_MALLOC"_s,
    "Enable Guard Malloc in the Diagnostics section of the generated Xcode scheme."_s },
  { "CMAKE_XCODE_SCHEME_LAUNCH_CONFIGURATION"_s,
    "Set the build configuration to run the target in the generated Xcode scheme."_s },
  { "CMAKE_XCODE_SCHEME_LAUNCH_MODE"_s,
    "Populate Launch in the Info section of the generated Xcode scheme."_s },
  { "CMAKE_XCODE_SCHEME_LLDB_INIT_FILE"_s,
    "Populate LLDB Init File in the Info section of the generated Xcode scheme."_s },
  { "CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP"_s,
    "Enable Main Thread Checker pause-on-issues in the Diagnostics section of the Xcode scheme."_s },
  { "CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES"_s,
    "Enable Malloc Guard Edges in the Diagnostics section of the generated Xcode scheme."_s },
  { "CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE"_s,
    "Enable Malloc Scribble in the Diagnostics section of the generated Xcode scheme."_s },
  { "CMAKE_XCODE_SCHEME_MALLOC_STACK"_s,
    "Enable Malloc Stack diagnostics in the generated Xcode scheme."_s },
  { "CMAKE_XCODE_SCHEME_TEST_CONFIGURATION"_s,
    "Build configuration for testing targets in the Xcode scheme."_s },
  { "CMAKE_XCODE_SCHEME_THREAD_SANITIZER"_s,
    "Enable Thread Sanitizer diagnostics in the generated Xcode scheme."_s },
  { "CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP"_s,
    "Enable Thread Sanitizer pause-on-issues in the generated Xcode scheme."_s },
  { "CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER"_s,
    "Enable Undefined Behavior Sanitizer in the generated Xcode scheme."_s },
  { "CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP"_s,
    "Enable Undefined Behavior Sanitizer pause-on-issues in the generated Xcode scheme."_s },
  { "CMAKE_XCODE_SCHEME_WORKING_DIRECTORY"_s,
    "Working directory for Run and Profile actions in the Xcode scheme."_s },
  { "CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS"_s,
    "Enable Zombie Objects diagnostics in the generated Xcode scheme."_s },
  { "CMAKE_XCODE_XCCONFIG"_s,
    "If set, the Xcode generator will register the specified file as a global XCConfig file. For target-level XCConfig files see the XCODE_XCCONFIG target property."_s },
};
/* clang-format on */

} // namespace

cmCacheDocumentationTable::LookupResult cmCacheDocumentationTable::Get(
  cm::string_view varName)
{
  auto const* const first = std::begin(kEntries);
  auto const* const last = std::end(kEntries);
  auto const* const it = std::lower_bound(
    first, last, varName, [](Entry const& entry, cm::string_view target) {
      return entry.Name < target;
    });
  if (it != last && it->Name == varName) {
    return { it->Summary };
  }
  // Exact-match miss: fall back to the pattern table (CMAKE_<LANG>_FLAGS,
  // CMAKE_POLICY_DEFAULT_CMP<NNNN>, etc.).  Exact-match always wins by
  // construction; only on a miss do we consult the (small, linearly
  // scanned) pattern table.  See Source/cmCachePatternTable.{h,cxx} and
  // the testPatternMatch* cases in Tests/CMakeLib for the contract.
  return cmCachePatternTable::Match(varName);
}

cmCacheDocumentationTable::Entry const*
cmCacheDocumentationTable::EntriesBegin()
{
  return std::begin(kEntries);
}

cmCacheDocumentationTable::Entry const* cmCacheDocumentationTable::EntriesEnd()
{
  return std::end(kEntries);
}

std::size_t cmCacheDocumentationTable::EntriesSize()
{
  return static_cast<std::size_t>(std::end(kEntries) - std::begin(kEntries));
}
