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 -
Изображение бренда, которое будет отображаться внутри установщика (используется GUI-установщиками).
-
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будет булевой переменной, которая включает удаление всех файлов (список файлов в CMake интерпретируется какTRUE, поэтому это изменение совместимо).
-
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будет булевой переменной, которая включает удаление всех файлов (список файлов в CMake интерпретируется какTRUE, поэтому это изменение совместимо).
-
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.15/module/CPack.html