Spec-Zone.ru › CMake 3.24

cmake(1)

Краткое описание

Generate a Project Buildsystem
 cmake [<options>] <path-to-source>
 cmake [<options>] <path-to-existing-build>
 cmake [<options>] -S <path-to-source> -B <path-to-build>

Build a Project
 cmake --build <dir> [<options>] [-- <build-tool-options>]

Install a Project
 cmake --install <dir> [<options>]

Open a Project
 cmake --open <dir>

Run a Script
 cmake [{-D <var>=<value>}...] -P <cmake-script-file>

Run a Command-Line Tool
 cmake -E <command> [<options>]

Run the Find-Package Tool
 cmake --find-package [<options>]

View Help
 cmake --help[-<topic>]

Описание

Исполняемый файл cmake — это командная строка генератора кроссплатформенной системы сборки CMake. В описании выше Краткое описание перечислены различные действия, которые может выполнять эта утилита, как описано в следующих разделах.

Для сборки проекта ПО с помощью CMake, сгенерируйте систему сборки проекта. Дополнительно используйте cmake для сборки проекта, установки проекта или просто запустите соответствующий инструмент сборки (например, make) непосредственно. cmake также можно использовать для просмотра справки.

Другие действия предназначены для использования разработчиками ПО, пишущими скрипты на языке CMake language для поддержки своих сборок.

Для графических пользовательских интерфейсов, которые могут быть использованы вместо cmake, см. ccmake и cmake-gui. Для интерфейсов командной строки для средств тестирования и упаковки CMake см. ctest и cpack.

Для получения дополнительной информации о CMake в целом см. см. также ссылки в конце данного руководства.

Введение в системы сборки CMake

Система сборки описывает, как сгенерировать исполняемые файлы и библиотеки проекта из исходного кода, используя инструмент сборки для автоматизации этого процесса. Например, система сборки может быть Makefile для использования с командной строкой make инструментом или файлом проекта для интегрированной среды разработки (IDE). Для того, чтобы избежать необходимости поддерживать несколько таких систем сборки, проект может абстрактно указать свою систему сборки, используя файлы, написанные на языке CMake language. Из этих файлов CMake генерирует предпочтительную систему сборки локально для каждого пользователя через бэкенд, называемый генератором.

Для генерации системы сборки с помощью CMake необходимо выбрать следующие параметры:

Дерево исходных файлов

Верхний каталог, содержащий исходные файлы, предоставленные проектом. Проект определяет свою систему сборки, используя файлы, как описано в руководстве cmake-language(7), начиная с файла верхнего уровня, названного CMakeLists.txt. Эти файлы определяют целевые сборки и их зависимости, как описано в руководстве cmake-buildsystem(7).

Дерево сборки

Верхний каталог, в котором хранятся файлы системы сборки и артефакты результатов сборки (например, исполняемые файлы и библиотеки). CMake запишет файл CMakeCache.txt для идентификации каталога как дерева сборки и сохранит постоянную информацию, такую как параметры конфигурации системы сборки.

Для сохранения чистого дерева исходных файлов выполните внеисходную сборку, используя отдельное выделенное дерево сборки. Внеисходная сборка, в которой дерево сборки размещается в том же каталоге, что и дерево исходных файлов, также поддерживается, но не рекомендуется.

Генератор

Это выбирает тип системы сборки, которую нужно сгенерировать. См. руководство cmake-generators(7) для документации по всем генераторам. Запустите cmake --help для просмотра списка доступных локально генераторов. Дополнительно используйте параметр -G ниже для указания генератора или просто примите значение по умолчанию, выбранное CMake для текущей платформы.

При использовании одного из генераторов инструмента сборки командной строки CMake ожидает, что среда, необходимая для инструментальной цепочки компилятора, уже настроена в оболочке. При использовании одного из генераторов инструмента сборки IDE никакой особой среды не требуется.

Генерация системы сборки проекта

Запустите CMake с одной из следующих команд для указания дерева исходных и дерева сборки и генерации системы сборки:

cmake [<options>] <path-to-source>

Использует текущий рабочий каталог в качестве дерева сборки, и <path-to-source> в качестве дерева исходных файлов. Указанный путь может быть абсолютным или относительным к текущему рабочему каталогу. Дерево исходных файлов должно содержать файл CMakeLists.txt и не должно содержать файл CMakeCache.txt , поскольку последний идентифицирует существующее дерево сборки. Например:

$ mkdir build ; cd build
$ cmake ../src
cmake [<options>] <path-to-existing-build>

Использует <path-to-existing-build> в качестве дерева сборки, и загружает путь к дереву исходных файлов из файла CMakeCache.txt , который должен быть сгенерирован предыдущим запуском CMake. Указанный путь может быть абсолютным или относительным к текущему рабочему каталогу. Например:

$ cd build
$ cmake .
cmake [<options>] -S <path-to-source> -B <path-to-build>

Использует <path-to-build> в качестве дерева сборки и <path-to-source> в качестве дерева исходных файлов. Указанные пути могут быть абсолютными или относительными к текущему рабочему каталогу. Дерево исходных файлов должно содержать файл CMakeLists.txt . Дерево сборки будет создано автоматически, если оно еще не существует. Например:

$ cmake -S src -B build

Во всех случаях может быть указан один или несколько из параметров ниже.

Вышеупомянутые стили для указания дерева исходных и дерева сборки могут быть смешаны. Пути, указанные с -S или -B , всегда классифицируются как дерево исходных или дерево сборки соответственно. Пути, указанные с обычными аргументами, классифицируются на основе их содержимого и типов путей, указанных ранее. Если указан только один тип пути, текущий рабочий каталог (cwd) используется для другого. Например:

