CPack
Создаёт установщики бинарных и исходных пакетов.
Введение
Модуль CPack генерирует файл CPackConfig.cmake предназначенный для последующего запуска программы cpack, где он управляет генерацией установщиков и/или исходных пакетов.
Включение модуля CPack добавляет две новые цели сборки, package и package_source, которые соответственно собирают бинарные и исходные установщики. Сгенерированные бинарные установщики содержат всё, что установлено через команду CMake install() (и устаревшие команды install_files(), install_programs() и install_targets()).
Для некоторых типов бинарных установщиков (включая графические установщики macOS и Windows), CPack генерирует установщики, которые позволяют пользователям выбирать отдельные компоненты приложения для установки. См. модуль CPackComponent для получения дополнительных сведений.
Генераторы CPack
Переменная CPACK_GENERATOR имеет разное значение в разных контекстах. В файле CMakeLists.txt, CPACK_GENERATOR является списком генераторов; и когда программа cpack запускается без других аргументов, она будет перебирать этот список и генерировать по одному пакету для каждого генератора. В файле конфигурации проекта CPACK_PROJECT_CONFIG_FILE, CPACK_GENERATOR является строкой, которая называет единственный генератор. Если вам требуется логика, специфичная для каждого генератора CPack, для управления другими настройками CPack, вам нужен файл CPACK_PROJECT_CONFIG_FILE.
Внутри самого дерева исходного кода CMake находится файл CPACK_PROJECT_CONFIG_FILE. Пример можно найти в файле верхнего уровня CMakeCPackOptions.cmake.in.
Если установлено, CPACK_PROJECT_CONFIG_FILE автоматически включается для каждого генератора. Он должен содержать только переопределения.
Вот как это работает:
- Запускается
cpack - Включается
CPackConfig.cmake - Происходит итерация по генераторам, заданным опцией командной строки
-G, или, если такая опция не указана, по списку генераторов, заданных переменнойCPACK_GENERATORв входном файлеCPackConfig.cmake. -
Для каждого генератора
- переменная
CPACK_GENERATORустанавливается на текущий генератор - включается файл
CPACK_PROJECT_CONFIG_FILE - генерируется пакет для этого генератора
- переменная
Ключевой момент: для каждого генератора, перечисленного в CPACK_GENERATOR в CPackConfig.cmake, cpack переустанавливает CPACK_GENERATOR внутренне на текущий и затем включает CPACK_PROJECT_CONFIG_FILE.
Переменные, общие для всех генераторов CPack
Прежде чем включать этот модуль CPack в свой файл CMakeLists.txt, можно установить различные переменные для настройки получаемых установщиков. Наиболее часто используемые переменные:
-
CPACK_PACKAGE_NAME -
Имя пакета (или приложения). Если не указано, по умолчанию используется имя проекта.
-
CPACK_PACKAGE_VENDOR -
Имя поставщика пакета (например, «Kitware»). По умолчанию — «Humanity».
-
CPACK_PACKAGE_DIRECTORY -
Директория, в которой CPack выполняет упаковку. Если не задана, по умолчанию используется директория сборки. Эта переменная может быть определена в файле конфигурации CPack или из опции командной строки
cpack-B. Если установлено, опция командной строки переопределяет значение, найденное в файле конфигурации.
-
CPACK_PACKAGE_VERSION_MAJOR -
Основная версия пакета. Эта переменная всегда установлена, но её значение по умолчанию зависит от того, были ли указаны детали версии в команде
project()в файле CMakeLists.txt верхнего уровня. Если детали версии были указаны, значение по умолчанию будетCMAKE_PROJECT_VERSION_MAJOR. Если детали версии не были указаны, будет предполагаться версия по умолчанию 0.1.1, что приведёт к тому, чтоCPACK_PACKAGE_VERSION_MAJORбудет иметь значение по умолчанию 0.
-
CPACK_PACKAGE_VERSION_MINOR -
Дополнительная версия пакета. Значение по умолчанию определяется на основе того, были ли указаны детали версии в команде
project()в файле CMakeLists.txt верхнего уровня. Если детали версии были указаны, значение по умолчанию будетCMAKE_PROJECT_VERSION_MINOR, но если не было указано дополнительное число, тоCPACK_PACKAGE_VERSION_MINORостанется незаданным. Если вообще не была указана версия проекта, по умолчанию будет предполагаться версия 0.1.1, что приведёт к тому, чтоCPACK_PACKAGE_VERSION_MINORбудет иметь значение по умолчанию 1.
-
CPACK_PACKAGE_VERSION_PATCH -
Исправительная версия пакета. Значение по умолчанию определяется на основе того, были ли указаны детали версии в команде
project()в файле CMakeLists.txt верхнего уровня. Если детали версии были указаны, значение по умолчанию будетCMAKE_PROJECT_VERSION_PATCH, но если не было указано число исправительной версии, тоCPACK_PACKAGE_VERSION_PATCHостанется незаданным. Если вообще не была указана версия проекта, по умолчанию будет предполагаться версия 0.1.1, что приведёт к тому, чтоCPACK_PACKAGE_VERSION_PATCHбудет иметь значение по умолчанию 1.
-
CPACK_PACKAGE_DESCRIPTION -
Описание проекта, используемое, например, на экране ввода установщиков Windows, сгенерированных CPack. Если не задано, значение этой переменной заполняется из файла, указанного в
CPACK_PACKAGE_DESCRIPTION_FILE.
-
CPACK_PACKAGE_DESCRIPTION_FILE -
Текстовый файл, используемый для описания проекта, когда
CPACK_PACKAGE_DESCRIPTIONне задан явно. Значение по умолчанию дляCPACK_PACKAGE_DESCRIPTION_FILEуказывает на встроенный шаблонный файлTemplates/CPack.GenericDescription.txt.
-
CPACK_PACKAGE_DESCRIPTION_SUMMARY -
Краткое описание проекта (только несколько слов). Если переменная
CMAKE_PROJECT_DESCRIPTIONустановлена, она используется в качестве значения по умолчанию; в противном случае по умолчанию будет строка, сгенерированная CMake на основеCMAKE_PROJECT_NAME.
-
CPACK_PACKAGE_HOMEPAGE_URL -
URL домашней страницы проекта. Значение по умолчанию взято из переменной
CMAKE_PROJECT_HOMEPAGE_URL, которая устанавливается командой верхнего уровняproject(), иначе значение по умолчанию будет пустым, если URL не был предоставлен командеproject().
-
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_<GENNAME>_COMPONENT_INSTALLвTRUE.
-
CPACK_GENERATOR -
Список генераторов CPack для использования. Если не указано, CPack создаст набор опций, следуя шаблону именования
CPACK_BINARY_<GENNAME>(например,CPACK_BINARY_NSIS) позволяя пользователю включать/выключать отдельные генераторы. Если опция-Gуказана в командной строке командыcpack, она переопределит эту переменную и любые опцииCPACK_BINARY_<GENNAME>.
-
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для обратной совместимости.
Переменные для генераторов пакетов исходных кодов
Следующие переменные 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:
-
CPACK_CMAKE_GENERATOR -
Какой генератор CMake следует использовать, если проект является проектом CMake. По умолчанию используется значение
CMAKE_GENERATOR. Немногим пользователям захочется изменить это значение.
-
CPACK_INSTALL_CMAKE_PROJECTS -
Список из четырёх значений, которые указывают, какой проект нужно установить. Четыре значения: директория сборки, имя проекта, компонент проекта, директория. Если опущены, CPack создаст установщик, который установит всё.
-
CPACK_SYSTEM_NAME -
Имя системы, по умолчанию это значение
CMAKE_SYSTEM_NAME, за исключением Windows, где это будетwin32илиwin64.
-
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 (см. команду CMakeoption()), которые затем могут использоваться для выбора генератора(ов) CPack, используемого при построении целевого объектаpackageили при запускеcpackбез опции-G.
© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.14/module/CPack.html