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) используется для другого. Например:
Командная строка | Каталог исходных файлов | Каталог сборки |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Изменено в версии 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 и выведет все переменные из кэша CMakeCACHE, которые не помечены как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 доступны следующие ресурсы:
- Главная страница
-
Основная стартовая точка для получения информации о CMake.
- Онлайн-документация и ресурсы сообщества
-
https://cmake.org/documentation
Ссылки на доступную документацию и ресурсы сообщества можно найти на этой веб-странице.
- Форум Discourse
-
Форум 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