Командная строка

Каталог исходных файлов

Каталог сборки

cmake src

src

cwd

cmake build (существующий)

loaded

build

cmake -S src

src

cwd

cmake -S src build

src

build

cmake -S src -B build

src

build

cmake -B build

cwd

build

cmake -B build src

src

build

cmake -B build -S src

src

build

Изменено в версии 3.23: CMake выводит предупреждение, когда задано несколько путей к исходным файлам. Это никогда официально не документировалось и не поддерживалось, но старые версии случайно принимали несколько путей к исходным файлам и использовали последний указанный путь. Избегайте передачи нескольких аргументов с путями к исходным файлам.

После генерации системы сборки можно использовать соответствующий родной инструмент сборки для сборки проекта. Например, после использования генератора Unix Makefiles можно запустить make непосредственно:

$ make
$ make install

В качестве альтернативы, можно использовать cmake для сборки проекта, автоматически выбирая и вызывая соответствующий родной инструмент сборки.

Параметры

-S <path-to-source>

Путь к корневой директории проекта CMake для сборки.

-B <path-to-build>

Путь к директории, которую CMake будет использовать как корень директории сборки.

Если директория ещё не существует, CMake её создаст.

-C <initial-cache>

Предварительная загрузка скрипта для заполнения кэша.

При первой же запуске CMake в пустой дереве сборки, он создаёт файл CMakeCache.txt и заполняет его настраиваемыми параметрами проекта. Этот параметр может быть использован для указания файла, из которого необходимо загрузить записи кэша перед первым проходом по файлам CMake проекта. Загруженные записи имеют приоритет над значениями по умолчанию проекта. Указанный файл должен быть скриптом CMake, содержащим команды set(), которые используют параметр CACHE , а не файл формата кэша.

Ссылки на CMAKE_SOURCE_DIR и CMAKE_BINARY_DIR в скрипте относятся к верхнему уровню дерева исходного кода и дерева сборки.

-D <var>:<type>=<value>, -D <var>=<value>

Создание или обновление записи CMake CACHE.

При первой же запуске CMake в пустой дереве сборки, он создаёт файл CMakeCache.txt и заполняет его настраиваемыми параметрами проекта. Этот параметр может быть использован для указания настройки, которая имеет приоритет над значением по умолчанию проекта. Этот параметр можно повторять для любого количества CACHE записей.

Если часть :<type> задана, она должна быть одного из типов, указанных в документации команды set() для её CACHE подписи. Если часть :<type> опущена, запись будет создана без типа, если она не существует с типом уже.

Если в проекте команда задаёт тип PATH или FILEPATH, то <value> будет преобразовано в абсолютный путь.

Этот параметр также может быть задан как один аргумент: -D<var>:<type>=<value> или -D<var>=<value>.

-U <globbing_expr>

Удаление совпадающих записей из кэша CMake CACHE.

Этот параметр может быть использован для удаления одной или нескольких переменных из файла CMakeCache.txt, поддерживаются выражения подстановки * и ?. Этот параметр можно повторять для любого количества CACHE записей.

Используйте с осторожностью, вы можете сделать ваш CMakeCache.txt неработоспособным.

-G <generator-name>

Указание генератора системы сборки.

CMake может поддерживать несколько систем сборки на определённых платформах. Генератор отвечает за генерацию конкретной системы сборки. Возможные имена генераторов указаны в руководстве cmake-generators(7).

Если не указано, CMake проверяет переменную среды CMAKE_GENERATOR и в противном случае использует встроенный выбор по умолчанию.

-T <toolset-spec>

Указание набора инструментов для генератора, если он поддерживается.

Некоторые генераторы CMake поддерживают указание набора инструментов, чтобы сообщить системе сборки, как выбрать компилятор. См. переменную CMAKE_GENERATOR_TOOLSET для получения подробностей.

-A <platform-name>

Указание имени платформы, если оно поддерживается генератором.

Некоторые генераторы CMake поддерживают имя платформы, которое передаётся в систему сборки для выбора компилятора или SDK. См. переменную CMAKE_GENERATOR_PLATFORM для получения подробностей.

--toolchain <path-to-file>

Указание файла инструментальной цепочки кросс-компиляции, эквивалентно установке переменной CMAKE_TOOLCHAIN_FILE.

--install-prefix <directory>

Указание каталога установки, используется переменной CMAKE_INSTALL_PREFIX. Должен быть абсолютным путём.

-Wno-dev

Отключить предупреждения разработчика.

Отключает предупреждения, предназначенные для автора файлов CMakeLists.txt. По умолчанию это также отключит предупреждения о устаревших функциях.

-Wdev

Включить предупреждения разработчика.

Включает предупреждения, предназначенные для автора файлов CMakeLists.txt. По умолчанию это также включит предупреждения о устаревших функциях.

-Werror=dev

Преобразовать предупреждения разработчика в ошибки.

Преобразует предупреждения, предназначенные для автора файлов CMakeLists.txt в ошибки. По умолчанию это также преобразует предупреждения о устаревших функциях в ошибки.

-Wno-error=dev

Преобразовать предупреждения разработчика не в ошибки.

Преобразует предупреждения, предназначенные для автора файлов CMakeLists.txt в не ошибки. По умолчанию это также отключит предупреждения о устаревших функциях как ошибки.

-Wdeprecated

Включить предупреждения об устаревших функциях.

Включает предупреждения об использовании устаревших функций, предназначенные для автора файлов CMakeLists.txt.

-Wno-deprecated

Отключить предупреждения об устаревших функциях.

Отключает предупреждения об использовании устаревших функций, предназначенные для автора файлов CMakeLists.txt.

