我们想用CMAKE系统构建一个共享库.它是这样的:
lib/
CMakeLists.txt
src/
CMakeLists.txt
module/
CMakeLists.txt
module1.c
foo.c
Run Code Online (Sandbox Code Playgroud)
module1.c需要一些标准的共享库librt.我们有
add_library(module module1.c)
target_link_libraries(module rt)
Run Code Online (Sandbox Code Playgroud)
在module/子目录中.但仍然得到错误的东西librt是未知的.
如果librt与-lrt链接,那么在CMake中你可以用这种方式链接它:
target_link_libraries(module -lrt)
Run Code Online (Sandbox Code Playgroud)
实际上你正在做的事情应该有效。如果编译器找不到该库,它可能根本不在标准库路径中。您可以使用以下帮助来指定不同的link_directories(-L/some/path编译器参数)。
cmake --help-command link_directories
Run Code Online (Sandbox Code Playgroud)
在调试 CMake 构建时可以做的另一件有用的事情是打印出运行编译器的命令:
make VERBOSE=1
Run Code Online (Sandbox Code Playgroud)
然后,您可以接受命令并手动调整它们以使其工作。之后就是修改的问题了CMAKE_C_FLAGS//include_directorieslink_directories