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()-
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/v3.31/command/target_link_options.html