我有一个依赖jemalloc
作为外部库的项目。 jemalloc
依次依赖pthread
。在cmake中,如何指定这两个库之间的依赖关系?
到目前为止,我试过了:
target_link_libraries(jemalloc pthread)
是外部库,jemalloc
无效
target_link_libraries(current_library jemalloc pthread)
有效,但在使用pthread
的所有库中jemalloc
之后指定jemalloc
是不方便的。我还需要为每个可执行文件和测试添加jemalloc pthread
。答案 0 :(得分:1)
您可以设置导入的库的IMPORTED_LINK_DEPENDENT_LIBRARIES
和/或IMPORTED_LINK_INTERFACE_LIBRARIES
属性以指定依赖项。
答案 1 :(得分:0)
我认为没有办法正确地使用"指定两个外部库之间的依赖关系,如下所示。
你可以做的最好的事情就是每个find_library
和结果(假设它们都被正确找到)set
代表两个库的单个变量。
所以,比如:
find_library(JemallocLib jemalloc)
find_library(PthreadLib pthread)
set(JemallocLibs ${JemallocLib} ${PthreadLib})
然后你可以这样做。
target_link_libraries(MyLib ${JemallocLibs})
target_link_libraries(MyExe MyLib) # automatically links jemalloc and pthread too