Spec-Zone.ru › CMake 3.18

target_link_options

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

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>. (Импортированные цели поддерживают только INTERFACE элементы.) Следующие аргументы указывают опции компоновки. Повторные вызовы для одного и того же <target> добавляют элементы в вызываемом порядке.

Аргументы target_link_options могут использовать "генераторские выражения" с синтаксисом $<...>. См. руководство cmake-generator-expressions(7) для доступных выражений. См. руководство cmake-buildsystem(7) для более подробной информации о построении свойств системы сборки.

Если задействован шаг компоновки устройства, который управляется свойствами CUDA_SEPARABLE_COMPILATION и CUDA_RESOLVE_DEVICE_SYMBOLS и политикой CMP0105, исходные опции будут переданы шагам компоновки хоста и устройства (обораченные в -Xcompiler или эквивалент для компоновки устройства). Опции, обернутые $<DEVICE_LINK:...> generator expression, будут использоваться только для шага компоновки устройства. Опции, обернутые $<HOST_LINK:...> generator expression, будут использоваться только для шага компоновки хоста.

Конечный набор опций компиляции или компоновки, используемых для цели, создается путем накопления опций от текущей цели и требований ее зависимостей. Набор опций дедублируется для предотвращения повторов. Хотя это выгодно для отдельных опций, шаг дедупликации может нарушать группы опций. Например, -D A -D B преобразуется в -D A B. Можно указать группу опций, используя оболочечные кавычки вместе с префиксом SHELL:. Префикс SHELL: удаляется, а остальная часть строки опций анализируется в режиме separate_arguments() UNIX_COMMAND. Например, "SHELL:-D A" "SHELL:-D B" преобразуется в -D A -D 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–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.18/command/target_link_options.html

Spec-Zone.ru

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