CPack
Создание установочных пакетов двоичных и исходных файлов.
Переменные, общие для всех генераторов CPack
Модуль CPack генерирует установочные пакеты двоичных и исходных файлов в различных форматах с помощью программы cpack. Включение модуля CPack добавляет два новых целевых объекта в сгенерированные makefiles: package и package_source, которые строят соответственно установочные пакеты двоичных и исходных файлов. Сгенерированные двоичные установочные пакеты содержат всё, что было установлено с помощью команды INSTALL CMake (и устаревших команд INSTALL_FILES, INSTALL_PROGRAMS и INSTALL_TARGETS).
Для некоторых типов двоичных установочных пакетов (включая графические пакеты на Mac OS X и Windows), CPack генерирует пакеты, позволяющие пользователям выбирать отдельные компоненты приложения для установки. См. модуль CPackComponent для получения более подробной информации.
Переменная CPACK_GENERATOR имеет разное значение в разных контекстах. В файле CMakeLists.txt CPACK_GENERATOR представляет собой список генераторов: при запуске без других аргументов CPack перебирает этот список и создаёт один пакет для каждого генератора. Однако в файле CPACK_PROJECT_CONFIG_FILE CPACK_GENERATOR является строкой, определяющей один генератор. Если вам нужно логика для управления другими настройками cpack для каждого генератора, вам потребуется CPACK_PROJECT_CONFIG_FILE.
В самой дереве исходного кода CMake содержится CPACK_PROJECT_CONFIG_FILE. См. файл CMakeCPackOptions.cmake.in в корневой директории для примера.
Если установлено, CPACK_PROJECT_CONFIG_FILE включается автоматически для каждого генератора. Он должен содержать только переопределения.
Вот как это работает:
- Запускается cpack
- Он включает
CPackConfig.cmake - Он перебирает список генераторов, указанный в переменной списка
CPACK_GENERATORэтого файла (если не указано использовать только определённый генератор с помощью параметра -G в командной строке…) - Для каждого генератора:
CPACK_GENERATORустанавливается на текущего перебираемого генератора- Включается
CPACK_PROJECT_CONFIG_FILE - Создаётся пакет для этого генератора
Вот ключевой момент: для каждого генератора, перечисленного в CPACK_GENERATOR в CPackConfig.cmake, cpack сбросит внутреннее значение CPACK_GENERATOR на текущий используемый и затем включит CPACK_PROJECT_CONFIG_FILE.
Перед включением этого модуля CPack в файл CMakeLists.txt можно задать различные переменные для настройки создаваемых установочных пакетов. Наиболее часто используемые переменные:
-
CPACK_PACKAGE_NAME -
Название пакета (или приложения). Если не указано, по умолчанию используется имя проекта.
-
CPACK_PACKAGE_VENDOR -
Название поставщика пакета. (например, «Kitware»).
-
CPACK_PACKAGE_DIRECTORY -
Директория, в которой CPack выполняет упаковку. Если не задано, по умолчанию используется директория сборки. Эта переменная может быть определена в файле конфигурации CPack или с помощью параметра командной строки cpack «-B». Если задано, параметр командной строки переопределяет значение, найденное в файле конфигурации.
-
CPACK_PACKAGE_VERSION_MAJOR -
Основная версия пакета
-
CPACK_PACKAGE_VERSION_MINOR -
Дополнительная версия пакета
-
CPACK_PACKAGE_VERSION_PATCH -
Релизная версия пакета
-
CPACK_PACKAGE_DESCRIPTION_FILE -
Текстовый файл, используемый для описания проекта. Используется, например, на начальном экране установочного пакета Windows, сгенерированного CPack, для описания проекта.
-
CPACK_PACKAGE_DESCRIPTION_SUMMARY -
Краткое описание проекта (несколько слов). Значение по умолчанию:
${PROJECT_DESCRIPTION}если для проекта задано описание в вызове
project()или это строка, сгенерированная CMake с помощьюPROJECT_NAME, иначе.
-
CPACK_PACKAGE_FILE_NAME -
Имя файла пакета для генерации, без расширения. Например,
cmake-2.6.1-Linux-i686. Значение по умолчанию:${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}.
-
CPACK_PACKAGE_INSTALL_DIRECTORY -
Директория установки на целевой системе. Может использоваться некоторыми генераторами CPack, например, NSIS, для создания каталога установки, например, «CMake 2.5» ниже префикса установки. Все установленные элементы будут помещены в эту директорию.
-
CPACK_PACKAGE_ICON -
Изображение бренда, которое будет отображаться внутри установщика (используется в графических установщиках).
-
CPACK_PACKAGE_CHECKSUM -
Алгоритм, который будет использоваться для генерации дополнительного файла с контрольной суммой пакета. Имя выходного файла будет:
${CPACK_PACKAGE_FILE_NAME}.${CPACK_PACKAGE_CHECKSUM}Поддерживаемые алгоритмы перечислены в команде string(<HASH>).
-
CPACK_PROJECT_CONFIG_FILE -
Файл конфигурации проекта CPack во время работы CPack. Этот файл включается во время работы cpack один раз на генератор после того, как CPack установит
CPACK_GENERATORна фактически используемый генератор. Он позволяет устанавливать переменныеCPACK_*для каждого генератора во время работы cpack.
-
CPACK_RESOURCE_FILE_LICENSE -
Лицензия, которая будет встроена в установщик. Как правило, она отображается пользователю в установщике (часто с явной кнопкой «Принять» для графических установщиков) перед установкой. Этот файл лицензии НЕ добавляется в устанавливаемые файлы, но используется некоторыми генераторами CPack, такими как NSIS. Если вы хотите установить файл лицензии (возможно, такой же, как этот) вместе с вашим проектом, вы должны добавить соответствующую команду CMake INSTALL в
CMakeLists.txt.
-
CPACK_RESOURCE_FILE_README -
Файл ReadMe, который будет встроен в установщик. Он обычно подробно описывает назначение проекта во время установки. Не все генераторы CPack используют этот файл.
-
CPACK_RESOURCE_FILE_WELCOME -
Файл приветствия, который будет встроен в установщик. Он приветствует пользователей этого установщика. Как правило, используется в графических установщиках на Windows и Mac OS X.
-
CPACK_MONOLITHIC_INSTALL -
Отключает механизм установки на основе компонентов. При установке значение игнорируется, и все устанавливаемые элементы помещаются в один пакет «MONOLITHIC». Некоторые генераторы CPack по умолчанию выполняют монолитную упаковку и могут быть запрошены к выполнению упаковки компонентов путём установки
CPACK_._COMPONENT_INSTALL = 1/TRUE
-
CPACK_GENERATOR -
Список генераторов CPack, которые нужно использовать. Если не задано, CPack создаст набор параметров
CPACK_BINARY_(например,CPACK_BINARY_NSIS), позволяющий пользователю включать/отключать отдельные генераторы. Эта переменная может использоваться как в командной строке, так и в:cpack -D CPACK_GENERATOR="ZIP;TGZ" /path/to/build/tree
-
CPACK_OUTPUT_CONFIG_FILE -
Имя файла конфигурации двоичного файла CPack. Этот файл — конфигурация CPack, сгенерированная модулем CPack для двоичных установщиков. По умолчанию
CPackConfig.cmake.
-
CPACK_PACKAGE_EXECUTABLES -
Список исполняемых файлов и соответствующих текстовых меток, используемых для создания ярлыков в меню Пуск. Например, если задать это значение как
ccmake;CMake, будут созданы ярлыки с именем «CMake», которые будут запускать установленные исполняемые файлыccmake. Не все генераторы CPack используют это (по крайней мере, NSIS, WIX и OSXX11 не используют).
-
CPACK_STRIP_FILES -
Список файлов, подлежащих удалению. Начиная с CMake 2.6.0,
CPACK_STRIP_FILESбудет булевой переменной, которая включает удаление всех файлов (список файлов оценивается как TRUE в CMake, поэтому это изменение совместимо).
-
CPACK_VERBATIM_VARIABLES -
Если установлено в TRUE, значения переменных, начинающихся с CPACK, будут экранированы перед записью в конфигурационные файлы, чтобы программа cpack получала их точно так, как они были указаны. В противном случае, символы, такие как кавычки и обратные слэши, могут привести к ошибкам парсинга или изменить значение, полученное программой cpack. По умолчанию FALSE для обеспечения обратной совместимости.
- Обязательно: НЕТ
- По умолчанию: FALSE
Следующие переменные CPack специфичны для исходных пакетов и не влияют на двоичные пакеты:
-
CPACK_SOURCE_PACKAGE_FILE_NAME -
Имя исходного пакета. Например,
cmake-2.6.1.
-
CPACK_SOURCE_STRIP_FILES -
Список файлов в дереве исходного кода, которые будут удалены. Начиная с CMake 2.6.0,
CPACK_SOURCE_STRIP_FILESбудет булевой переменной, которая включает удаление всех файлов (список файлов оценивается как TRUE в CMake, поэтому это изменение совместимо).
-
CPACK_SOURCE_GENERATOR -
Список генераторов, используемых для исходных пакетов. Как и для
CPACK_GENERATOR, если это не указано, CPack создаст набор параметров (например,CPACK_SOURCE_ZIP), позволяя пользователям выбирать, какие пакеты будут сгенерированы.
-
CPACK_SOURCE_OUTPUT_CONFIG_FILE -
Имя файла конфигурации исходного файла CPack. Этот файл — конфигурация CPack, сгенерированная модулем CPack для исходных установщиков. По умолчанию
CPackSourceConfig.cmake.
-
CPACK_SOURCE_IGNORE_FILES -
Шаблон файлов в дереве исходного кода, которые не будут упакованы при создании исходного пакета. Это список шаблонов регулярных выражений (которые должны быть должным образом экранированы), например,
/CVS/;/.svn/;.swp$;.#;/#;.*~;cscope.*.
-
CPACK_CMAKE_GENERATOR -
Какой генератор CMake следует использовать, если проект является проектом CMake. По умолчанию используется значение
CMAKE_GENERATOR. Не многим пользователям захочется изменить это значение.
-
CPACK_INSTALL_CMAKE_PROJECTS -
Список из четырёх значений, определяющих, какой проект установить. Четыре значения: Директория сборки, Название проекта, Компонент проекта, Директория. Если опущено, CPack создаст установщик, который установит всё.
-
CPACK_SYSTEM_NAME -
Имя системы, по умолчанию равно значению ${CMAKE_SYSTEM_NAME}.
-
CPACK_PACKAGE_VERSION -
Полная версия пакета, используется внутри. По умолчанию, она создаётся из CPACK_PACKAGE_VERSION_MAJOR, CPACK_PACKAGE_VERSION_MINOR и CPACK_PACKAGE_VERSION_PATCH.
-
CPACK_TOPLEVEL_TAG -
Директория для установленных файлов.
-
CPACK_INSTALL_COMMANDS -
Дополнительные команды для установки компонентов.
-
CPACK_INSTALLED_DIRECTORIES -
Дополнительные директории для установки.
-
CPACK_PACKAGE_INSTALL_REGISTRY_KEY -
Ключ реестра, используемый при установке этого проекта. Используется только установщиком для Windows. Значение по умолчанию основано на директории установки.
-
CPACK_CREATE_DESKTOP_LINKS -
Список ярлыков рабочего стола для создания. Каждый ярлык рабочего стола требует соответствующего ярлыка в меню Пуск, созданного с помощью
CPACK_PACKAGE_EXECUTABLES.
-
CPACK_BINARY_<GENNAME> -
Сгенерированные CPack опции для бинарных генераторов. Модуль CPack.cmake генерирует (если CPACK_GENERATOR не задан) набор опций CMake (см. команду опций CMake), которые затем могут быть использованы для выбора генераторов CPack, которые будут использованы при запуске целевого пакета.
Предоставлять опции для выбора генераторов, мы можем проверить здесь, если необходимые инструменты для генераторов существуют, и установить значения по умолчанию в соответствии с результатами
© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.10/module/CPack.html