Spec-Zone.ru › CMake 3.28

CPack

Настройка генераторов для установочных пакетов и пакетов исходных кодов.

Введение

Модуль CPack генерирует файлы конфигурации CPackConfig.cmake и CPackSourceConfig.cmake. Они предназначены для использования в последующем запуске программы cpack, где они управляют генерацией установочных пакетов и/или пакетов исходных кодов.

В зависимости от генератора CMake, модуль CPack может также добавить две новые цели сборки, package и package_source. Подробности см. в разделе «Цели упаковки» ниже.

Сгенерированные установочные пакеты будут содержать все файлы, установленные с помощью команды CMake install() (и устаревшими командами install_files(), install_programs() и install_targets()). Обратите внимание, что параметр DESTINATION команды install() должен быть относительным путем; в противном случае установленные файлы будут проигнорированы CPack.

Некоторые виды установочных пакетов можно настроить так, чтобы пользователи могли выбирать отдельные компоненты приложения для установки. Дополнительные сведения см. в модуле CPackComponent.

Пакеты исходных кодов (настраиваемые через CPackSourceConfig.cmake и генерируемые генератором CPack Archive Generator) будут содержать все исходные файлы в каталоге проекта, за исключением тех, которые указаны в CPACK_SOURCE_IGNORE_FILES.

Генераторы CPack

Переменная CPACK_GENERATOR имеет разное значение в разных контекстах. В файле CMakeLists.txt, CPACK_GENERATOR представляет собой список генераторов; и когда cpack запускается без других аргументов, он будет перебирать этот список и генерировать один пакет для каждого генератора. В CPACK_PROJECT_CONFIG_FILE, CPACK_GENERATOR представляет собой строку, указывающую имя одного генератора. Если вам нужна логика для каждого генератора CPack для управления другими настройками cpack, вам нужен CPACK_PROJECT_CONFIG_FILE. Если он установлен, 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-generators(7).

Цели упаковки package и package_source

Если CMake запускается с генератором Makefile, Ninja или Xcode, то include(CPack) генерирует цель package. Это позволяет создавать установочные пакеты из CMake, Make или Ninja: Вместо cpack, можно вызвать cmake --build . --target package или make package или ninja package. Генератор VS создает целевую цель PACKAGE.

Если CMake запускается с генератором Makefile или Ninja, то include(CPack) также генерирует цель package_source. Для создания пакета исходных кодов вместо cpack -G TGZ --config CPackSourceConfig.cmake можно вызвать cmake --build . --target package_source, make package_source или ninja package_source.

Переменные, общие для всех генераторов 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

Изображение бренда, которое будет отображаться внутри установщика (используется графическими установщиками).

CPACK_PACKAGE_CHECKSUM

Новая версия 3.7.

Алгоритм, который будет использоваться для генерации дополнительного файла с контрольной суммой пакета. Имя выходного файла будет:

${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. Если вы хотите использовать символы UTF-8, файл должен быть закодирован в UTF-8 BOM. Если вы хотите установить файл лицензии (может быть таким же, как этот) вместе с вашим проектом, вы должны добавить соответствующую команду CMake install() в свой CMakeLists.txt.

CPACK_RESOURCE_FILE_README

Файл ReadMe, который будет встроен в установщик. Он обычно подробно описывает назначение проекта во время установки. Не все генераторы CPack используют этот файл.

CPACK_RESOURCE_FILE_WELCOME

Файл приветствия, который будет встроен в установщик. Он приветствует пользователей этого установщика. Обычно используется в графических установщиках Windows и Mac OS X.

CPACK_MONOLITHIC_INSTALL

Отключает механизм установки по компонентам. При установке эта опция игнорируется, и все установленные элементы помещаются в один пакет «МОНОЛИТНЫЙ». Некоторые генераторы 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, Inno Setup и WIX не используют).

CPACK_STRIP_FILES

Список файлов для удаления. Начиная с CMake 2.6.0, CPACK_STRIP_FILES будет булевой переменной, которая включает удаление всех файлов (список файлов оценивается как TRUE в CMake, поэтому это изменение совместимо).

CPACK_VERBATIM_VARIABLES

Новая версия 3.4.

Если установлено в TRUE, значения переменных с префиксом CPACK_ будут экранированы перед записью в конфигурационные файлы, чтобы программа cpack получала их точно так, как они были указаны. В противном случае символы, такие как кавычки и обратные слэши, могут вызвать ошибки разбора или изменить значение, полученное программой cpack. По умолчанию FALSE для обратной совместимости.

