install
Укажите правила для выполнения во время установки.
Синопсис
install(TARGETS <target>... [...])
install(IMPORTED_RUNTIME_ARTIFACTS <target>... [...])
install({FILES | PROGRAMS} <file>... [...])
install(DIRECTORY <dir>... [...])
install(SCRIPT <file> [...])
install(CODE <code> [...])
install(EXPORT <export-name> [...])
install(PACKAGE_INFO <package-name> [...])
install(RUNTIME_DEPENDENCY_SET <set-name> [...]) Введение
Эта команда генерирует правила установки для проекта. Правила установки, задаваемые вызовами команды install() в каталоге исходного кода, выполняются по порядку во время установки.
Изменено в версии 3.14: Правила установки в подкаталогах, добавленные вызовами команды add_subdirectory(), чередуются с правилами в родительском каталоге для выполнения в объявленном порядке (см. политику CMP0082).
Изменено в версии 3.22: Переменная среды CMAKE_INSTALL_MODE может переопределить поведение копирования по умолчанию для install().
Изменено в версии 3.31: Проекты могут включить INSTALL_PARALLEL для включения параллельной установки. При использовании параллельной установки подкаталоги, добавленные вызовами команды add_subdirectory(), устанавливаются независимо, и порядок выполнения правил установки, добавленных в разные подкаталоги, не гарантируется.
Существует несколько подписей для этой команды. Некоторые из них определяют параметры установки для файлов и целей. Общие параметры для нескольких подписей описаны здесь, но они действительны только для подписей, которые их указывают. Общие параметры:
-
DESTINATION <dir> -
Укажите каталог на диске, в который будет установлен файл.
<dir>должен быть относительным путем. Разрешен абсолютный путь, но не рекомендуется.При указании относительного пути он интерпретируется относительно значения переменной
CMAKE_INSTALL_PREFIX. Префикс может быть перемещён во время установки с помощью механизмаDESTDIR, описанного в документации переменнойCMAKE_INSTALL_PREFIX.Поскольку абсолютные пути не работают с опцией
--prefixкомандыcmake --installили с генераторами установщиковcpack, настоятельно рекомендуется использовать относительные пути для лучшей поддержки со стороны разработчиков пакетов. В частности, нет необходимости делать пути абсолютными, добавляя префиксCMAKE_INSTALL_PREFIX; этот префикс используется по умолчанию, если DESTINATION является относительным путем.Если указан абсолютный путь (с ведущей косой чертой или буквой диска), он используется без изменений.
Изменено в версии 3.31:
<dir>будет нормализован в соответствии с теми же правилами нормализации, что и командаcmake_path(). -
PERMISSIONS <permission>... -
Укажите разрешения для установленных файлов. Допустимые разрешения:
OWNER_READ,OWNER_WRITE,OWNER_EXECUTE,GROUP_READ,GROUP_WRITE,GROUP_EXECUTE,WORLD_READ,WORLD_WRITE,WORLD_EXECUTE,SETUID, иSETGID. Разрешения, не имеющие смысла на определённых платформах, игнорируются на этих платформах.Если эта опция используется несколько раз в одном вызове, её список разрешений накапливается. Если вызов
install(TARGETS)использует аргументы <artifact-kind>, отдельный список разрешений накапливается для каждого вида артефакта. -
CONFIGURATIONS <config>... -
Укажите список конфигураций сборки, для которых применяется правило установки (Отладка, Релиз и т. д.).
Если эта опция используется несколько раз в одном вызове, её список конфигураций накапливается. Если вызов
install(TARGETS)использует аргументы <artifact-kind>, отдельный список конфигураций накапливается для каждого вида артефакта. -
COMPONENT <component> -
Укажите имя компонента установки, с которым связано правило установки, например,
RuntimeилиDevelopment. Во время установки, специфичной для компонента, будут выполняться только правила установки, связанные с указанным именем компонента. При полной установке устанавливаются все компоненты, если они не помечены какEXCLUDE_FROM_ALL. ЕслиCOMPONENTне указано, создаётся компонент по умолчанию "Unspecified". Имя компонента по умолчанию может быть контролировано переменнойCMAKE_INSTALL_DEFAULT_COMPONENT_NAME. -
EXCLUDE_FROM_ALL -
Добавлена в версии 3.6.
Укажите, что файл исключён из полной установки и устанавливается только в рамках установки, специфичной для компонента.
-
OPTIONAL -
Укажите, что отсутствие файла для установки не является ошибкой.
Добавлена в версии 3.1: Подписи команд, устанавливающие файлы, могут выводить сообщения во время установки. Используйте переменную CMAKE_INSTALL_MESSAGE для управления выводом этих сообщений.
Добавлена в версии 3.11: Многие варианты команд install() неявно создают каталоги, содержащие установленные файлы. Если установлено значение CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS, эти каталоги будут созданы с указанными разрешениями. В противном случае они будут созданы в соответствии с правилами uname на платформах Unix-подобных.
Подписи
-
install(TARGETS <target>... [...]) -
Установить целевой объект Выходные артефакты и связанные файлы:
install(TARGETS <target>... [EXPORT <export-name>] [RUNTIME_DEPENDENCIES <arg>...|RUNTIME_DEPENDENCY_SET <set-name>] [<artifact-option>...] [<artifact-kind> <artifact-option>...]... [INCLUDES DESTINATION [<dir> ...]] )где группа
<artifact-option>...может содержать:[DESTINATION <dir>] [PERMISSIONS <permission>...] [CONFIGURATIONS <config>...] [COMPONENT <component>] [NAMELINK_COMPONENT <component>] [OPTIONAL] [EXCLUDE_FROM_ALL] [NAMELINK_ONLY|NAMELINK_SKIP]
Первая группа
<artifact-option>...относится к целевому объекту Выходные артефакты, для которых не указана отдельная группа позже в том же вызове.Каждая группа
<artifact-kind> <artifact-option>...относится к Выходным артефактам указанного типа артефакта:-
ARCHIVE -
К артефактам целевого объекта этого типа относятся:
-
Статические библиотеки (за исключением macOS, когда помечены как
FRAMEWORK, см. ниже); -
Импортные библиотеки DLL (на всех системах на базе Windows, включая Cygwin; они имеют расширение
.lib, в отличие от библиотек.dll, которые идут вRUNTIME); - На AIX, файл импорта компоновщика, созданный для исполняемых файлов с включённой
ENABLE_EXPORTS. - На macOS, файл импорта компоновщика, созданный для общих библиотек с включённой
ENABLE_EXPORTS(за исключением случаев, когда помечены какFRAMEWORK, см. ниже).
-
Статические библиотеки (за исключением macOS, когда помечены как
-
LIBRARY -
К артефактам целевого объекта этого типа относятся:
-
Общие библиотеки, кроме
- DLL (они идут в
RUNTIME, см. ниже), - на macOS, когда помечены как
FRAMEWORK(см. ниже).
- DLL (они идут в
-
-
RUNTIME -
К артефактам целевого объекта этого типа относятся:
-
Исполняемые файлы (за исключением macOS, когда помечены как
MACOSX_BUNDLE, см.BUNDLEниже); - DLL (на всех системах на базе Windows, включая Cygwin; обратите внимание, что сопровождающие импортные библиотеки относятся к типу
ARCHIVE).
-
Исполняемые файлы (за исключением macOS, когда помечены как
-
OBJECTS -
Добавлен в версии 3.9.
Объектные файлы, связанные с библиотеками объектов.
-
FRAMEWORK -
Как статические, так и общие библиотеки, помеченные свойством
FRAMEWORK, обрабатываются как целевые объектыFRAMEWORKна macOS. -
BUNDLE -
Исполняемые файлы, помеченные свойством
MACOSX_BUNDLE, обрабатываются как целевые объектыBUNDLEна macOS. -
PUBLIC_HEADER -
Любые файлы
PUBLIC_HEADER, связанные с библиотекой, устанавливаются в указанном аргументомPUBLIC_HEADERназначении на платформах, не являющихся Apple. Правила, определённые этим аргументом, игнорируются для библиотекFRAMEWORKна платформах Apple, поскольку связанные файлы устанавливаются в соответствующие расположения внутри папки фреймворка. Подробности см. вPUBLIC_HEADER. -
PRIVATE_HEADER -
Аналогично
PUBLIC_HEADER, но для файловPRIVATE_HEADER. Подробности см. вPRIVATE_HEADER. -
RESOURCE -
Аналогично
PUBLIC_HEADERиPRIVATE_HEADER, но для файловRESOURCE. Подробности см. вRESOURCE. -
FILE_SET <set-name> -
Добавлен в версии 3.23.
Наборы файлов определяются командой
target_sources(FILE_SET). Если набор файлов<set-name>существует и являетсяPUBLICилиINTERFACE, все файлы в наборе устанавливаются в указанное назначение (см. ниже). Структура каталогов относительно базовых каталогов набора файлов сохраняется. Например, файл, добавленный в набор файлов как/blah/include/myproj/here.hс базовым каталогом/blah/includeбудет установлен вmyproj/here.hпод назначением. -
CXX_MODULES_BMI -
Добавлен в версии 3.28.
Все файлы модулей из C++ модулей из
PUBLICисточников в наборе файлов типаCXX_MODULESбудут установлены в указанноеDESTINATION. Все модули размещаются непосредственно в назначении, так как структура каталогов не выводится из имён модулей. ПустойDESTINATIONможет быть использован для подавления установки этих файлов (для использования в общем коде).
Для обычных исполняемых файлов, статических и общих библиотек аргумент
DESTINATIONне требуется. Для этих типов целевых объектов, когдаDESTINATIONопущено, значение по умолчанию будет взято из соответствующей переменной изGNUInstallDirs, или установлено в встроенное значение по умолчанию, если эта переменная не определена. То же самое относится к наборам файлов, а также к общедоступным и закрытым заголовкам, связанным с устанавливаемыми целевыми объектами через свойства целевого объектаPUBLIC_HEADERиPRIVATE_HEADER. Назначение должно всегда быть указано для библиотек модулей, пакетов Apple и фреймворков. Назначение может быть опущено для интерфейсных и объектных библиотек, но они обрабатываются по-другому (см. обсуждение этого вопроса в конце этого раздела).Для общих библиотек на платформах DLL, если ни
RUNTIMEниARCHIVEназначения не указаны, оба компонентаRUNTIMEиARCHIVEустанавливаются в их назначения по умолчанию. Если указано либоRUNTIMEилиARCHIVEназначение, компонент устанавливается в это назначение, а другой компонент не устанавливается. Если указаны обаRUNTIMEиARCHIVEназначения, оба компонента устанавливаются в их соответствующие назначения.В следующей таблице показаны типы целевых объектов с соответствующими переменными и встроенными значениями по умолчанию, которые применяются, когда назначение не задано:
Тип целевого объекта
Переменная GNUInstallDirs
Встроенное значение по умолчанию
RUNTIME${CMAKE_INSTALL_BINDIR}binLIBRARY${CMAKE_INSTALL_LIBDIR}libARCHIVE${CMAKE_INSTALL_LIBDIR}libPRIVATE_HEADER${CMAKE_INSTALL_INCLUDEDIR}includePUBLIC_HEADER${CMAKE_INSTALL_INCLUDEDIR}includeFILE_SET(типHEADERS)${CMAKE_INSTALL_INCLUDEDIR}includeПроекты, желающие следовать общепринятой практике установки заголовков в подкаталог, специфичный для проекта, могут предпочесть использование наборов файлов с соответствующими путями и базовыми каталогами. В противном случае они должны предоставить
DESTINATIONвместо того, чтобы полагаться на вышеуказанное (см. следующий пример ниже).Для обеспечения совместимости пакетов с политиками макета файловой системы, если проекты должны указать
DESTINATION, настоятельно рекомендуется использовать путь, начинающийся с соответствующей относительной переменнойGNUInstallDirs. Это позволяет разработчикам пакетов контролировать назначение установки, устанавливая соответствующие переменные кэша. В следующем примере показано, как статическая библиотека устанавливается в назначение по умолчанию, предоставленноеGNUInstallDirs, но ее заголовки устанавливаются в подкаталог, специфичный для проекта, без использования наборов файлов:add_library(mylib STATIC ...) set_target_properties(mylib PROPERTIES PUBLIC_HEADER mylib.h) include(GNUInstallDirs) install(TARGETS mylib PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/myproj )В дополнение к общим параметрам, перечисленным выше, каждый целевой объект может принимать следующие дополнительные аргументы:
-
-
NAMELINK_COMPONENT -
Добавлен в версии 3.12.
На некоторых платформах версиярованная общая библиотека имеет символическую ссылку, например:
lib<name>.so -> lib<name>.so.1
где
lib<name>.so.1— имя библиотеки, аlib<name>.so— "имя ссылки", позволяющее компоновщику найти библиотеку при указании-l<name>. ОпцияNAMELINK_COMPONENTаналогична опцииCOMPONENT, но она изменяет компонент установки имени ссылки общей библиотеки, если она генерируется. Если не указано, по умолчанию используется значениеCOMPONENT. Использование этого параметра вне блокаLIBRARYявляется ошибкой.Изменено в версии 3.27: Этот параметр также пригоден для блока
ARCHIVEдля управления файлом импорта компоновщика, созданным на macOS для общих библиотек с включеннымENABLE_EXPORTS.См. Пример: Установка целей с компонентами на артефакт для примера использования
NAMELINK_COMPONENT.Эта опция обычно используется для систем управления пакетами, которые имеют отдельные пакеты времени выполнения и разработки. Например, на системах Debian ожидается, что библиотека будет в пакете времени выполнения, а заголовки и имя ссылки — в пакете разработки.
См. свойства целевых объектов
VERSIONиSOVERSIONдля получения подробной информации о создании версиярованных общих библиотек. -
NAMELINK_ONLY -
Эта опция вызывает установку только имени ссылки при установке целевого объекта библиотеки. На платформах, где версиярованные общие библиотеки не имеют ссылок на имена или когда библиотека не версиярована, опция
NAMELINK_ONLYничего не устанавливает. Использование этого параметра вне блокаLIBRARYявляется ошибкой.Изменено в версии 3.27: Этот параметр также пригоден для блока
ARCHIVEдля управления файлом импорта компоновщика, созданным на macOS для общих библиотек с включеннымENABLE_EXPORTS.При указании
NAMELINK_ONLY, можно использоватьNAMELINK_COMPONENTилиCOMPONENT, но обычно предпочтительнееCOMPONENT. -
NAMELINK_SKIP -
Аналогично
NAMELINK_ONLY, но оказывает обратный эффект: она вызывает установку файлов библиотеки, отличных от имени ссылки, при установке целевого объекта библиотеки. Когда ниNAMELINK_ONLYниNAMELINK_SKIPне указаны, обе части устанавливаются. На платформах, где версиярованные общие библиотеки не имеют символических ссылок или когда библиотека не версиярована,NAMELINK_SKIPустанавливает библиотеку. Использование этого параметра вне блокаLIBRARYявляется ошибкой.Изменено в версии 3.27: Этот параметр также пригоден для блока
ARCHIVEдля управления файлом импорта компоновщика, созданным на macOS для общих библиотек с включеннымENABLE_EXPORTS.Если указан
NAMELINK_SKIP,NAMELINK_COMPONENTне имеет эффекта. Не рекомендуется использоватьNAMELINK_SKIPсовместно сNAMELINK_COMPONENT.
Команда
install(TARGETS)также может принимать следующие опции на верхнем уровне:-
EXPORT -
Эта опция связывает установленные файлы целевых объектов с экспортом, называемым
<export-name>. Она должна предшествовать любым опциям целевых объектов. Для фактической установки файла экспорта вызовитеinstall(EXPORT), описанную ниже. См. документацию свойства целевого объектаEXPORT_NAMEдля изменения имени экспортируемого целевого объекта.Если используется
EXPORT, и целевые объекты включают наборы файловPUBLICилиINTERFACE, все они должны быть указаны с аргументамиFILE_SET. Все наборы файловPUBLICилиINTERFACE, связанные с целевым объектом, включаются в экспорт. -
INCLUDES DESTINATION -
Эта опция указывает список каталогов, которые будут добавлены в свойство целевого объекта
INTERFACE_INCLUDE_DIRECTORIESцелевого объекта<targets>при экспорте командойinstall(EXPORT). Если указан относительный путь, он обрабатывается как относительный к$<INSTALL_PREFIX>.В отличие от других аргументов
DESTINATIONдля различных подкомандinstall(), пути, указанные послеINCLUDES DESTINATION, используются как есть. Они не нормализуются, и не предполагается, что они нормализованы, хотя рекомендуется указывать их в нормализованной форме (см. Нормализация). -
RUNTIME_DEPENDENCY_SET <set-name> -
Добавлен в версии 3.21.
Эта опция добавляет все зависимости времени выполнения установленных исполняемых файлов, общих библиотек и модулей к указанному набору зависимостей времени выполнения. Этот набор затем можно установить с помощью команды
install(RUNTIME_DEPENDENCY_SET).Этот ключевой и ключевой
RUNTIME_DEPENDENCIESявляются взаимоисключающими. -
RUNTIME_DEPENDENCIES <arg>... -
Добавлен в версии 3.21.
Эта опция устанавливает все зависимости времени выполнения установленных исполняемых файлов, общих библиотек и модулей вместе с самими целевыми объектами. Аргументы
RUNTIME,LIBRARY,FRAMEWORK, и общие используются для определения свойств (DESTINATION,COMPONENT, и т. д.) установки этих зависимостей.RUNTIME_DEPENDENCIESсемантически эквивалентен следующей паре вызовов:install(TARGETS ... RUNTIME_DEPENDENCY_SET <set-name>) install(RUNTIME_DEPENDENCY_SET <set-name> <arg>...)
где
<set-name>— случайное имя набора.<arg>...может включать любые из следующих ключевых слов, поддерживаемых командойinstall(RUNTIME_DEPENDENCY_SET):DIRECTORIESPRE_INCLUDE_REGEXESPRE_EXCLUDE_REGEXESPOST_INCLUDE_REGEXESPOST_EXCLUDE_REGEXESPOST_INCLUDE_FILESPOST_EXCLUDE_FILES
Ключевые слова
RUNTIME_DEPENDENCIESиRUNTIME_DEPENDENCY_SETявляются взаимоисключающими.
Библиотеки интерфейса могут быть включены в список целевых объектов для установки. Они не устанавливают артефакты, но будут включены в связанный
EXPORT. Если Объектные библиотеки перечислены, но не указано место назначения для их объектных файлов, они будут экспортированы как Библиотеки интерфейса. Этого достаточно для удовлетворения требований транзитивного использования других целевых объектов, которые ссылаются на объектные библиотеки в их реализации.Установка целевого объекта с установленным свойством целевого объекта
EXCLUDE_FROM_ALLвTRUEимеет неопределенное поведение.Добавлен в версии 3.3: Место назначения установки, заданное как аргумент
DESTINATION, может использовать "выражения генератора" с синтаксисом$<...>. См. руководство поcmake-generator-expressions(7)для доступных выражений.Добавлен в версии 3.13:
install(TARGETS)может устанавливать целевые объекты, созданные в других каталогах. При использовании таких правил установки между каталогами, запускmake install(или подобного) из подкаталога не гарантирует, что целевые объекты из других каталогов являются актуальными. Вы можете использоватьtarget_link_libraries()илиadd_dependencies(), чтобы гарантировать, что такие целевые объекты вне текущего каталога будут построены до запуска правил установки, специфичных для подкаталога.-
-
install(IMPORTED_RUNTIME_ARTIFACTS <target>... [...]) -
Добавлен в версии 3.21.
Установить исполняемые артефакты импортированных целей:
install(IMPORTED_RUNTIME_ARTIFACTS <target>... [RUNTIME_DEPENDENCY_SET <set-name>] [[LIBRARY|RUNTIME|FRAMEWORK|BUNDLE] [DESTINATION <dir>] [PERMISSIONS <permission>...] [CONFIGURATIONS <config>...] [COMPONENT <component>] [OPTIONAL] [EXCLUDE_FROM_ALL] ] [...] )Форма
IMPORTED_RUNTIME_ARTIFACTSопределяет правила установки исполняемых артефактов импортированных целей. Проекты могут выполнять это, если они хотят объединить внешние исполняемые файлы или модули в свою установку. АргументыLIBRARY,RUNTIME,FRAMEWORK, иBUNDLEимеют такие же семантику, что и в режиме TARGETS. Устанавливаются только исполняемые артефакты импортированных целей (за исключением случаев библиотекFRAMEWORK, исполняемых файловMACOSX_BUNDLEи CFBundlesBUNDLE). Например, заголовки и библиотеки импорта, связанные с DLL, не устанавливаются. В случае библиотекFRAMEWORK, исполняемых файловMACOSX_BUNDLEи CFBundlesBUNDLEустанавливается вся директория.Опция
RUNTIME_DEPENDENCY_SETдобавляет исполняемые артефакты импортированного исполняемого файла, общей библиотеки и модульной библиотекиtargetsв набор зависимостей времени выполнения<set-name>. Этот набор затем можно установить с помощью командыinstall(RUNTIME_DEPENDENCY_SET).
-
install(FILES <file>... [...]) -
install(PROGRAMS <program>... [...]) -
Примечание
При установке заголовочных файлов, рассмотрите использование наборов файлов, определённых с помощью
target_sources(FILE_SET). Наборы файлов связывают заголовки с целью, и они устанавливаются как часть цели.Установить файлы или программы:
install(<FILES|PROGRAMS> <file>... TYPE <type> | DESTINATION <dir> [PERMISSIONS <permission>...] [CONFIGURATIONS <config>...] [COMPONENT <component>] [RENAME <name>] [OPTIONAL] [EXCLUDE_FROM_ALL])Форма
FILESопределяет правила установки файлов для проекта. Имена файлов, заданные как относительные пути, интерпретируются относительно текущей директории исходных файлов. Файлы, установленные с помощью этой формы, по умолчанию получают праваOWNER_WRITE,OWNER_READ,GROUP_READ, иWORLD_READесли аргументPERMISSIONSне указан.Форма
PROGRAMSидентична формеFILESза исключением того, что права по умолчанию для устанавливаемого файла также включаютOWNER_EXECUTE,GROUP_EXECUTE, иWORLD_EXECUTE. Эта форма предназначена для установки программ, которые не являются целями, таких как скрипты оболочки. Используйте формуTARGETSдля установки целей, построенных в рамках проекта.Список
files...дляFILESилиPROGRAMSможет использовать «генераторские выражения» со синтаксисом$<...>. Смотрите руководствоcmake-generator-expressions(7)для доступных выражений. Однако, если любой элемент начинается с генераторского выражения, он должен вычисляться в полном пути.Необязательный аргумент
RENAME <name>используется для задания имени устанавливаемого файла, отличного от исходного имени файла. Переименование разрешено только при установке единственного файла командой.Должен быть указан либо аргумент
TYPE, либоDESTINATION, но не оба. АргументTYPEуказывает общий тип файла устанавливаемых файлов. Путь назначения будет затем установлен автоматически, взяв соответствующую переменную изGNUInstallDirs, или используя встроенное значение по умолчанию, если эта переменная не определена. В таблице ниже показаны поддерживаемые типы файлов и соответствующие им переменные и встроенные значения по умолчанию.TYPEАргументПеременная GNUInstallDirs
Встроенное значение по умолчанию
BIN${CMAKE_INSTALL_BINDIR}binSBIN${CMAKE_INSTALL_SBINDIR}sbinLIB${CMAKE_INSTALL_LIBDIR}libINCLUDE${CMAKE_INSTALL_INCLUDEDIR}includeSYSCONF${CMAKE_INSTALL_SYSCONFDIR}etcSHAREDSTATE${CMAKE_INSTALL_SHARESTATEDIR}comLOCALSTATE${CMAKE_INSTALL_LOCALSTATEDIR}varRUNSTATE${CMAKE_INSTALL_RUNSTATEDIR}<LOCALSTATE dir>/runDATA${CMAKE_INSTALL_DATADIR}<DATAROOT dir>INFO${CMAKE_INSTALL_INFODIR}<DATAROOT dir>/infoLOCALE${CMAKE_INSTALL_LOCALEDIR}<DATAROOT dir>/localeMAN${CMAKE_INSTALL_MANDIR}<DATAROOT dir>/manDOC${CMAKE_INSTALL_DOCDIR}<DATAROOT dir>/docLIBEXEC${CMAKE_INSTALL_LIBEXECDIR}libexecПроектам, которые хотят следовать общепринятой практике установки заголовков в подкаталоге, специфичном для проекта, потребуется указать место назначения, а не полагаться на вышеперечисленные параметры. Использование наборов файлов для заголовков вместо
install(FILES)было бы ещё лучше (см.target_sources(FILE_SET)).Обратите внимание, что некоторые встроенные значения по умолчанию для типов используют каталог
DATAROOTв качестве префикса. ПрефиксDATAROOTвычисляется аналогично типам, сCMAKE_INSTALL_DATAROOTDIRкак переменной иshareкак встроенным значением по умолчанию. Вы не можете использоватьDATAROOTв качестве параметраTYPE; пожалуйста, используйтеDATAвместо этого.Чтобы сделать пакеты совместимыми с политиками макета файловой системы дистрибутива, если проекты должны указать
DESTINATION, настоятельно рекомендуется использовать путь, начинающийся с соответствующей относительной переменнойGNUInstallDirs. Это позволяет менеджерам пакетов контролировать место назначения установки, устанавливая соответствующие переменные кэша. Следующий пример демонстрирует, как следовать этому совету при установке изображения в подкаталог документации, специфичный для проекта:include(GNUInstallDirs) install(FILES logo.png DESTINATION ${CMAKE_INSTALL_DOCDIR}/myproj )Добавлен в версии 3.4: Место назначения установки, заданное как аргумент
DESTINATION, может использовать «генераторские выражения» со синтаксисом$<...>. Смотрите руководствоcmake-generator-expressions(7)для доступных выражений.Добавлен в версии 3.20: Переименование установки, заданное как аргумент
RENAME, может использовать «генераторские выражения» со синтаксисом$<...>. Смотрите руководствоcmake-generator-expressions(7)для доступных выражений.Добавлен в версии 3.31: Аргумент
TYPEтеперь поддерживает типLIBEXEC.
-
install(DIRECTORY <dir>... [...]) -
Примечание
Для установки поддерева директорий заголовков рассмотрите использование наборов файлов, определённых с помощью
target_sources(FILE_SET)вместо этого. Наборы файлов не только сохраняют структуру директорий, но и связывают заголовки с целевым объектом и устанавливают их как часть целевого объекта.Установить содержимое одной или нескольких директорий:
install(DIRECTORY dirs... TYPE <type> | DESTINATION <dir> [FILE_PERMISSIONS <permission>...] [DIRECTORY_PERMISSIONS <permission>...] [USE_SOURCE_PERMISSIONS] [OPTIONAL] [MESSAGE_NEVER] [CONFIGURATIONS <config>...] [COMPONENT <component>] [EXCLUDE_FROM_ALL] [FILES_MATCHING] [[PATTERN <pattern> | REGEX <regex>] [EXCLUDE] [PERMISSIONS <permission>...]] [...])Форма
DIRECTORYустанавливает содержимое одной или нескольких директорий в указанном месте назначения. Структура директорий копируется дословно в место назначения. Последний компонент каждого имени директории добавляется к каталогу назначения, но для избежания этого можно использовать конечную косую черту, оставляющую последний компонент пустым. Имена директорий, заданные как относительные пути, интерпретируются относительно текущей директории исходного кода. Если имена входных директорий не заданы, каталог назначения будет создан, но ничего не будет установлено в него. ОпцииFILE_PERMISSIONSиDIRECTORY_PERMISSIONSзадают разрешения, предоставляемые файлам и директориям в месте назначения. Если указанаUSE_SOURCE_PERMISSIONS, аFILE_PERMISSIONSнет, разрешения файлов будут скопированы из структуры исходного каталога. Если разрешения не указаны, файлам будут присвоены стандартные разрешения, указанные в формеFILESкоманды, а директориям — стандартные разрешения, указанные в формеPROGRAMSкоманды.Добавлена в версии 3.1: Опция
MESSAGE_NEVERотключает вывод информации о статусе установки файла.Установку директорий можно контролировать с высокой точностью, используя опции
PATTERNилиREGEX. Эти опции «сопоставления» задают шаблон подстановки или регулярное выражение для сопоставления директорий или файлов, встречающихся внутри входных директорий. Они могут использоваться для применения определённых опций (см. ниже) к подмножеству встречающихся файлов и директорий. Полный путь к каждому входному файлу или директории (с косыми чертами) сопоставляется с выражением.PATTERNбудет соответствовать только полным именам файлов: часть полного пути, соответствующая шаблону, должна находиться в конце имени файла и предшествовать косой черте.REGEXбудет соответствовать любой части полного пути, но может использовать/и$для имитации поведенияPATTERN. По умолчанию все файлы и директории устанавливаются, независимо от того, сопоставляются ли они. ОпцияFILES_MATCHINGможет быть задана перед первой опцией сопоставления, чтобы отключить установку файлов (но не директорий), не соответствующих ни одному выражению. Например, кодinstall(DIRECTORY src/ DESTINATION doc/myproj FILES_MATCHING PATTERN "*.png")извлечёт и установит изображения из дерева исходных файлов.
Некоторые опции могут следовать за выражением
PATTERNилиREGEX, как описано в string(REGEX), и применяются только к файлам или директориям, соответствующим им. ОпцияEXCLUDEпропустит соответствующий файл или директорию. ОпцияPERMISSIONSпереопределяет настройку разрешений для соответствующего файла или директории. Например, кодinstall(DIRECTORY icons scripts/ DESTINATION share/myproj PATTERN "CVS" EXCLUDE PATTERN "scripts/*" PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ)установит директорию
iconsвshare/myproj/iconsи директориюscriptsвshare/myproj. Иконки получат стандартные разрешения файлов, скриптам будут заданы конкретные разрешения, а все директорииCVSбудут исключены.Должен быть указан либо
TYPE, либоDESTINATION, но не оба. АргументTYPEзадаёт общий тип файла файлов в перечисленных директориях, которые будут установлены. Тогда место назначения будет установлено автоматически, взяв соответствующую переменную изGNUInstallDirs, или с помощью встроенного значения по умолчанию, если эта переменная не определена. В таблице ниже приведены поддерживаемые типы файлов и соответствующие переменные и встроенные значения по умолчанию.TYPEАргументПеременная GNUInstallDirs
Встроенное значение по умолчанию
BIN${CMAKE_INSTALL_BINDIR}binSBIN${CMAKE_INSTALL_SBINDIR}sbinLIB${CMAKE_INSTALL_LIBDIR}libINCLUDE${CMAKE_INSTALL_INCLUDEDIR}includeSYSCONF${CMAKE_INSTALL_SYSCONFDIR}etcSHAREDSTATE${CMAKE_INSTALL_SHARESTATEDIR}comLOCALSTATE${CMAKE_INSTALL_LOCALSTATEDIR}varRUNSTATE${CMAKE_INSTALL_RUNSTATEDIR}<LOCALSTATE dir>/runDATA${CMAKE_INSTALL_DATADIR}<DATAROOT dir>INFO${CMAKE_INSTALL_INFODIR}<DATAROOT dir>/infoLOCALE${CMAKE_INSTALL_LOCALEDIR}<DATAROOT dir>/localeMAN${CMAKE_INSTALL_MANDIR}<DATAROOT dir>/manDOC${CMAKE_INSTALL_DOCDIR}<DATAROOT dir>/docLIBEXEC${CMAKE_INSTALL_LIBEXECDIR}libexecОбратите внимание, что некоторые встроенные значения по умолчанию для типов используют директорию
DATAROOTв качестве префикса. ПрефиксDATAROOTвычисляется аналогично типам, сCMAKE_INSTALL_DATAROOTDIRв качестве переменной иshareв качестве встроенного значения по умолчанию. Вы не можете использоватьDATAROOTв качестве параметраTYPE; используйтеDATAвместо этого.Для обеспечения совместимости пакетов с политиками расположения файлов системы дистрибуции, если проекты должны указать
DESTINATION, настоятельно рекомендуется использовать путь, начинающийся с соответствующей относительной переменнойGNUInstallDirs. Это позволяет администраторам пакетов контролировать место установки, задавая соответствующие переменные кэша.Добавлена в версии 3.4: Место назначения установки, заданное как аргумент
DESTINATION, может использовать «генераторные выражения» со синтаксисом$<...>. См. руководствоcmake-generator-expressions(7)для доступных выражений.Добавлена в версии 3.5: Список
dirs...дляDIRECTORYтакже может использовать «генераторные выражения».Добавлена в версии 3.31: Аргумент
TYPEтеперь поддерживает типLIBEXEC.
-
install(SCRIPT <file> [...]) -
install(CODE <code> [...]) -
Вызвать скрипты CMake или код во время установки:
install([[SCRIPT <file>] [CODE <code>]] [ALL_COMPONENTS | COMPONENT <component>] [EXCLUDE_FROM_ALL] [...])Форма
SCRIPTвызовет указанные скрипты CMake во время установки. Если имя скрипта — относительный путь, он будет интерпретирован относительно текущей директории исходного кода. ФормаCODEвызовет указанный код CMake во время установки. Код задаётся как единственный аргумент внутри двойных кавычек. Например, кодinstall(CODE "MESSAGE(\"Sample install message.\")")
выведет сообщение во время установки.
Добавлена в версии 3.21: При указании опции
ALL_COMPONENTS, пользовательский код скрипта установки будет выполняться для каждого компонента установки, относящейся к конкретному компоненту. Эта опция несовместима с опциейCOMPONENT.Добавлена в версии 3.14:
<file>или<code>могут использовать «генераторные выражения» с синтаксисом$<...>(в случае<file>, это относится к их использованию в имени файла, а не к содержанию файла). См. руководствоcmake-generator-expressions(7)для доступных выражений.
-
install(EXPORT <export-name> [...]) -
Установить файл CMake, экспортирующий цели для зависимых проектов:
install(EXPORT <export-name> DESTINATION <dir> [NAMESPACE <namespace>] [FILE <name>.cmake] [PERMISSIONS <permission>...] [CONFIGURATIONS <config>...] [CXX_MODULES_DIRECTORY <directory>] [EXPORT_LINK_INTERFACE_LIBRARIES] [COMPONENT <component>] [EXCLUDE_FROM_ALL] [EXPORT_PACKAGE_DEPENDENCIES]) install(EXPORT_ANDROID_MK <export-name> DESTINATION <dir> [...])Форма
EXPORTгенерирует и устанавливает файл CMake, содержащий код для импорта целей из дерева установки в другой проект. Установки целей связаны с экспортом<export-name>с помощью опцииEXPORTв сигнатуреinstall(TARGETS), описанной выше. ОпцияNAMESPACEдобавит префикс<namespace>к именам целей при записи в файл импорта. По умолчанию сгенерированный файл будет называться<export-name>.cmake, но можно указать другое имя с помощью опцииFILE. Значение, заданное для опцииFILE, должно быть именем файла с расширением.cmake.Если указана опция
CONFIGURATIONS, то файл будет установлен только при установке одной из перечисленных конфигураций. Кроме того, сгенерированный файл импорта будет ссылаться только на соответствующие конфигурации целей. Обратитесь к переменнойCMAKE_MAP_IMPORTED_CONFIG_<CONFIG>для сопоставления конфигураций зависимых проектов с установленными конфигурациями. Ключевое словоEXPORT_LINK_INTERFACE_LIBRARIES, если присутствует, вызывает экспорт содержимого свойств, соответствующих(IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?, когда политикаCMP0022имеет значениеNEW.Примечание
Установленный файл
<export-name>.cmakeможет поставляться с дополнительными файлами<export-name>-*.cmakeдля каждой конфигурации, которые загружаются с помощью шаблонного поиска. Не используйте имя экспорта, совпадающее с именем пакета, в сочетании с установкой файла<package-name>-config.cmake, поскольку последний может быть неверно сопоставлен шаблоном и загружен.Когда указана опция
COMPONENT, перечисленные<component>неявно зависят от всех компонентов, упомянутых в наборе экспорта. Экспортированный файл<name>.cmakeпотребует наличия каждого из экспортированных компонентов для корректной сборки зависимых проектов. Например, проект может определить компонентыRuntimeиDevelopment, где общие библиотеки будут в компонентеRuntime, а статические библиотеки и заголовки — в компонентеDevelopment. Набор экспорта также обычно будет частью компонентаDevelopment, но он будет экспортировать цели как из компонентаRuntime, так и из компонентаDevelopment. Следовательно, компонентRuntimeдолжен быть установлен, если установлен компонентDevelopment, но не наоборот. Если компонентDevelopmentустановлен без компонентаRuntime, зависимые проекты, которые пытаются ссылаться на него, будут иметь ошибки сборки. Упаковщики пакетов, такие как APT и RPM, обычно обрабатывают это, указав компонентRuntimeкак зависимость компонентаDevelopmentв метаданных пакета, гарантируя, что библиотека всегда устанавливается, если присутствуют заголовки и файл экспорта CMake.Добавлен в версии 3.7: В дополнение к файлам языка cmake, режим
EXPORT_ANDROID_MKможет использоваться для указания экспорта для системы сборки android ndk. Этот режим принимает те же опции, что и обычный режим экспорта. Android NDK поддерживает использование предварительно скомпилированных библиотек, как статических, так и общих. Это позволяет cmake скомпилировать библиотеки проекта и сделать их доступными для системы сборки ndk, включая транзитивные зависимости, флаги включения и определения, необходимые для использования библиотек.-
CXX_MODULES_DIRECTORY -
Добавлен в версии 3.28.
Указывает подкаталог для хранения информации о модулях C++ для целей в наборе экспорта. Этот каталог будет заполнен файлами, которые добавляют необходимую информацию о свойствах целей в соответствующие цели. Обратите внимание, что без этой информации ни один из модулей C++, которые являются частью целей в наборе экспорта, не будет поддерживать импорт в потребляющих целях.
-
EXPORT_PACKAGE_DEPENDENCIES -
Примечание
Экспериментальная опция. Включена через
CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_DEPENDENCIES.Указывает, что вызовы
find_dependency()должны быть экспортированы. Если этот аргумент указан, CMake анализирует все цели в наборе экспорта и собирает ихINTERFACEцелевые ссылки. Если такие цели были найдены с помощьюfind_package()или имеют установленное свойствоEXPORT_FIND_PACKAGE_NAME, и такая зависимость пакета не была отключена путём передачиENABLED OFFвexport(SETUP), то вызовfind_dependency()записывается с именем пакета соответствующей цели, аргументомREQUIREDи любыми дополнительными аргументами, указанными в аргументеEXTRA_ARGSкомандыexport(SETUP). Любые зависимости пакетов, которые были указаны вручную путём передачиENABLED ONвexport(SETUP), также добавляются, даже если экспортируемые цели не зависят ни от каких целей из них.Вызовы
find_dependency()записываются в следующем порядке:- Любые зависимости пакетов, перечисленные в
export(SETUP), записываются в том порядке, в котором они были первоначально указаны, независимо от того, содержат ли ониINTERFACEзависимости экспортируемых целей. - Любые зависимости пакетов, содержащие
INTERFACEзависимые ссылки экспортируемых целей и которые никогда не указывались вexport(SETUP), записываются в порядке их первоначального обнаружения.
- Любые зависимости пакетов, перечисленные в
Форма
EXPORTполезна для помощи внешним проектам в использовании целей, скомпилированных и установленных текущим проектом. Например, кодinstall(TARGETS myexe EXPORT myproj DESTINATION bin) install(EXPORT myproj NAMESPACE mp_ DESTINATION lib/myproj) install(EXPORT_ANDROID_MK myproj DESTINATION share/ndk-modules)
установит исполняемый файл
myexeв<prefix>/binи код для его импорта в файл<prefix>/lib/myproj/myproj.cmakeи<prefix>/share/ndk-modules/Android.mk. Внешний проект может загрузить этот файл с помощью команды include и обратиться к исполняемому файлуmyexeиз дерева установки с использованием имени импортированной целиmp_myexe, как если бы цель была скомпилирована в собственном дереве. -
-
install(PACKAGE_INFO <package-name> [...]) -
Добавлен в версии 3.31.
Примечание
Экспериментальная опция. Включена через
CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO.Устанавливает файл Common Package Specification, экспортирующий цели для зависимых проектов:
install(PACKAGE_INFO <package-name> EXPORT <export-name> [APPENDIX <appendix-name>] [DESTINATION <dir>] [LOWER_CASE_FILE] [VERSION <version> [COMPAT_VERSION <version>] [VERSION_SCHEMA <string>]] [DEFAULT_TARGETS <target>...] [DEFAULT_CONFIGURATIONS <config>...] [PERMISSIONS <permission>...] [CONFIGURATIONS <config>...] [COMPONENT <component>] [EXCLUDE_FROM_ALL])Форма
PACKAGE_INFOгенерирует и устанавливает файл Common Package Specification, описывающий установленные цели, чтобы их можно было использовать в другом проекте. Установки целей связаны с экспортом<export-name>с помощью опцииEXPORTв сигнатуреinstall(TARGETS), описанной выше. В отличие отinstall(EXPORT), эта информация не выражена в коде CMake и может быть использована инструментами помимо CMake. При импорте в другой проект CMake импортированные цели будут иметь префикс<package-name>::. По умолчанию сгенерированный файл будет называться<package-name>[-<appendix-name>].cps. Если заданоLOWER_CASE_FILE, имя пакета в системе (в имени файла и пункте назначения установки) сначала будет преобразовано в нижний регистр.Если
DESTINATIONне указано, используется платформа-зависимый стандарт.Если указано
APPENDIX, вместо генерации файла спецификации верхнего уровня, указанные цели будут экспортированы как приложение к указанному пакету. Приложения могут использоваться для разделения менее часто используемых целей (вместе с их внешними зависимостями) от остальной части пакета. Это позволяет потребителям игнорировать транзитивные зависимости для целей, которые они не используют, и также позволяет одному логическому «пакету» состоять из артефактов, созданных несколькими деревьями сборки.Приложениям запрещено изменять основные метаданные пакета; поэтому ни
VERSION, ниCOMPAT_VERSION, ниVERSION_SCHEMA, ниDEFAULT_TARGETSилиDEFAULT_CONFIGURATIONSне могут быть указаны в сочетании сAPPENDIX. Кроме того, настоятельно рекомендуется использоватьLOWER_CASE_FILEсогласованно между основным пакетом и любыми приложениями.
-
install(RUNTIME_DEPENDENCY_SET <set-name> [...]) -
Добавлен в версии 3.21.
Устанавливает набор зависимостей во время выполнения:
install(RUNTIME_DEPENDENCY_SET <set-name> [[LIBRARY|RUNTIME|FRAMEWORK] [DESTINATION <dir>] [PERMISSIONS <permission>...] [CONFIGURATIONS <config>...] [COMPONENT <component>] [NAMELINK_COMPONENT <component>] [OPTIONAL] [EXCLUDE_FROM_ALL] ] [...] [PRE_INCLUDE_REGEXES <regex>...] [PRE_EXCLUDE_REGEXES <regex>...] [POST_INCLUDE_REGEXES <regex>...] [POST_EXCLUDE_REGEXES <regex>...] [POST_INCLUDE_FILES <file>...] [POST_EXCLUDE_FILES <file>...] [DIRECTORIES <dir>...] )Устанавливает набор зависимостей во время выполнения, ранее созданный одной или несколькими командами
install(TARGETS)илиinstall(IMPORTED_RUNTIME_ARTIFACTS). Зависимости целевых объектов, относящихся к набору зависимостей во время выполнения, устанавливаются вRUNTIMEназначение и компонент на платформах DLL, и вLIBRARYназначение и компонент на платформах, не использующих DLL. Фреймворки macOS устанавливаются вFRAMEWORKназначение и компонент. Целевые объекты, скомпилированные в дереве сборки, никогда не будут установлены как зависимости во время выполнения, а также их собственные зависимости, если только сами целевые объекты не будут установлены с помощьюinstall(TARGETS).Сгенерированный скрипт установки вызывает
file(GET_RUNTIME_DEPENDENCIES)для файлов дерева сборки, чтобы вычислить зависимости во время выполнения. Файлы исполняемых файлов дерева сборки передаются как аргументEXECUTABLES, файлы динамических библиотек дерева сборки как аргументLIBRARIES, а модули дерева сборки как аргументMODULES. В macOS, если один из исполняемых файлов являетсяMACOSX_BUNDLE, этот исполняемый файл передаётся как аргументBUNDLE_EXECUTABLE. В наборе зависимостей во время выполнения macOS может быть не более одного такого исполняемого файла-пакета. СвойствоMACOSX_BUNDLEне оказывает влияния на другие платформы. Обратите внимание, чтоfile(GET_RUNTIME_DEPENDENCIES)поддерживает сборку зависимостей во время выполнения только для платформ Windows, Linux и macOS, поэтомуinstall(RUNTIME_DEPENDENCY_SET)имеет такое же ограничение.Следующие подаргументы передаются в качестве соответствующих аргументов в
file(GET_RUNTIME_DEPENDENCIES)(для тех, которые предоставляют список каталогов, регулярных выражений или файлов, отличный от пустого). Все они поддерживаютgenerator expressions.DIRECTORIES <dir>...PRE_INCLUDE_REGEXES <regex>...PRE_EXCLUDE_REGEXES <regex>...POST_INCLUDE_REGEXES <regex>...POST_EXCLUDE_REGEXES <regex>...POST_INCLUDE_FILES <file>...POST_EXCLUDE_FILES <file>...
Примечание
Эта команда заменяет команду install_targets() и свойства целевых объектов PRE_INSTALL_SCRIPT и POST_INSTALL_SCRIPT. Она также заменяет формы FILES команд install_files() и install_programs(). Порядок обработки этих правил установки относительно правил, сгенерированных командами install_targets(), install_files() и install_programs(), не определён.
Примеры
Пример: Установка целевых объектов с компонентами для каждого артефакта
Рассмотрим проект, в котором определены целевые объекты с различными типами артефактов:
add_executable(myExe myExe.c) add_library(myStaticLib STATIC myStaticLib.c) target_sources(myStaticLib PUBLIC FILE_SET HEADERS FILES myStaticLib.h) add_library(mySharedLib SHARED mySharedLib.c) target_sources(mySharedLib PUBLIC FILE_SET HEADERS FILES mySharedLib.h) set_property(TARGET mySharedLib PROPERTY SOVERSION 1)
Мы можем вызвать install(TARGETS) с аргументами <artifact-kind> для задания различных параметров для каждого типа артефакта:
install(TARGETS
myExe
mySharedLib
myStaticLib
RUNTIME # Following options apply to runtime artifacts.
COMPONENT Runtime
LIBRARY # Following options apply to library artifacts.
COMPONENT Runtime
NAMELINK_COMPONENT Development
ARCHIVE # Following options apply to archive artifacts.
COMPONENT Development
DESTINATION lib/static
FILE_SET HEADERS # Following options apply to file set HEADERS.
COMPONENT Development
)
Это приведет к:
- Установке
myExeв<prefix>/bin, назначение по умолчанию для артефакта RUNTIME, как часть компонентаRuntime. -
На платформах, не использующих DLL:
- Установке
libmySharedLib.so.1в<prefix>/lib, назначение по умолчанию для артефакта LIBRARY, как часть компонентаRuntime. - Установке
libmySharedLib.so"namelink" (символической ссылки) в<prefix>/lib, назначение по умолчанию для артефакта LIBRARY, как часть компонентаDevelopment.
- Установке
-
На платформах DLL:
- Установке
mySharedLib.dllв<prefix>/bin, назначение по умолчанию для артефакта RUNTIME, как часть компонентаRuntime. - Установке
mySharedLib.libв<prefix>/lib/static, указанное назначение для артефакта ARCHIVE, как часть компонентаDevelopment.
- Установке
- Установке
myStaticLibв<prefix>/lib/static, указанное назначение для артефакта ARCHIVE, как часть компонентаDevelopment. - Установке
mySharedLib.hиmyStaticLib.hв<prefix>/include, назначение по умолчанию для набора файлов типа HEADERS, как часть компонентаDevelopment.
Пример: Установка целевых объектов в назначения по конфигурациям
Каждый вызов install(TARGETS) устанавливает заданный целевой объект артефакт вывода в, самое большее, одно DESTINATION, но само правило установки может быть отфильтровано опцией CONFIGURATIONS. Для установки в разное назначение для каждой конфигурации требуется по одному вызову на конфигурацию. Например, код:
install(TARGETS myExe
CONFIGURATIONS Debug
RUNTIME
DESTINATION Debug/bin
)
install(TARGETS myExe
CONFIGURATIONS Release
RUNTIME
DESTINATION Release/bin
)
установит myExe в <prefix>/Debug/bin в конфигурации Debug и в <prefix>/Release/bin в конфигурации Release.
Сгенерированный скрипт установки
Примечание
Использование этой функции не рекомендуется. Пожалуйста, рассмотрите использование cmake --install вместо неё.
Команда install() генерирует файл cmake_install.cmake в директории сборки, который используется внутренне целевым объектом установки и CPack. Вы также можете вызвать этот скрипт вручную с помощью cmake -P. Этот скрипт принимает несколько переменных:
-
COMPONENT -
Установите эту переменную, чтобы установить только один компонент CPack, а не все. Например, если вы хотите установить только компонент
Development, запуститеcmake -DCOMPONENT=Development -P cmake_install.cmake. -
BUILD_TYPE -
Установите эту переменную, чтобы изменить тип сборки, если вы используете генератор с несколькими конфигурациями. Например, для установки с конфигурацией
Debug, запуститеcmake -DBUILD_TYPE=Debug -P cmake_install.cmake. -
DESTDIR -
Это переменная среды, а не переменная CMake. Она позволяет изменить префикс установки на системах UNIX. Подробнее см.
DESTDIR.
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/command/install.html