-Werror=deprecated

Преобразовать предупреждения о устаревших макросах и функциях в ошибки.

Преобразует предупреждения об использовании устаревших макросов и функций, предназначенные для автора файлов CMakeLists.txt в ошибки.

-Wno-error=deprecated

Преобразовать предупреждения о устаревших макросах и функциях в не ошибки.

Преобразует предупреждения об использовании устаревших макросов и функций, предназначенные для автора файлов CMakeLists.txt в не ошибки.

--fresh

Новое в версии 3.24.

Выполнить свежую конфигурацию дерева сборки. Это удаляет любой существующий файл CMakeCache.txt и связанную директорию CMakeFiles/ и создаёт их заново.

-L[A][H]

Список не-расширенных переменных кэша.

Список переменных CACHE запустит CMake и выведет все переменные из кэша CMake CACHE, которые не помечены как INTERNAL или ADVANCED. Это эффективно отобразит текущие настройки CMake, которые затем могут быть изменены с помощью параметра -D . Изменение некоторых переменных может привести к созданию других переменных. Если A указано, то он также отобразит расширенные переменные. Если H указано, то он также отобразит справку для каждой переменной.

-N

Только режим просмотра.

Только загрузить кэш. Не запускать фактически шаги конфигурации и генерации.

--graphviz=[file]

Сгенерировать график зависимостей graphviz, см. CMakeGraphVizOptions для получения дополнительной информации.

Сгенерировать файл graphviz, содержащий все зависимости библиотек и исполняемых файлов в проекте. Подробную информацию см. в документации CMakeGraphVizOptions.

--system-information [file]

Вывести информацию об этой системе.

Вывести широкий спектр информации об текущей системе. Если запускается из вершины бинарного дерева для проекта CMake, он выведет дополнительную информацию, такую как кэш, файлы журналов и т.д.

--log-level=<ERROR|WARNING|NOTICE|STATUS|VERBOSE|DEBUG|TRACE>

Установить уровень журнала.

Команда message() выведет только сообщения указанного уровня журнала или выше. Уровень журнала по умолчанию STATUS.

Чтобы уровень журнала сохранялся между запусками CMake, установите CMAKE_MESSAGE_LOG_LEVEL как переменную кэша вместо этого. Если заданы оба параметра - командная строка и переменная - приоритет имеет параметр командной строки.

Для обеспечения обратной совместимости, --loglevel также принимается как синоним для этого параметра.

--log-context

Включить команду message() для вывода контекста, прикреплённого к каждому сообщению.

Этот параметр включает отображение контекста только для текущего запуска CMake. Чтобы отображение контекста сохранялось для всех последующих запусков CMake, установите CMAKE_MESSAGE_CONTEXT_SHOW как переменную кэша вместо этого. Когда задан этот параметр командной строки, CMAKE_MESSAGE_CONTEXT_SHOW игнорируется.

--debug-trycompile

Не удаляйте дерево сборки try_compile(). Полезно только для одной try_compile() за раз.

Не удаляйте файлы и каталоги, созданные для вызовов try_compile(). Это полезно при отладке неудачных try_compiles. Однако это может изменить результаты try-compiles, так как старые остатки от предыдущего try-compile могут привести к неправильному прохождению или провалу другого теста. Этот параметр лучше всего использовать для одного try-compile за раз и только при отладке.

--debug-output

Переведите cmake в режим отладки.

Выводите дополнительную информацию во время выполнения cmake, например, трассировки стека, с помощью вызовов message(SEND_ERROR).

--debug-find

Переведите команды поиска cmake в режим отладки.

Выводите дополнительную информацию о вызовах поиска во время выполнения cmake в стандартный поток ошибок. Вывод предназначен для чтения человеком, а не для парсинга. См. также переменную CMAKE_FIND_DEBUG_MODE для отладки более локальной части проекта.

--debug-find-pkg=<pkg>[,...]

Переведите команды поиска cmake в режим отладки при выполнении вызовов find_package(<pkg>), где <pkg> является элементом данного списка имён пакетов, разделённых запятыми и регистрозависимых.

Как --debug-find, но с ограничением на указанные пакеты.

--debug-find-var=<var>[,...]

Переведите команды поиска cmake в режим отладки, когда вызывается с <var> в качестве переменной результата, где <var> является элементом данного списка, разделённого запятыми.

Как --debug-find, но с ограничением на указанные имена переменных.

--trace

Переведите cmake в режим трассировки.

Выведите трассировку всех выполненных вызовов и их источников.

--trace-expand

Переведите cmake в режим трассировки.

Как --trace, но с раскрытыми переменными.

--trace-format=<format>

Переведите cmake в режим трассировки и задайте формат вывода трассировки.

<format> может принимать одно из следующих значений.

human

Выводит каждую строку трассировки в удобочитаемом формате. Это стандартный формат.

json-v1

Выводит каждую строку в виде отдельного JSON-документа. Каждый документ отделяется новой строкой ( \n ). Гарантируется, что внутри JSON-документа нет символов новой строки.

Формат трассировки в JSON:

{
  "file": "/full/path/to/the/CMake/file.txt",
  "line": 0,
  "cmd": "add_executable",
  "args": ["foo", "bar"],
  "time": 1579512535.9687231,
  "frame": 2,
  "global_frame": 4
}

Поля:

file

Полный путь к исходному файлу CMake, где была вызвана функция.

line

Строка в file , где начинается вызов функции.

line_end

Если вызов функции занимает несколько строк, это поле будет установлено в строку, где вызов функции заканчивается. Если вызов функции занимает одну строку, это поле будет отсутствовать. Это поле было добавлено в версии 2 json-v1 формата.

