如何解决cmake中jemalloc和pthread之间的依赖关系?

时间:2013-09-15 05:11:23

标签: pthreads cmake

我有一个依赖jemalloc作为外部库的项目。 jemalloc依次依赖pthread。在cmake中,如何指定这两个库之间的依赖关系?

到目前为止,我试过了:

    由于target_link_libraries(jemalloc pthread)是外部库,
  1. jemalloc无效
  2. target_link_libraries(current_library jemalloc pthread)有效,但在使用pthread的所有库中jemalloc之后指定jemalloc是不方便的。我还需要为每个可执行文件和测试添加jemalloc pthread

2 个答案:

答案 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