CPack
Создание установочных пакетов бинарных и исходных файлов.
Переменные, общие для всех генераторов CPack
Модуль CPack генерирует установочные пакеты бинарных и исходных файлов в различных форматах с помощью программы cpack. Включение модуля CPack добавляет две новые цели сборки, package и package_source, которые соответственно создают бинарные и исходные установочные пакеты. Сгенерированные бинарные пакеты содержат все, что устанавливается через команду CMake install() (и устаревшие команды install_files(), install_programs() и install_targets()).
Для определенных типов бинарных установочных пакетов (включая графические установщики на macOS и 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 -
Описание проекта, используемое в таких местах, как вводная страница установочных пакетов, сгенерированных 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 -
Изображение бренда, которое будет отображаться внутри установщика (используется установщиками графического интерфейса).
-
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_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.13/module/CPack.html