Я установил CFLAGS в CMake на CMAKE_C_FLAGS. Что-то вроде этого, чтобы установить LDFLAGS?
CMake: Как установить LDFLAGS в CMakeLists.txt?
Ответ 1
Это зависит немного от того, что вы хотите:
A) Если вы хотите указать, к каким библиотекам обращаться, вы можете использовать find_library для поиска библиотек, а затем использовать link_directories и target_link_libraries to.
Конечно, часто стоит написать хороший find_package script, который красиво добавляет "импортированные" библиотеки с add_library (YourLib IMPORTED) с правильными местоположениями и предварительными и суффиксами платформы/сборки. Затем вы можете просто ссылаться на "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
Ответ 2
Посмотрите:
CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS
Ответ 3
Вы можете указать флаги компоновщика в target_link_libraries.
Ответ 4
Если вы хотите добавить флаг к каждой ссылке, например. -fsanitize=address
, то я бы не рекомендовал использовать CMAKE_*_LINKER_FLAGS
. Даже при их установке все еще не используется флаг при связывании фреймворка на OSX и, возможно, в других ситуациях. Вместо этого используйте link_libraries()
:
add_compile_options("-fsanitize=address")
link_libraries("-fsanitize=address")
Это работает для всего.
Ответ 5
Для связи с библиотеками см. ответ Андре.
Для флагов компоновщика - следующие 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