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 -
Описание проекта, используемое в таких местах, как экран введения в CPack-сгенерированных установщиках Windows. Если не задано, значение этой переменной берется из файла, указанного в
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 -
Дополнительные команды для установки компонентов. Переменная среды
CMAKE_INSTALL_PREFIXустанавливается в временную директорию установки во время выполнения.
-
CPACK_INSTALL_SCRIPTS -
Дополнительные скрипты CMake, выполняемые CPack во время локальной установки подготовки, которая выполняется непосредственно перед упаковкой файлов. Скрипты не вызываются отдельной установкой (например:
make install). Для каждого скрипта будут установлены следующие переменные:CMAKE_CURRENT_SOURCE_DIR,CMAKE_CURRENT_BINARY_DIRиCMAKE_INSTALL_PREFIX(которая установлена в директорию установки подготовки). Одноэлементная формаCMAKE_INSTALL_SCRIPTподдерживается как альтернативная переменная по историческим причинам, но ее значение игнорируется, если установленаCMAKE_INSTALL_SCRIPTS, и будет выведено сообщение об ошибке.
-
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 командуoption()), которые затем могут использоваться для выбора генератора(ов) CPack при построении целевого объектаpackageили при запускеcpackбез опции-G.
© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.16/module/CPack.html