Spec-Zone.ru › CMake 3.15

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().

END_OF_DOCUMENT_MARKER
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 (см. команду 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.15/module/CPack.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API