Spec-Zone.ru › CMake

INTERFACE_LINK_OPTIONS

Добавлено в версии 3.13.

Список требований к общедоступным параметрам компоновки библиотеки.

Цели могут заполнять это свойство, чтобы публиковать параметры компоновки, необходимые для компиляции с заголовочными файлами цели. Команда target_link_options() заполняет это свойство значениями, переданными ключевым словам PUBLIC и INTERFACE. Проекты также могут получать и задавать это свойство напрямую.

Если зависимости целей указаны с помощью target_link_libraries(), CMake считывает это свойство у всех зависимостей цели, чтобы определить свойства сборки потребителя.

Содержимое INTERFACE_LINK_OPTIONS может использовать «генераторные выражения» с синтаксисом $<...>. Доступные выражения описаны в руководстве cmake-generator-expressions(7). Дополнительные сведения об определении свойств системы сборки см. в руководстве cmake-buildsystem(7).

Параметры компоновки, зависящие от хоста и устройства

Добавлено в версии 3.18: Если выполняется этап компоновки устройства, управляемый свойствами CUDA_SEPARABLE_COMPILATION и CUDA_RESOLVE_DEVICE_SYMBOLS и политикой CMP0105, необработанные параметры передаются на этапы компоновки хоста и устройства (для компоновки устройства они заключаются в -Xcompiler или эквивалентную конструкцию). Параметры, заключённые в генераторное выражение $<DEVICE_LINK:...>, используются только на этапе компоновки устройства. Параметры, заключённые в генераторное выражение $<HOST_LINK:...>, используются только на этапе компоновки хоста.

Удаление дубликатов параметров

Итоговый набор параметров для цели формируется путём объединения параметров текущей цели и требований к использованию её зависимостей. Из набора параметров удаляются дубликаты.

Добавлено в версии 3.12: Хотя удаление дубликатов полезно для отдельных параметров, этот этап может нарушить группировку параметров. Например, -option A -option B превращается в -option A B. Группу параметров можно задать с помощью кавычек, как в командной оболочке, и префикса SHELL:. Префикс SHELL: удаляется, а оставшаяся строка параметров разбирается в режиме UNIX_COMMAND команды separate_arguments(). Например, "SHELL:-option A" "SHELL:-option B" превращается в -option A -option B.

Учет различий драйверов компилятора

Для передачи параметров инструменту компоновщика у каждого драйвера компилятора используется собственный синтаксис. Префикс LINKER: и разделитель , позволяют переносимым способом задавать параметры, передаваемые инструменту компоновщика. LINKER: заменяется соответствующим параметром драйвера, а , — соответствующим разделителем драйвера. Префикс и разделитель драйвера задаются значениями переменных CMAKE_<LANG>_LINKER_WRAPPER_FLAG и CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP.

Например, "LINKER:-z,defs" превращается в -Xlinker -z -Xlinker defs для Clang и в -Wl,-z,defs для GNU GCC.

Префикс LINKER: можно указать как часть выражения с префиксом SHELL:.

Префикс LINKER: поддерживает альтернативный синтаксис: указание аргументов с помощью префикса SHELL: и пробела в качестве разделителя. Тогда предыдущий пример принимает вид "LINKER:SHELL:-z defs".

Примечание

Не допускается указывать префикс SHELL: где-либо, кроме начала префикса LINKER:.

© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/prop_tgt/INTERFACE_LINK_OPTIONS.html

Spec-Zone.ru

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