почему set (CMAKE_C_FLAGS "$ {CMAKE_C_FLAGS} -ldl") не работает? - PullRequest
0 голосов
/ 01 ноября 2019

когда моему приложению нужна библиотека ссылок pthread, я пишу set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lpthread") в CmakeLists.txt, и он работает. Но когда мне нужна ссылка dl lib, set ( CMAKE_C_FLAGS_C_FLAGS "${CMAKE_C_FLAGS} -ldl") не работает. Если я использую gcc напрямую, gcc sqlite3.c shell.c -lpthread -ldl работаетотлично. после гугла я получаю, что target_link_libraries(MY_TARGET LIB1 LIB2 ... LIBN ${CMAKE_DL_LIBS}) работает. я пытался. я работал. я хочу знать, почему set(CMAKE_C_FLAGS...) не работает?

1 Ответ

2 голосов
/ 01 ноября 2019

Кажется, вы пытаетесь связать библиотеку dl. Однако CMAKE_C_FLAGS влияет только на компиляцию, но не на компоновку. Может быть, вы хотите установить CMAKE_*_LINKER_FLAGS (флаги компоновщика разделены для EXE, SHARED и MODULE).

Однако современный способ объявить используемые библиотекиэто команда target_link_libraries, как вы упомянули.

Вот соответствующие ссылки на документацию.

...