defer

Необязательное поле, присутствующее, когда вызов функции был отложен cmake_language(DEFER). Если оно присутствует, его значение — строка, содержащая отложенный вызов <id>.

cmd

Имя вызываемой функции.

args

Список строк всех параметров функции.

time

Отметка времени (секунды с начала эпохи) вызова функции.

frame

Глубина кадра стека вызываемой функции в контексте текущего обрабатываемого CMakeLists.txt.

global_frame

Глубина кадра стека вызываемой функции, отслеживаемая глобально по всем файлам CMakeLists.txt , участвующим в трассировке. Это поле было добавлено в версию 2 формата json-v1.

Кроме того, первый выводимый JSON-документ содержит поле version для текущей основной и дополнительной версии

Формат трассировки в JSON:

{
  "version": {
    "major": 1,
    "minor": 2
  }
}

Поля:

version

Указывает версию формата JSON. Версия имеет главную и дополнительную компоненты, следуя соглашениям о семантической версии.

--trace-source=<file>

Переведите cmake в режим трассировки, но выведите только строки из указанного файла.

Разрешены несколько вариантов.

--trace-redirect=<file>

Переведите cmake в режим трассировки и перенаправьте вывод трассировки в файл вместо стандартного потока ошибок.

--warn-uninitialized

Выводить предупреждения об инициализированных значениях.

Выводить предупреждение, когда используется неинициализированная переменная.

--warn-unused-vars

Ничего не делает. В версиях CMake 3.2 и ниже это включает предупреждения об unused переменных. В версиях CMake 3.3 до 3.18 параметр был нерабочий. В CMake 3.19 и выше параметр был удалён.

--no-warn-unused-cli

Не выводить предупреждения об параметрах командной строки.

Не искать переменные, объявленные в командной строке, но не используемые.

--check-system-vars

Найти проблемы с использованием переменных в системных файлах.

Обычно неиспользуемые и неинициализированные переменные ищутся только в CMAKE_SOURCE_DIR и CMAKE_BINARY_DIR. Этот флаг сообщает CMake искать предупреждения и в других файлах.

--compile-no-warning-as-error

Игнорировать свойство целевого объекта COMPILE_WARNING_AS_ERROR и переменную CMAKE_COMPILE_WARNING_AS_ERROR, предотвращая обработку предупреждений как ошибок при компиляции.

--profiling-output=<path>

Используется в сочетании с --profiling-format для вывода в заданный путь.

--profiling-format=<file>

Включить вывод профилирования данных скрипта CMake в заданном формате.

Это может помочь в анализе производительности исполняемых скриптов CMake. Для обработки вывода в удобочитаемый формат следует использовать сторонние приложения.

В настоящее время поддерживаются значения: google-trace Вывод в формате Google Trace, который может быть проанализирован с помощью вкладки «about:tracing» Google Chrome или с помощью плагина для инструмента, такого как Trace Compass.

--preset <preset>, --preset=<preset>

Считывает preset из <path-to-source>/CMakePresets.json и <path-to-source>/CMakeUserPresets.json. Пресет может указать генератор и каталог сборки, а также список переменных и других аргументов для передачи в CMake. Текущий рабочий каталог должен содержать файлы пресетов CMake. CMake GUI также может распознавать файлы CMakePresets.json и CMakeUserPresets.json . Подробности о этих файлах см. в cmake-presets(7).

Пресеты считываются перед всеми другими параметрами командной строки. Параметры, указанные в пресете (переменные, генератор и т. д.), могут быть переопределены указанием их вручную в командной строке. Например, если пресет задаёт переменную MYVAR со значением 1, но пользователь задаёт ей значение 2 с аргументом -D, то значение 2 будет предпочтительным.

--list-presets, --list-presets=<[configure | build | test | all]>

Отображает доступные пресеты. Если параметр не указан, отображаются только пресеты конфигурации. Текущий рабочий каталог должен содержать файлы пресетов CMake.

Сборка проекта

CMake предоставляет командную строку для сборки уже сгенерированного проекта бинарного дерева:

cmake --build <dir>             [<options>] [-- <build-tool-options>]
cmake --build --preset <preset> [<options>] [-- <build-tool-options>]

Это абстрагирует интерфейс командной строки родного инструмента сборки с помощью следующих параметров:

--build <dir>

Директория двоичных файлов проекта, подлежащая построению. Это обязательно (если не указан предустановленный набор параметров) и должно быть первым параметром.

--preset <preset>, --preset=<preset>

Используйте предустановленный набор параметров для задания параметров сборки. Директория двоичных файлов проекта определяется из ключа configurePreset. В текущей рабочей директории должны содержаться файлы предустановленных параметров CMake. Подробности см. в preset.

--list-presets

Перечисляет доступные предустановленные наборы параметров сборки. В текущей рабочей директории должны содержаться файлы предустановленных параметров CMake.

--parallel [<jobs>], -j [<jobs>]

Максимальное количество одновременных процессов, используемых при сборке. Если <jobs> опущено, используется значение по умолчанию для инструмента сборки.

Переменная среды CMAKE_BUILD_PARALLEL_LEVEL, если она задана, определяет уровень параллельности по умолчанию, когда этот параметр не указан.

Некоторые инструменты сборки всегда выполняют сборку параллельно. Использование <jobs> значения 1 может ограничить работу до одной задачи.

--target <tgt>..., -t <tgt>...

Сборка <tgt> вместо целевого объекта по умолчанию. Можно указать несколько целевых объектов, разделяя их пробелами.

--config <cfg>

Для инструментов с несколькими конфигурациями выберите конфигурацию <cfg>.

