对不以lib*开头的库使用target_link_libraries



我正试图将我的程序(hello(与一个不以"lib"开头的特殊库(/path/abc.so(链接起来。

这是我的CMakeLists.txt

add_executables(hello hello.c)
target_link_libraries(hello /path/abc.so)

它工作得很好,但有其他方法可以避免这种完整路径(/path/abc.so(的事情吗?我不想制作abc.so的符号链接或修改abc.so本身。

最好的选择可能不是直接链接库,而是使用导入的目标:你可以将你的图书馆目标设置为

add_library(ABC SHARED IMPORTED)
set_target_properties(ABC PROPERTIES
IMPORTED_LOCATION path/to/library/abc.so
INTERFACE_INCLUDE_DIRECTORIES path/to/include
)

然后你可以将其链接为目标:

target_link_libraries(hello ABC)

下一步是创建一个库查找模块或配置模块,这样您就不会在CMakeLists.txt中定义完整路径,而是搜索库,或者只包含一个包含所有路径的.cmake文件。

看看这里和这里

最新更新