Spec-Zone.ru › CMake 3.22

target_link_options

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

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

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

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

Эта команда может быть использована для добавления любых параметров компоновки, но существуют альтернативные команды для добавления библиотек (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:...> generator expression, будут использоваться только для шага компоновки устройства. Параметры, обернутые в $<HOST_LINK:...> generator expression, будут использоваться только для шага компоновки хоста.

Уникализация параметров

Конечный набор параметров, используемых для целевого объекта, строится путём накопления параметров от текущего целевого объекта и требований его зависимостей. Набор параметров уникализируется для предотвращения повторений.

Новое в версии 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:, не поддерживается.

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

Spec-Zone.ru

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