cmake(1)
Краткое описание
Generate a Project Buildsystem cmake [<options>] <path-to-source | 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>] Run a Workflow Preset cmake --workflow [<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>
Добавлена в версии 3.13.
Использует <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>.Важно отметить, что порядок аргументов
-Cи-Dважен. Они будут выполняться в порядке их перечисления, причём последний аргумент имеет приоритет над предыдущими. Например, если вы укажете-DCMAKE_BUILD_TYPE=Debug, а затем аргумент-Cс файлом, который вызывает:set(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE)
то аргумент
-Cбудет иметь приоритет, иCMAKE_BUILD_TYPEбудет установлено вRelease. Однако, если аргумент-Dследует за аргументом-C, он будет установлен вDebug.Если вызов
set(... CACHE ...)в файле-Cне используетFORCE, и аргумент-Dустанавливает ту же переменную, аргумент-Dбудет иметь приоритет независимо от порядка, из-за природы вызововFORCEset(... CACHE ...).
-
-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. По умолчанию это также включает предупреждения о устаревших функциях.
-
-Wdeprecated -
Включить предупреждения об устаревших функциях.
Включить предупреждения об использовании устаревших функций, которые предназначены для автора файлов
CMakeLists.txt.
-
-Wno-deprecated -
Отключить предупреждения об устаревших функциях.
Отключить предупреждения об использовании устаревших функций, которые предназначены для автора файлов
CMakeLists.txt.
-
-Werror=<what> -
Обрабатывать предупреждения CMake как ошибки.
<what>должно быть одним из следующих:-
dev -
Преобразовать предупреждения разработчиков в ошибки.
Преобразовать предупреждения, предназначенные для автора файлов
CMakeLists.txtв ошибки. По умолчанию это также включает предупреждения об устаревших функциях как ошибки. -
deprecated -
Преобразовать предупреждения об устаревших макросах и функциях в ошибки.
Преобразовать предупреждения об использовании устаревших макросов и функций, которые предназначены для автора файлов
CMakeLists.txtв ошибки.
-
-
-Wno-error=<what> -
Не обрабатывать предупреждения CMake как ошибки.
<what>должно быть одним из следующих:-
dev -
Преобразовать предупреждения, предназначенные для автора файлов
CMakeLists.txtв не ошибки. По умолчанию это также выключает предупреждения об устаревших функциях как ошибки. -
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=<level> -
Установить уровень ведения
<level>.Команда
message()будет выводить только сообщения указанного уровня или выше. Допустимые уровни логов:ERROR,WARNING,NOTICE,STATUS(по умолчанию),VERBOSE,DEBUG, илиTRACE.Чтобы сохранить уровень лога между запусками CMake, установите
CMAKE_MESSAGE_LOG_LEVELв качестве переменной кэша. Если заданы как опция командной строки, так и переменная, приоритет отдаётся опции командной строки.Для обратной совместимости также принимается
--loglevelв качестве синонима этой опции.Новое в версии 3.25: См. команду
cmake_language()для возможности получить текущий уровень ведения сообщений.
-
--log-context -
Включить вывод контекста для команды
message()к каждому сообщению.Эта опция включает отображение контекста только для текущего запуска CMake. Для сохранения отображения контекста во всех последующих запусках CMake, установите
CMAKE_MESSAGE_CONTEXT_SHOWв качестве переменной кэша. При использовании этой опции командной строки,CMAKE_MESSAGE_CONTEXT_SHOWигнорируется.
-
--debug-trycompile -
Не удалять файлы и каталоги, созданные для вызовов
try_compile()/try_run(). Это полезно при отладке не пройденных проверок.Обратите внимание, что некоторые использования
try_compile()могут использовать один и тот же билд-дерево, что ограничивает полезность этой опции, если проект выполняет более одногоtry_compile(). Например, такие использования могут изменить результаты, так как артефакты из предыдущей проверки могут вызвать ошибочное прохождение или не прохождение другого теста. Эта опция лучше всего используется только при отладке.(Относительно вышесказанного, команда
try_run()фактически являетсяtry_compile(). Любая комбинация из двух подвержена потенциальным проблемам, описанным выше.)Новое в версии 3.25: При включении этой опции, каждая проверка 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 -
Если вызов функции занимает несколько строк, это поле будет установлено в строку, где вызов функции заканчивается. Если вызов функции занимает одну строку, это поле не будет установлено. Это поле было добавлено в версии
json-v1формата. -
defer -
Необязательное поле, которое присутствует, когда вызов функции был отложен командой
cmake_language(DEFER). Если присутствует, его значение — строка, содержащая отложенный вызов<id>. -
cmd -
Имя функции, которая была вызвана.
-
args -
Список строк всех параметров функции.
-
time -
Отметка времени (секунды с начала эпохи) вызова функции.
-
frame -
Глубина кадра стека вызвавшей функции в контексте обрабатываемого
CMakeLists.txtв настоящее время. -
global_frame -
Глубина кадра стека вызвавшей функции, отслеживаемая глобально для всех файлов
CMakeLists.txt, участвующих в трассировке. Это поле было добавлено в версиюjson-v1формата.
Кроме того, первый JSON документ, выведенный, содержит поле
versionдля текущей основной и дополнительной версииФормат трассировки JSON:
{ "version": { "major": 1, "minor": 2 } }Поля:
-
version -
Указывает версию формата JSON. Версия имеет основные и дополнительные компоненты, следуя соглашениям семантической версии.
-
-
-
--trace-source=<file> -
Перевести cmake в режим трассировки, но выводить только строки указанного файла.
Разрешается несколько опций.
-
--trace-redirect=<file> -
Перевести cmake в режим трассировки и перенаправить вывод трассировки в файл вместо stderr.
-
--warn-uninitialized -
Выдавать предупреждение об инициализированных значениях.
Выводить предупреждение, когда используется неинициализированная переменная.
-
--warn-unused-vars -
Ничего не делает. В версиях CMake 3.2 и ниже, это включало предупреждения об отсутствии использования переменных. В версиях 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, который можно проанализировать с помощью вкладки «Прослеживание» в 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[=<type>] -
Выводит список доступных пресетов для указанного
<type>. Допустимые значения для<type>—configure,build,test,package, илиall. Если<type>опущено, предполагаетсяconfigure. Файлы пресетов 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 должны находиться в текущей рабочей директории.
-
-j [<jobs>], --parallel [<jobs>] -
Добавлена в версии 3.12.
Максимальное количество одновременных процессов для использования при сборке. Если
<jobs>опущено, используется значение по умолчанию для утилиты сборки.Переменная среды
CMAKE_BUILD_PARALLEL_LEVEL, если она установлена, определяет уровень параллельности по умолчанию, когда этот параметр не задан.Некоторые утилиты сборки всегда работают параллельно. Можно использовать значение
<jobs>как1, чтобы ограничить сборку одним процессом.
-
-t <tgt>..., --target <tgt>... -
Собрать
<tgt>вместо целевой программы по умолчанию. Можно указать несколько целевых программ, разделив их пробелами.
-
--config <cfg> -
Для инструментов с несколькими конфигурациями выберите конфигурацию
<cfg>.
-
--clean-first -
Сначала очистить цель
clean, а затем собрать. (Чтобы очистить только, используйте--target clean.)
-
--resolve-package-references=<value> -
Добавлена в версии 3.23.
Решить ссылки на удалённые пакеты из внешних менеджеров пакетов (например, NuGet) перед сборкой. Когда
<value>установлено в значениеon(по умолчанию), пакеты будут восстановлены перед сборкой целевой программы. Когда<value>установлено в значениеonly, пакеты будут восстановлены, но сборка не будет выполнена. Когда<value>установлено в значениеoff, пакеты не будут восстановлены.Если целевая программа не определяет ссылки на пакеты, этот параметр ничего не делает.
Это значение можно указать в пресете сборки (используя
resolvePackageReferences). Параметр пресета будет проигнорирован, если задан параметр командной строки.Если не указан параметр командной строки или параметр пресета, будет оценено значение переменной кэша, специфичной для среды, чтобы определить, следует ли выполнять восстановление пакетов.
При использовании генератора Visual Studio ссылки на пакеты определяются с помощью свойства
VS_PACKAGE_REFERENCES. Пакеты восстанавливаются с помощью NuGet. Можно отключить это, установив переменнуюCMAKE_VS_NUGET_PACKAGE_RESTOREвOFF.
-
--use-stderr -
Проигнорировано. Поведение по умолчанию в CMake >= 3.0.
-
-v, --verbose -
Включить подробный вывод (если поддерживается), включая команды сборки, которые будут выполнены.
Этот параметр можно опустить, если переменная среды
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>...]
-
-D <var>=<value> -
Определить переменную для режима сценария.
-
-P <cmake-script-file> -
Обработать данный файл CMake как скрипт, написанный на языке CMake. Этап конфигурации или генерации не выполняется, и кэш не изменяется. Если переменные определены с помощью
-D, это должно быть сделано до аргумента-P.
Любые параметры после -- не анализируются CMake, но они всё равно включаются в набор переменных CMAKE_ARGV<n>, передаваемых в скрипт (включая сам --).
Запустить утилиту командной строки
CMake предоставляет встроенные инструменты командной строки через сигнатуру
cmake -E <command> [<options>]
-
-E [help] -
Запустить
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в противном случае. Всегда false с CMake 3.20. -
tls -
Новое в версии 3.25.
trueесли поддержка TLS включена, иfalseв противном случае.
-
-
cat [--] <files>... -
Новое в версии 3.18.
Объединить файлы и вывести на стандартный вывод.
-
-- -
Новое в версии 3.24.
Добавлена поддержка аргумента с двойным дефисом
--. Это базовое реализацияcatне поддерживает какие-либо параметры, поэтому использование параметра, начинающегося с-, приведёт к ошибке. Используйте--для указания конца параметров, в случае, если файл начинается с-.
-
-
chdir <dir> <cmd> [<arg>...] -
Изменить текущую рабочую директорию и выполнить команду.
-
compare_files [--ignore-eol] <file1> <file2> -
Проверить, является ли
<file1>таким же, как<file2>. Если файлы одинаковые, возвращает0, если нет, возвращает1. В случае недопустимых аргументов возвращается 2.-
--ignore-eol -
Новое в версии 3.14.
Параметр подразумевает сравнение по строкам и игнорирует различия 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 [<options>] [--] <command> [<arg>...] -
Добавлена в версии 3.1.
Выполнить команду в изменённой среде. Доступны следующие варианты:
-
NAME=VALUE -
Заменяет текущее значение
NAMEнаVALUE.
-
--unset=NAME -
Сбрасывает текущее значение
NAME.
-
--modify ENVIRONMENT_MODIFICATION -
Добавлена в версии 3.25.
Применить операцию модификации среды
ENVIRONMENT_MODIFICATION.Параметры
NAME=VALUEи--unset=NAMEэквивалентны--modify NAME=set:VALUEи--modify NAME=unset:, соответственно. Обратите внимание, что--modify NAME=reset:сбрасываетNAMEдо значения, которое имело место во время запускаcmake(или сбрасывает его), а не до последнего значения опцииNAME=VALUE.
-
-- -
Добавлена в версии 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изменяет поведение на возврат нулевого кода выхода (т.е. успешное выполнение) в таких ситуациях. Используйте--для остановки интерпретации опций и обработки всех оставшихся аргументов как путей, даже если они начинаются с-.
-
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.
Запуск инструмента поиска пакетов
CMake предоставляет помощника pkg-config для проектов на основе Makefile:
cmake --find-package [<options>]
Он ищет пакет, используя find_package() и печатает полученные флаги в стандартный вывод. Это можно использовать вместо pkg-config для поиска установленных библиотек в проектах на основе Makefile или в проектах на основе autoconf (через share/aclocal/cmake.m4).
Примечание
Этот режим не поддерживается должным образом из-за некоторых технических ограничений. Он сохраняется для совместимости, но не должен использоваться в новых проектах.
Выполнение предустановленного процесса
CMake Presets предоставляет способ выполнения нескольких шагов сборки в порядке:
cmake --workflow [<options>]
Доступны следующие параметры:
-
--workflow -
Выберите Набор предустановок используя один из следующих параметров.
-
--preset <preset>, --preset=<preset> -
Используйте набор предустановок для определения процесса. Путь к двоичному файлу проекта определяется из первоначальной предустановки конфигурации. Текущая рабочая директория должна содержать файлы предустановок CMake. Для получения дополнительной информации см.
preset.
-
--list-presets -
Отображает доступные наборы предустановок. Текущая рабочая директория должна содержать файлы предустановок CMake.
-
--fresh -
Выполнить свежую конфигурацию дерева сборки. Это удаляет любой существующий
CMakeCache.txtфайл и соответствующийCMakeFiles/каталог и создаёт их заново.
Просмотр справки
Для печати выбранных страниц из документации CMake используйте
cmake --help[-<topic>]
с одним из следующих параметров:
-
-version [<file>], --version [<file>], /V [<file>] -
Показать баннер имени/версии программы и выйти. Вывод отображается в заданном
<file>файле, если он указан.
-
-h, -H, --help, -help, -usage, /? -
Вывести информацию об использовании и выйти.
Описание использования содержит основную информацию о командной строке и её параметрах.
-
--help-full [<file>] -
Вывести все руководства по справке и выйти.
Все руководства выводятся в читаемом формате. Вывод отображается в указанном
<file>файле, если он указан.
-
--help-manual <man> [<file>] -
Вывести одно руководство по справке и выйти.
Указанное руководство выводится в читаемом формате. Вывод отображается в указанном
<file>файле, если он указан.
-
--help-manual-list [<file>] -
Вывести список доступных руководств по справке и выйти.
Список содержит все руководства, справка по которым может быть получена с помощью опции
--help-manualи имени руководства. Вывод отображается в заданном<file>файле, если он указан.
-
--help-command <cmd> [<file>] -
Вывести справку по одной команде и завершить.
Вводная часть справки
cmake-commands(7)по<cmd>выводится в удобочитаемом текстовом формате. Вывод печатается в заданный<file>файл, если он задан.
-
--help-command-list [<file>] -
Вывести список команд со справочной информацией и завершить.
Список содержит все команды, для которых можно получить справку, используя опцию
--help-commandи имя команды. Вывод печатается в заданный<file>файл, если он задан.
-
--help-commands [<file>] -
Вывести руководство cmake-commands и завершить.
Руководство
cmake-commands(7)выводится в удобочитаемом текстовом формате. Вывод печатается в заданный<file>файл, если он задан.
-
--help-module <mod> [<file>] -
Вывести справку по одному модулю и завершить.
Вводная часть справки
cmake-modules(7)по<mod>выводится в удобочитаемом текстовом формате. Вывод печатается в заданный<file>файл, если он задан.
-
--help-module-list [<file>] -
Вывести список модулей со справочной информацией и завершить.
Список содержит все модули, для которых можно получить справку, используя опцию
--help-moduleи имя модуля. Вывод печатается в заданный<file>файл, если он задан.
-
--help-modules [<file>] -
Вывести руководство cmake-modules и завершить.
Руководство
cmake-modules(7)выводится в удобочитаемом текстовом формате. Вывод печатается в заданный<file>файл, если он задан.
-
--help-policy <cmp> [<file>] -
Вывести справку по одному политике и завершить.
Вводная часть справки
cmake-policies(7)по<cmp>выводится в удобочитаемом текстовом формате. Вывод печатается в заданный<file>файл, если он задан.
-
--help-policy-list [<file>] -
Вывести список политик со справочной информацией и завершить.
Список содержит все политики, для которых можно получить справку, используя опцию
--help-policyи имя политики. Вывод печатается в заданный<file>файл, если он задан.
-
--help-policies [<file>] -
Вывести руководство cmake-policies и завершить.
Руководство
cmake-policies(7)выводится в удобочитаемом текстовом формате. Вывод печатается в заданный<file>файл, если он задан.
-
--help-property <prop> [<file>] -
Вывести справку по одному свойству и завершить.
Вводные части справок
cmake-properties(7)по<prop>выводятся в удобочитаемом текстовом формате. Вывод печатается в заданный<file>файл, если он задан.
-
--help-property-list [<file>] -
Вывести список свойств со справочной информацией и завершить.
Список содержит все свойства, для которых можно получить справку, используя опцию
--help-propertyи имя свойства. Вывод печатается в заданный<file>файл, если он задан.
-
--help-properties [<file>] -
Вывести руководство cmake-properties и завершить.
Руководство
cmake-properties(7)выводится в удобочитаемом текстовом формате. Вывод печатается в заданный<file>файл, если он задан.
-
--help-variable <var> [<file>] -
Вывести справку по одной переменной и завершить.
Вводная часть справки
cmake-variables(7)по<var>выводится в удобочитаемом текстовом формате. Вывод печатается в заданный<file>файл, если он задан.
-
--help-variable-list [<file>] -
Вывести список переменных со справочной информацией и завершить.
Список содержит все переменные, для которых можно получить справку, используя опцию
--help-variableи имя переменной. Вывод печатается в заданный<file>файл, если он задан.
-
--help-variables [<file>] -
Вывести руководство cmake-variables и завершить.
Руководство
cmake-variables(7)выводится в удобочитаемом текстовом формате. Вывод печатается в заданный<file>файл, если он задан.
Чтобы просмотреть доступные параметры проекта, используйте
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.25/manual/cmake.1.html