使用cmake,如何将external_project语句构建的目标文件链接到另一个库?

时间:2013-03-14 19:45:29

标签: cmake

在我们的项目中,我们想要使用第三方库(A),它是使用autotools构建的,它生成一个目标文件(B),我们需要一个库(C)的链接时间。

external_project(
    A
    ...
)
set_source_files_properties(B PROPERTIES DEPEND A)
add_library(C ... A)
add_dependency(C B)

我的印象是,这应该可以解决问题,但是cmake命令失败了,说明在检查add_library期间找不到文件A.

任何修复或替代解决方案将不胜感激! (更改第三方库不是一个选项) 谢谢!

1 个答案:

答案 0 :(得分:3)

这里有一些问题:

除了这四行之外,还可以: - )

所以问题是你希望在B调用中包含目标文件add_library,但它在配置时不可用(当调用CMake时),仅在建设时间。

我认为你将不得不做类似的事情:

ExternalProject_Add(
    A
    ...
)

set_source_files_properties(
    ${B} PROPERTIES
    EXTERNAL_OBJECT TRUE  # Identifies this as an object file
    GENERATED TRUE  # Avoids need for file to exist at configure-time
)

add_library(C ... ${B})