--clean-first

Сначала скомпилировать целевой объект clean, а затем выполнить сборку. (Для очистки только используйте --target clean).

--resolve-package-references=<on|off|only>

Новое в версии 3.23.

Разрешить ссылки на удаленные пакеты из внешних менеджеров пакетов (например, NuGet) перед сборкой. При установке в значение on (по умолчанию) пакеты будут восстановлены перед сборкой целевого объекта. При установке в значение only, пакеты будут восстановлены, но сборка не будет выполнена. При установке в значение off, пакеты не будут восстановлены.

Если целевой объект не определяет никаких ссылок на пакеты, этот параметр ничего не делает.

Это значение можно указать в предустановленном наборе параметров сборки (используя resolvePackageReferences). Настройка предустановленного набора параметров будет проигнорирована, если этот параметр командной строки указан.

Если параметр командной строки или параметр предустановленного набора параметров не задан, будет обработано переменная кэша, специфичная для среды, чтобы определить, должна ли выполняться реставрация пакетов.

При использовании генератора Visual Studio ссылки на пакеты определяются с помощью свойства VS_PACKAGE_REFERENCES. Восстановление ссылок на пакеты выполняется с помощью NuGet. Его можно отключить, установив переменную CMAKE_VS_NUGET_PACKAGE_RESTORE в значение OFF.

--use-stderr

Игнорируется. Поведение по умолчанию в CMake >= 3.0.

--verbose, -v

Включить подробный вывод — если поддерживается — включая команды сборки, которые будут выполнены.

Этот параметр можно опустить, если переменная среды VERBOSE или кэшированная переменная CMAKE_VERBOSE_MAKEFILE задана.

--

Передать оставшиеся параметры инструменту.

Запустите cmake --build без параметров для получения краткой справки.

Установить проект

CMake предоставляет команду командной строки для установки уже сгенерированного дерева двоичных файлов проекта:

cmake --install <dir> [<options>]

Это можно использовать после сборки проекта для запуска установки без использования сгенерированной системы сборки или инструмента сборки. Параметры:

--install <dir>

Директория двоичных файлов проекта для установки. Это обязательно и должно быть первым параметром.

--config <cfg>

Для генераторов с несколькими конфигурациями выберите конфигурацию <cfg>.

--component <comp>

Установка на основе компонентов. Установить только компонент <comp>.

--default-directory-permissions <permissions>

Права доступа для установки по умолчанию. Разрешения в формате <u=rwx,g=rx,o=rx>.

--prefix <prefix>

Переопределить префикс установки, CMAKE_INSTALL_PREFIX.

--strip

Сжать перед установкой.

-v, --verbose

Включить подробный вывод.

Этот параметр можно опустить, если переменная среды VERBOSE задана.

Запустите cmake --install без параметров для получения краткой справки.

Открыть проект

cmake --open <dir>

Открыть сгенерированный проект в соответствующем приложении. Это поддерживается только некоторыми генераторами.

Выполнить скрипт

cmake [{-D <var>=<value>}...] -P <cmake-script-file> [-- <unparsed-options>...]

Обработать заданный файл CMake как скрипт, написанный на языке CMake. Не выполняется настройка или генерация, и кэш не изменяется. Если переменные определены с помощью -D, это должно быть сделано перед параметром -P.

Любые параметры после -- не анализируются CMake, но все же включаются в набор переменных CMAKE_ARGV<n>, передаваемых скрипту (включая -- сам).

Запустить инструмент командной строки

CMake предоставляет встроенные инструменты командной строки через синтаксис

cmake -E <command> [<options>]

Запустите cmake -E или cmake -E help для получения сводки команд. Доступные команды:

capabilities

Добавлен в версии 3.7.

Отчёт о возможностях cmake в формате JSON. Вывод — JSON-объект со следующими ключами:

version

JSON-объект с информацией о версии. Ключи:

string

Полная строка версии, отображаемая cmake --version.

major

Главный номер версии в целочисленной форме.

minor

Дополнительный номер версии в целочисленной форме.

patch

Номер патча в целочисленной форме.

suffix

Строка суффикса версии cmake.

isDirty

Логическое значение, установленное, если сборка cmake выполнена из модифицированного дерева.

generators

Список доступных генераторов. Каждый генератор — JSON-объект со следующими ключами:

name

Строка, содержащая имя генератора.

toolsetSupport

true если генератор поддерживает наборы инструментов и false в противном случае.

platformSupport

true если генератор поддерживает платформы и false в противном случае.

supportedPlatforms

Добавлен в версии 3.21.

Необязательное поле, которое может присутствовать, если генератор поддерживает указание платформы с помощью CMAKE_GENERATOR_PLATFORM (-A ...). Значение — список известных поддерживаемых платформ.

extraGenerators

Список строк со всеми дополнительными генераторами, совместимыми с данным генератором.

fileApi

Необязательное поле, которое присутствует, когда доступен cmake-file-api(7). Значение — JSON-объект с одним членом:

requests

JSON-массив, содержащий ноль или более поддерживаемых запросов file-api. Каждый запрос — JSON-объект с полями:

kind

Указывает один из поддерживаемых видов объектов.

version

JSON-массив, элементы которого — JSON-объекты, содержащие поля major и minor , определяющие целочисленные компоненты версии не меньше нуля.

serverMode

true если cmake поддерживает режим сервера, и false в противном случае. Всегда ложь начиная с CMake 3.20.

cat [--] <files>...

Добавлен в версии 3.18.

Объединение файлов и вывод на стандартный вывод.

