-1

当我的应用程序需要链接 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可以完美运行。在 google 之后,我得到了它。我 target_link_libraries(MY_TARGET LIB1 LIB2 ... LIBN ${CMAKE_DL_LIBS})试过了.我工作了。我想知道为什么set(CMAKE_C_FLAGS...)不工作?

4

1 回答 1

2

您似乎正在尝试链接 dl 库。但是,CMAKE_C_FLAGS只影响编译,不影响链接。也许您更愿意设置CMAKE_*_LINKER_FLAGS(链接器标志被分隔为EXE,SHAREDMODULE)。

但是,正如您所提到的,声明使用的库的现代方式是命令。target_link_libraries

以下是文档的相应链接。

于 2019-11-01T17:18:57.737 回答