Spec-Zone.ru › CMake 3.26

target_link_options

Новое в версии 3.13.

Добавляет параметры к шагу компоновки для исполняемого файла, библиотеки динамической или модульной библиотеки.

target_link_options(<target> [BEFORE]
  <INTERFACE|PUBLIC|PRIVATE> [items1...]
  [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])

Указанное <target> должно быть создано командой, такой как add_executable() или add_library(), и не должно быть целью-псевдонимом.

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

Примечание

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

Если BEFORE указано, содержимое будет добавлено в начало свойства, а не в конец.

Ключевые слова INTERFACE, PUBLIC и PRIVATE необходимы для указания области следующих аргументов. Элементы PRIVATE и PUBLIC заполнят свойство LINK_OPTIONS цели <target>. Элементы PUBLIC и INTERFACE заполнят свойство INTERFACE_LINK_OPTIONS цели <target>. Следующие аргументы задают параметры компоновки. Повторные вызовы для одного и того же <target> добавляют элементы в порядке вызова.

Примечание

Импортированные цели поддерживают только элементы INTERFACE.

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

См. также

  • target_compile_definitions()
  • target_compile_features()
  • target_compile_options()
  • target_include_directories()
  • target_link_libraries()
  • target_link_directories()
  • target_precompile_headers()
  • target_sources()

© 2000–2023 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.26/command/target_link_options.html

Spec-Zone.ru

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