Добавлен в версии 3.24: Добавлена поддержка аргумента с двумя дефисами --. Эта базовая реализация cat не поддерживает никаких опций, поэтому использование опции, начинающейся с -, приведёт к ошибке. Используйте -- для указания конца опций, если файл начинается с -.

chdir <dir> <cmd> [<arg>...]

Изменение текущей рабочей директории и выполнение команды.

compare_files [--ignore-eol] <file1> <file2>

Проверка, совпадает ли <file1> с <file2>. Если файлы совпадают, возвращает 0, иначе — 1. В случае неверных аргументов возвращает 2.

Добавлен в версии 3.14: Опция --ignore-eol подразумевает сравнение по строкам и игнорирует различия LF/CRLF.

copy <file>... <destination>

Копирование файлов в <destination> (файл или каталог). Если указано несколько файлов, <destination> должен быть каталогом и существовать. Поддержка шаблонов не реализована. copy следует за символическими ссылками. Это означает, что он не копирует символические ссылки, а только файлы или каталоги, на которые они указывают.

Добавлен в версии 3.5: Поддержка нескольких входных файлов.

copy_directory <dir>... <destination>

Копирование содержимого каталогов <dir>... в каталог <destination>. Если каталог <destination> не существует, он будет создан. copy_directory следует за символическими ссылками.

Добавлен в версии 3.5: Поддержка нескольких входных каталогов.

Добавлен в версии 3.15: Теперь команда завершается неудачно, если исходный каталог не существует. Ранее она успешно создавала пустой целевой каталог.

copy_if_different <file>... <destination>

Копирование файлов в <destination> (файл или каталог), если они изменены. Если указано несколько файлов, <destination> должен быть каталогом и существовать. copy_if_different следует за символическими ссылками.

Добавлен в версии 3.5: Поддержка нескольких входных файлов.

create_symlink <old> <new>

Создание символической ссылки <new> с именем <old>.

Добавлен в версии 3.13: Поддержка создания символических ссылок в Windows.

Примечание

Путь, по которому будет создана символическая ссылка <new>, должен существовать заранее.

create_hardlink <old> <new>

Добавлен в версии 3.19.

Создание жёсткой ссылки <new> с именем <old>.

Примечание

Путь, по которому будет создана жёсткая ссылка <new>, должен существовать заранее. <old> должен существовать заранее.

echo [<string>...]

Отображение аргументов как текста.

echo_append [<string>...]

Отображение аргументов как текста без новой строки.

env [--unset=NAME ...] [NAME=VALUE ...] [--] <command> [<arg>...]

Добавлен в версии 3.1.

Выполнение команды в изменённой среде.

Добавлен в версии 3.24: Добавлена поддержка аргумента с двумя дефисами --. Используйте -- для остановки интерпретации опций/переменных среды и обработки следующего аргумента как команды, даже если он начинается с - или содержит =.

environment

Отображение текущих переменных среды.

false

Добавлен в версии 3.16.

Не делать ничего, с кодом выхода 1.

make_directory <dir>...

Создание каталогов <dir>. При необходимости создаются и родительские каталоги. Если каталог уже существует, он будет проигнорирован.

Добавлен в версии 3.5: Поддержка нескольких входных каталогов.

md5sum <file>...

Создание контрольной суммы MD5 файлов в формате, совместимом с md5sum:

351abe79cd3800b38cdfb25d45015a15  file1.txt
052f86c15bbde68af55c7f7b340ab639  file2.txt
sha1sum <file>...

Добавлен в версии 3.10.

Создание контрольной суммы SHA1 файлов в формате, совместимом с sha1sum:

4bb7932a29e6f73c97bb9272f2bdc393122f86e0  file1.txt
1df4c8f318665f9a5f2ed38f55adadb7ef9f559c  file2.txt
sha224sum <file>...

Добавлен в версии 3.10.

Создание контрольной суммы SHA224 файлов в формате, совместимом с sha224sum:

b9b9346bc8437bbda630b0b7ddfc5ea9ca157546dbbf4c613192f930  file1.txt
6dfbe55f4d2edc5fe5c9197bca51ceaaf824e48eba0cc453088aee24  file2.txt
sha256sum <file>...

Добавлен в версии 3.10.

Создание контрольной суммы SHA256 файлов в формате, совместимом с sha256sum:

76713b23615d31680afeb0e9efe94d47d3d4229191198bb46d7485f9cb191acc  file1.txt
15b682ead6c12dedb1baf91231e1e89cfc7974b3787c1e2e01b986bffadae0ea  file2.txt
sha384sum <file>...

Добавлен в версии 3.10.

Создание контрольной суммы SHA384 файлов в формате, совместимом с sha384sum:

acc049fedc091a22f5f2ce39a43b9057fd93c910e9afd76a6411a28a8f2b8a12c73d7129e292f94fc0329c309df49434  file1.txt
668ddeb108710d271ee21c0f3acbd6a7517e2b78f9181c6a2ff3b8943af92b0195dcb7cce48aa3e17893173c0a39e23d  file2.txt
sha512sum <file>...

Добавлен в версии 3.10.

Создание контрольной суммы SHA512 файлов в формате, совместимом с sha512sum:

2a78d7a6c5328cfb1467c63beac8ff21794213901eaadafd48e7800289afbc08e5fb3e86aa31116c945ee3d7bf2a6194489ec6101051083d1108defc8e1dba89  file1.txt
7a0b54896fe5e70cca6dd643ad6f672614b189bf26f8153061c4d219474b05dad08c4e729af9f4b009f1a1a280cb625454bf587c690f4617c27e3aebdf3b7a2d  file2.txt
remove [-f] <file>...

Устаревшая с версии 3.17.

