Как установить LDFLAGS в CMakeLists.txt? - PullRequest
59 голосов
/ 21 мая 2011

Я установил CFLAGS в CMake с помощью CMAKE_C_FLAGS.Что-то вроде этого, чтобы установить LDFLAGS?

Ответы [ 5 ]

49 голосов
/ 22 мая 2011

Это зависит от того, что вы хотите:

A) Если вы хотите указать, на какие библиотеки ссылаться, вы можете использовать find_library для поиска библиотек, а затем использовать link_directories и target_link_libraries to.

Конечно, часто стоит потратить усилия на написание хорошего find_package сценария, который бы красиво добавляет «импортированные» библиотеки с помощью 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
20 голосов
/ 21 мая 2011

Посмотрите на:

CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS
5 голосов
/ 04 августа 2017

Если вы хотите добавить флаг к каждой ссылке, например, -fsanitize=address, тогда я бы не рекомендовал использовать CMAKE_*_LINKER_FLAGS.Даже если они все настроены, он все равно не использует флаг при связывании фреймворка в OSX и, возможно, в других ситуациях.Вместо этого используйте link_libraries():

add_compile_options("-fsanitize=address")
link_libraries("-fsanitize=address")

Это работает для всего.

5 голосов
/ 21 мая 2011

Вы можете указать флаги компоновщика в target_link_libraries .

4 голосов
/ 07 октября 2016

Для связи с библиотеками см. Ответ Андре .

Для флагов компоновщика - следующие 4 переменные CMake:

CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS

могут легко манипулироваться для различных конфигов (отладка, выпуск ...) с макросом ucm_add_linker_flags ucm

...