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
Во всех случаях <options> может содержать ноль или более из параметров ниже.
Вышеперечисленные стили указания деревьев исходных и выходных данных могут быть смешаны. Пути, указанные с -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не в ошибки. -
-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 }Поля:
-
file -
Полный путь к исходному файлу CMake, где была вызвана функция.
-
line -
Строка в
fileвызова функции. -
defer -
Необязательное поле, присутствующее, когда вызов функции был отложен с помощью
cmake_language(DEFER). Если оно присутствует, его значение — строка, содержащая отложенный вызов<id>. -
cmd -
Имя вызываемой функции.
-
args -
Список строк всех параметров функции.
-
time -
Отметка времени (секунды с начала эпохи) вызова функции.
-
frame -
Глубина кадра стека вызываемой функции.
Кроме того, первый выведенный JSON-документ содержит ключ
versionдля текущей основной и дополнительной версииФормат трассировки JSON:
{ "version": { "major": 1, "minor": 1 } }Поля:
-
version -
Указывает версию формата JSON. Версия имеет основные и дополнительные компоненты, соответствующие соглашениям семантической версии.
-
-
-
--trace-source=<file> -
Перевести CMake в режим трассировки, но выводить только строки из указанного файла.
Разрешено несколько вариантов.
-
--trace-redirect=<file> -
Перевести CMake в режим трассировки и перенаправить вывод трассировки в файл вместо stderr.
-
--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 выводить предупреждения и для других файлов. -
--profiling-output=<path> -
Используется вместе с
--profiling-formatдля вывода в указанный путь. -
--profiling-format=<file> -
Включить вывод данных профилирования сценария CMake в заданном формате.
Это может помочь в анализе производительности сценариев CMake. Для обработки вывода в удобочитаемый формат необходимо использовать сторонние приложения.
В настоящее время поддерживаются значения:
google-traceВыводит данные в формате Google Trace, которые можно просмотреть в вкладке «Отслеживание» браузера 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.
Объединить файлы и вывести на стандартный вывод.
-
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.
Запустить команду в изменённой среде.
-
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изменяет поведение, возвращая нулевой код выхода (т.е. успех) в таких ситуациях. -
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.
-
-- -
Новое в версии 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.
Отображает пакетный файл, который устанавливает среду для предоставленной установленной в VS2005 Windows CE SDK.
-
env_vs9_wince <sdkname> -
Новое в версии 3.2.
Отображает пакетный файл, который устанавливает среду для предоставленной установленной в VS2008 Windows CE SDK.
-
write_regv <key> <value> -
Записать значение в реестр Windows.
Запуск инструмента поиска пакетов
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>] -
Вывести помощь по одной команде и выйти.
Запись справки по
<cmd>в руководствеcmake-commands(7)выводится в удобочитаемом текстовом формате. Помощь выводится в указанный файл <f>, если он задан. -
--help-command-list [<f>] -
Вывести список команд с доступной помощью и выйти.
Список содержит все команды, помощь по которым можно получить, используя опцию
--help-commandс последующим именем команды. Помощь выводится в указанный файл <f>, если он задан. -
--help-commands [<f>] -
Вывести руководство cmake-commands и выйти.
Руководство
cmake-commands(7)выводится в удобочитаемом текстовом формате. Помощь выводится в указанный файл <f>, если он задан. -
--help-module <mod> [<f>] -
Вывести помощь по одному модулю и выйти.
Запись справки по
<mod>в руководствеcmake-modules(7)выводится в удобочитаемом текстовом формате. Помощь выводится в указанный файл <f>, если он задан. -
--help-module-list [<f>] -
Вывести список модулей с доступной помощью и выйти.
Список содержит все модули, помощь по которым можно получить, используя опцию
--help-moduleс последующим именем модуля. Помощь выводится в указанный файл <f>, если он задан. -
--help-modules [<f>] -
Вывести руководство cmake-modules и выйти.
Руководство
cmake-modules(7)выводится в удобочитаемом текстовом формате. Помощь выводится в указанный файл <f>, если он задан. -
--help-policy <cmp> [<f>] -
Вывести помощь по одной политике и выйти.
Запись справки по
<cmp>в руководствеcmake-policies(7)выводится в удобочитаемом текстовом формате. Помощь выводится в указанный файл <f>, если он задан. -
--help-policy-list [<f>] -
Вывести список политик с доступной помощью и выйти.
Список содержит все политики, помощь по которым можно получить, используя опцию
--help-policyс последующим именем политики. Помощь выводится в указанный файл <f>, если он задан. -
--help-policies [<f>] -
Вывести руководство cmake-policies и выйти.
Руководство
cmake-policies(7)выводится в удобочитаемом текстовом формате. Помощь выводится в указанный файл <f>, если он задан. -
--help-property <prop> [<f>] -
Вывести помощь по одному свойству и выйти.
Записи справки по
<prop>в руководствеcmake-properties(7)выводятся в удобочитаемом текстовом формате. Помощь выводится в указанный файл <f>, если он задан. -
--help-property-list [<f>] -
Вывести список свойств с доступной помощью и выйти.
Список содержит все свойства, помощь по которым можно получить, используя опцию
--help-propertyс последующим именем свойства. Помощь выводится в указанный файл <f>, если он задан. -
--help-properties [<f>] -
Вывести руководство cmake-properties и выйти.
Руководство
cmake-properties(7)выводится в удобочитаемом текстовом формате. Помощь выводится в указанный файл <f>, если он задан. -
--help-variable <var> [<f>] -
Вывести помощь по одной переменной и выйти.
Запись справки по
<var>в руководствеcmake-variables(7)выводится в удобочитаемом текстовом формате. Помощь выводится в указанный файл <f>, если он задан. -
--help-variable-list [<f>] -
Вывести список переменных с доступной помощью и выйти.
Список содержит все переменные, помощь по которым можно получить, используя опцию
--help-variableс последующим именем переменной. Помощь выводится в указанный файл <f>, если он задан. -
--help-variables [<f>] -
Вывести руководство cmake-variables и выйти.
Руководство
cmake-variables(7)выводится в удобочитаемом текстовом формате. Помощь выводится в указанный файл <f>, если он задан.
Для просмотра доступных предварительных настроек для проекта, используйте
cmake <source-dir> --list-presets
См. также
Для получения помощи при использовании 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.23/manual/cmake.1.html