Удаление файла(ов). Планируемое поведение — если один из перечисленных файлов отсутствует, команда возвращает код ошибки, но сообщения не регистрируется. Опция -f изменяет поведение на возвращение нулевого кода выхода (т.е. успеха) в таких ситуациях. remove не следует за символическими ссылками. Это означает, что он удаляет только символические ссылки, а не файлы, на которые они указывают.

Реализация была ошибочной и всегда возвращала 0. Её нельзя исправить без нарушения обратной совместимости. Используйте rm вместо этого.

remove_directory <dir>...

Устаревшая с версии 3.17.

Удаление каталогов <dir> и их содержимого. Если каталог не существует, он будет проигнорирован. Используйте rm вместо этого.

Добавлен в версии 3.15: Поддержка нескольких каталогов.

Добавлен в версии 3.16: Если <dir> — символическая ссылка на каталог, будет удалена только ссылка.

rename <oldname> <newname>

Переименование файла или каталога (на одном томе). Если файл с именем <newname> уже существует, он будет молча заменён.

rm [-rRf] [--] <file|dir>...

Новое в версии 3.17.

Удалите файлы <file> или каталоги <dir>. Используйте -r или -R для рекурсивного удаления каталогов и их содержимого. Если какой-либо из перечисленных файлов/каталогов не существует, команда возвращает код выхода, отличный от нуля, но сообщение не регистрируется. Опция -f изменяет поведение, возвращая код выхода 0 (т.е. успех) в таких ситуациях вместо этого. Используйте -- для прекращения интерпретации опций и обработки всех оставшихся аргументов как путей, даже если они начинаются с -.

server

Запуск режима cmake-server(7).

sleep <number>...

Новое в версии 3.0.

Засыпать на заданное количество секунд.

tar [cxt][vf][zjJ] file.tar [<options>] [--] [<pathname>...]

Создать или извлечь архив tar или zip. Опции:

c

Создать новый архив, содержащий указанные файлы. При использовании аргумент <pathname>... является обязательным.

x

Извлечь архив на диск.

Новое в версии 3.15: Аргумент <pathname>... может использоваться для извлечения только выбранных файлов или каталогов. При извлечении выбранных файлов или каталогов необходимо указать их точные имена, включая путь, как напечатано в списке (-t).

t

Вывести содержимое архива.

Новое в версии 3.15: Аргумент <pathname>... может использоваться для вывода только выбранных файлов или каталогов.

v

Вывести подробный вывод.

z

Сжать получившийся архив с помощью gzip.

j

Сжать получившийся архив с помощью bzip2.

J

Новое в версии 3.1.

Сжать получившийся архив с помощью XZ.

--zstd

Новое в версии 3.15.

Сжать получившийся архив с помощью Zstandard.

--files-from=<file>

Новое в версии 3.1.

Считывать имена файлов из данного файла, по одному на строке. Пустые строки игнорируются. Строки не могут начинаться с - за исключением --add-file=<name> для добавления файлов, имена которых начинаются с -.

--format=<format>

Новое в версии 3.3.

Указать формат создаваемого архива. Поддерживаемые форматы: 7zip, gnutar, pax, paxr (ограниченный pax, по умолчанию) и zip.

--mtime=<date>

Новое в версии 3.1.

Указать время изменения, записанное в записях tarball.

--touch

Новое в версии 3.24.

Использовать текущее локальное время вместо извлечения времен метки файлов из архива.

--

Новое в версии 3.1.

Прекратить интерпретацию опций и обработать все оставшиеся аргументы как имена файлов, даже если они начинаются с -.

Новое в версии 3.1: Поддержка LZMA (7zip).

Новое в версии 3.15: Команда теперь продолжает добавлять файлы в архив, даже если некоторые файлы недоступны для чтения. Это поведение более согласовано с классическим инструментом tar. Команда теперь также анализирует все флаги, и если был предоставлен неверный флаг, выводится предупреждение.

time <command> [<args>...]

Выполнить команду и отобразить затраченное время.

Новое в версии 3.5: Команда теперь правильно передает аргументы с пробелами или специальными символами дочернему процессу. Это может нарушить скрипты, которые обходили ошибку с помощью собственных дополнительных кавычек или экранирования.

touch <file>...

Создает <file> если файл не существует. Если <file> существует, он изменяет <file> время доступа и изменения.

touch_nocreate <file>...

Изменить файл, если он существует, но не создавать его. Если файл не существует, он будет молча проигнорирован.

true

Новое в версии 3.16.

Ничего не делать, с кодом выхода 0.

Инструменты командной строки, специфичные для Windows

Следующие cmake -E команды доступны только в Windows:

delete_regv <key>

Удалить значение в реестре Windows.

env_vs8_wince <sdkname>

Новое в версии 3.2.

Отображает пакетный файл, который устанавливает среду для предоставленного SDK Windows CE, установленного в VS2005.

env_vs9_wince <sdkname>

Новое в версии 3.2.

Отображает пакетный файл, который устанавливает среду для предоставленного SDK Windows CE, установленного в VS2008.

write_regv <key> <value>

Записать значение в реестр Windows.

Запуск инструмента Find-Package

CMake предоставляет помощник pkg-config для проектов на основе Makefile:

cmake --find-package [<options>]

Он ищет пакет с помощью find_package() и выводит полученные флаги в стандартный вывод. Это может быть использовано вместо pkg-config для поиска установленных библиотек в простых проектах на основе Makefile или в проектах на основе autoconf (через share/aclocal/cmake.m4).

Примечание

Этот режим не хорошо поддерживается из-за некоторых технических ограничений. Он сохраняется для совместимости, но не должен использоваться в новых проектах.

