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

Bro*_*Cat 5 cmake

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

external_project(
    A
    ...
)
set_source_files_properties(B PROPERTIES DEPEND A)
add_library(C ... A)
add_dependency(C B)
Run Code Online (Sandbox Code Playgroud)

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

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

Fra*_*ser 4

这里有几个问题:

除了这 4 行之外,一切都可以:-)

因此,问题是您希望Badd_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})
Run Code Online (Sandbox Code Playgroud)