CMake: Как установить LDFLAGS в CMakeLists.txt?
Я установил CFLAGS в CMake по CMAKE_C_FLAGS. Это что-то вроде этого, чтобы установить LDFLAGS?
5 ответов:
Это зависит немного от того, что вы хотите:
A) если вы хотите указать, на какие библиотеки ссылаться, вы можете использовать find_library найти библиотеки, а затем использовать link_directories и target_link_libraries для.
конечно, это часто стоит того, чтобы написать хороший find_package скрипт, который красиво добавляет "импортированные" библиотеки с add_library (импортированный YourLib) С правильного места, и платформа / построить конкретные пре-и суффиксы. Затем вы можете просто обратиться к YourLib и использовать target_link_libraries.
B) если вы хотите указать определенные флаги компоновщика, например '-mthreads' или '- Wl,--export-all-symbols' с MinGW-GCC, вы можете использовать CMAKE_EXE_LINKER_FLAGS. Есть также два похожих, но недокументированных флага для модулей, общих или статических библиотек:
CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS CMAKE_STATIC_LINKER_FLAGS
посмотреть:
CMAKE_EXE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS CMAKE_STATIC_LINKER_FLAGS
вы можете указать флаги компоновщика в target_link_libraries.
для связывания с библиотеками см. Андрэ.
для флагов компоновщика - следующие 4 переменные CMake:
CMAKE_EXE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS CMAKE_STATIC_LINKER_FLAGS
можно легко манипулировать для различных конфигураций (debug, release...) с помощью ucm_add_linker_flags макрос ucm
если вы хотите добавить флаг к каждый ссылка, например:
-fsanitize=address
тогда я бы не рекомендовал использоватьCMAKE_*_LINKER_FLAGS
. Даже если все они установлены, он по-прежнему не использует флаг при связывании фреймворка на OSX и, возможно, в других ситуациях. Вместо этого используйтеlink_libraries()
:add_compile_options("-fsanitize=address") link_libraries("-fsanitize=address")
это работает для всего.