Spec-Zone.ru › CMake

LINK_OPTIONS

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

Список параметров, используемых на этапе компоновки общих библиотек, модулей и исполняемых файлов, а также на этапе компоновки устройства. Для целей — статических библиотек необходимо использовать свойство цели STATIC_LIBRARY_OPTIONS.

Эти параметры используются как при обычной компоновке, так и при компоновке устройства (см. политику CMP0105). Для управления параметрами компоновки на обычном этапе и этапе компоновки устройства можно использовать генераторные выражения $<HOST_LINK> и $<DEVICE_LINK>.

Это свойство содержит список, разделённый точками с запятой, параметров, заданных для этой цели на данный момент. Используйте команду target_link_options(), чтобы добавить дополнительные параметры.

При создании цели это свойство инициализируется свойством каталога LINK_OPTIONS; генераторы используют его для задания параметров компилятора.

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

Примечание

Следует использовать это свойство, а не свойство LINK_FLAGS.

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

Добавлено в версии 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/LINK_OPTIONS.html

Spec-Zone.ru

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