LINK_OPTIONS
Добавлен в версии 3.13.
Список опций для использования на этапе связывания (link) для целей общих библиотек, модулей и исполняемых файлов, а также на этапе связывания с устройством. Цели, являющиеся статическими библиотеками, должны использовать свойство цели STATIC_LIBRARY_OPTIONS.
Эти опции используются как для обычного связывания, так и для связывания с устройством (см. политику CMP0105). Для управления опциями связывания для этапов обычного и устройства, можно использовать генераторские выражения $<HOST_LINK> и $<DEVICE_LINK>.
Это свойство содержит список опций, разделенных точкой с запятой, указанных для данной цели. Используйте команду target_link_options(), чтобы добавить больше опций.
Это свойство инициализируется свойством каталога LINK_OPTIONS, когда создается цель, и используется генераторами для установки опций для компилятора.
Содержимое LINK_OPTIONS может использовать «генераторские выражения» с синтаксисом $<...>. См. руководство cmake-generator-expressions(7) для доступных выражений. См. руководство cmake-buildsystem(7) для получения дополнительной информации о определении свойств buildsystem.
Примечание
Это свойство должно использоваться вместо свойства LINK_FLAGS.
Опции связывания, специфичные для хоста и устройства
Добавлен в версии 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: и разделитель , могут использоваться для указания опций, передаваемых инструменту компоновки (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–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.31/prop_tgt/LINK_OPTIONS.html