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: удаляется, а остальная часть строки опций анализируется в режиме separate_arguments() UNIX_COMMAND. Например, "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> добавляют флаги языка, передаваемые во все вызовы компилятора. Это включает вызовы, которые управляют компиляцией и теми, которые управляют компоновкой.

© 2000–2024 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