Просмотр справки

Для печати выбранных страниц документации CMake используйте

cmake --help[-<topic>]

с одной из следующих опций:

--help,-help,-usage,-h,-H,/?

Вывести информацию об использовании и завершить работу.

Информация об использовании описывает базовый интерфейс командной строки и его опции.

--version,-version,/V [<f>]

Показать баннер с именем/версией программы и завершить работу.

Если указан файл, версия записывается в него. Помощь выводится в указанный файл <f>айл, если он задан.

--help-full [<f>]

Вывести все руководства по помощи и завершить работу.

Все руководства выводятся в удобочитаемом текстовом формате. Помощь выводится в указанный файл <f>айл, если он задан.

--help-manual <man> [<f>]

Вывести одно руководство по помощи и завершить работу.

Указанное руководство выводится в удобочитаемом текстовом формате. Помощь выводится в указанный файл <f>айл, если он задан.

--help-manual-list [<f>]

Вывести список доступных руководств по помощи и завершить работу.

Список содержит все руководства, для которых помощь может быть получена с помощью опции --help-manual, после которой следует имя руководства. Помощь выводится в указанный файл <f>айл, если он задан.

--help-command <cmd> [<f>]

Вывести помощь по одной команде и завершить работу.

Запись в руководстве cmake-commands(7) для <cmd> выводится в удобочитаемом текстовом формате. Помощь выводится в указанный файл <f>айл, если он задан.

--help-command-list [<f>]

Вывести список команд с доступной помощью и завершить работу.

Список содержит все команды, для которых помощь может быть получена с помощью опции --help-command , после которой следует имя команды. Помощь выводится в указанный файл <f>айл, если он задан.

--help-commands [<f>]

Вывести руководство cmake-commands и завершить работу.

Руководство cmake-commands(7) выводится в удобочитаемом текстовом формате. Помощь выводится в указанный файл <f>айл, если он задан.

--help-module <mod> [<f>]

Вывести помощь по одному модулю и завершить работу.

Запись в руководстве cmake-modules(7) для <mod> выводится в удобочитаемом текстовом формате. Помощь выводится в указанный файл <f>айл, если он задан.

--help-module-list [<f>]

Вывести список модулей с доступной помощью и завершить работу.

Список содержит все модули, для которых помощь может быть получена с помощью опции --help-module , после которой следует имя модуля. Помощь выводится в указанный файл <f>айл, если он задан.

--help-modules [<f>]

Вывести руководство cmake-modules и завершить работу.

Руководство cmake-modules(7) выводится в удобочитаемом текстовом формате. Помощь выводится в указанный файл <f>айл, если он задан.

--help-policy <cmp> [<f>]

Вывести помощь по одной политике и завершить работу.

Запись в руководстве cmake-policies(7) для <cmp> выводится в удобочитаемом текстовом формате. Помощь выводится в указанный файл <f>айл, если он задан.

--help-policy-list [<f>]

Вывести список политик с доступной помощью и завершить работу.

Список содержит все политики, для которых помощь может быть получена с помощью опции --help-policy , после которой следует имя политики. Помощь выводится в указанный файл <f>айл, если он задан.

--help-policies [<f>]

Вывести руководство cmake-policies и завершить работу.

Руководство cmake-policies(7) выводится в удобочитаемом текстовом формате. Помощь выводится в указанный файл <f>айл, если он задан.

--help-property <prop> [<f>]

Вывести помощь по одному свойству и завершить работу.

Записи в руководстве cmake-properties(7) для <prop> выводятся в удобочитаемом текстовом формате. Помощь выводится в указанный файл <f>айл, если он задан.

--help-property-list [<f>]

Вывести список свойств с доступной помощью и завершить работу.

Список содержит все свойства, для которых помощь может быть получена с помощью опции --help-property , после которой следует имя свойства. Помощь выводится в указанный файл <f>айл, если он задан.

--help-properties [<f>]

Вывести руководство cmake-properties и завершить работу.

Руководство cmake-properties(7) выводится в удобочитаемом текстовом формате. Помощь выводится в указанный файл <f>айл, если он задан.

--help-variable <var> [<f>]

Вывести помощь по одной переменной и завершить работу.

Запись в руководстве cmake-variables(7) для <var> выводится в удобочитаемом текстовом формате. Помощь выводится в указанный файл <f>айл, если он задан.

--help-variable-list [<f>]

Вывести список переменных с доступной помощью и завершить работу.

Список содержит все переменные, для которых помощь может быть получена с помощью опции --help-variable , после которой следует имя переменной. Помощь выводится в указанный файл <f>айл, если он задан.

--help-variables [<f>]

Вывести руководство cmake-variables и завершить работу.

Руководство cmake-variables(7) выводится в удобочитаемом текстовом формате. Помощь выводится в указанный файл <f>айл, если он задан.

Чтобы просмотреть доступные настройки для проекта, используйте

cmake <source-dir> --list-presets

Значение возврата (Код выхода)

При нормальном завершении выполнения cmake возвращает код выхода 0.

Если завершение вызвано командой message(FATAL_ERROR) или другой ошибкой, то возвращается ненулевой код выхода.

См. также

Для получения помощи по использованию CMake доступны следующие ресурсы:

Главная страница

https://cmake.org

Основная стартовая точка для получения информации о CMake.

Онлайн-документация и ресурсы сообщества

https://cmake.org/documentation

Ссылки на доступную документацию и ресурсы сообщества можно найти на этой веб-странице.

Форум Discourse

https://discourse.cmake.org

Форум Discourse предоставляет площадку для обсуждения и вопросов по CMake.

© 2000–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.24/manual/cmake.1.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API