CPack
Создание установочных пакетов двоичных и исходных файлов.
Переменные, общие для всех генераторов CPack
Модуль CPack генерирует установочные пакеты двоичных и исходных файлов в различных форматах, используя программу cpack. Включение модуля CPack добавляет две новые цели сборки, package и package_source, которые соответственно создают двоичные и исходные установочные пакеты. Сгенерированные двоичные установочные пакеты содержат всё, установленное с помощью команды CMake install() (и устаревшими командами 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, то вам потребуется файл 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 в ваш файл 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–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.12/module/CPack.html