Spec-Zone.ru › CMake

add_link_options

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

Добавляет параметры для этапа компоновки целей исполняемых файлов, разделяемых библиотек или библиотек-модулей в текущем каталоге и его подкаталогах, добавленных после вызова этой команды.

add_link_options(<option> ...)

Эту команду можно использовать для добавления любых параметров компоновки, однако существуют альтернативные команды для добавления библиотек (target_link_libraries() или link_libraries()). См. документацию по свойствам directory и target LINK_OPTIONS.

Примечание

Эту команду нельзя использовать для добавления параметров для целей статических библиотек, поскольку они не используют компоновщик. Чтобы добавить флаги архиватора или библиотекаря MSVC, см. свойство цели STATIC_LIBRARY_OPTIONS.

Аргументы add_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:, не поддерживается.

См. также

  • link_libraries()
  • target_link_libraries()
  • target_link_options()
  • CMAKE_<LANG>_FLAGS и CMAKE_<LANG>_FLAGS_<CONFIG> добавляют языковые флаги, передаваемые при всех вызовах компилятора. Это относится как к вызовам для компиляции, так и к вызовам для компоновки.
  • Добавлено в версии 4.3: CMAKE_<LANG>_LINK_FLAGS и CMAKE_<LANG>_LINK_FLAGS_<CONFIG> добавляют языковые флаги, передаваемые при всех вызовах компилятора, выполняющих компоновку.

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

Spec-Zone.ru

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