CPACK_THREADS

Новая версия 3.20.

Количество потоков для использования при выполнении параллельных операций, таких как сжатие пакета установщика.

Некоторые методы сжатия, используемые генераторами CPack, такие как Debian или Archive, могут использовать несколько ядер процессора для ускорения сжатия. CPACK_THREADS можно задать для определения количества потоков, используемых для сжатия.

Можно использовать целое положительное число для указания точного желаемого количества потоков.

При указании целого отрицательного числа CPack будет использовать абсолютное значение в качестве верхней границы, но может выбрать меньшее значение на основе доступной аппаратной конкурируемости.

При указании 0 CPack попытается использовать все доступные ядра процессора.

По умолчанию CPACK_THREADS установлено в 1.

Следующие методы сжатия могут использовать несколько ядер:

xz

Поддерживается, если CMake был скомпилирован с liblzma , который поддерживает параллельное сжатие.

Новая версия 3.21: Официальные бинарники CMake, доступные на cmake.org , теперь поставляются с liblzma , который поддерживает параллельное сжатие. Более старые версии этого не поддерживали.

zstd

Новая версия 3.24.

Поддерживается, если CMake был скомпилирован с libarchive 3.6 или выше. Официальные бинарники CMake, доступные на cmake.org , его поддерживают.

Другие методы сжатия игнорируют это значение и используют только один поток.

Переменные для генераторов пакетов исходных кодов

Следующие переменные 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

Новое в версии 3.16.

Дополнительные скрипты CMake, выполняемые CPack во время локальной установки. Они выполняются перед установкой файлов, подлежащих упаковке. Скрипты не вызываются автономной установкой (например: make install). Для каждого скрипта будут установлены следующие переменные: CMAKE_CURRENT_SOURCE_DIR, CMAKE_CURRENT_BINARY_DIR и CMAKE_INSTALL_PREFIX (которая устанавливается в директорию временной установки). В качестве альтернативы для исторических причин поддерживается единственное CMAKE_INSTALL_SCRIPT, но его значение игнорируется, если установлено CMAKE_INSTALL_SCRIPTS, и будет выведено предупреждение.

См. также CPACK_PRE_BUILD_SCRIPTS и CPACK_POST_BUILD_SCRIPTS, которые можно использовать для указания скриптов, которые будут выполнены позже в процессе упаковки.

CPACK_PRE_BUILD_SCRIPTS

Новое в версии 3.19.

Список скриптов CMake, которые нужно выполнить после того, как CPack установил файлы для упаковки в временную директорию и перед созданием пакетов из этих файлов. См. также CPACK_INSTALL_SCRIPTS и CPACK_POST_BUILD_SCRIPTS.

CPACK_POST_BUILD_SCRIPTS

Новое в версии 3.19.

Список скриптов CMake, которые нужно выполнить после того, как CPack создал итоговые пакеты и перед копированием их обратно в директорию сборки. См. также CPACK_INSTALL_SCRIPTS, CPACK_PRE_BUILD_SCRIPTS и CPACK_PACKAGE_FILES.

CPACK_PACKAGE_FILES

Новое в версии 3.19.

Список файлов пакета, созданных во временной директории, при этом каждый файл предоставляется в виде полного абсолютного пути. Эта переменная заполняется CPack непосредственно перед вызовом скриптов пост-сборки, указанных в CPACK_POST_BUILD_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.

CPACK_READELF_EXECUTABLE

Новое в версии 3.25.

Укажите путь к исполняемому файлу readelf используемый CPack. Значение по умолчанию будет CMAKE_READELF при установке. В противном случае значение по умолчанию будет пустым, и CPack воспользуется find_program() для определения пути к readelf при необходимости.

CPACK_OBJCOPY_EXECUTABLE

Новое в версии 3.25.

Укажите путь к исполняемому файлу objcopy , используемому CPack. Значение по умолчанию будет CMAKE_OBJCOPY при установке. В противном случае значение по умолчанию будет пустым, и CPack воспользуется find_program() для определения пути к objcopy при необходимости.

CPACK_OBJDUMP_EXECUTABLE

Новое в версии 3.25.

Укажите путь к исполняемому файлу objdump , используемому CPack. Значение по умолчанию будет CMAKE_OBJDUMP при установке. В противном случае значение по умолчанию будет пустым, и CPack воспользуется find_program() для определения пути к objdump при необходимости.

© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.28/module/CPack.html

Spec-Zone.ru

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