2

我有一个依赖于jemalloc外部库的项目。反过来jemalloc取决于。pthread在cmake中,如何指定这两个库之间的依赖关系?

到目前为止,我尝试过:

  1. target_link_libraries(jemalloc pthread)这不起作用,因为jemalloc它是一个外部库
  2. target_link_libraries(current_library jemalloc pthread)哪个有效,但是在所有使用的库中指定pthreadafter是不方便的。我还需要为每个可执行文件和测试添加。jemallocjemallocjemalloc pthread
4

2 回答 2

1

您可以设置导入库的IMPORTED_LINK_DEPENDENT_LIBRARIES和/或IMPORTED_LINK_INTERFACE_LIBRARIES属性以指定依赖项。

于 2013-09-17T08:58:06.343 回答
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
于 2013-09-15T09:33:14.983 回答