5

在我们的项目中,我们想使用一个第三方库(A),它是使用自动工具构建的,它会生成一个我们需要的目标文件(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。

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

4

1 回答 1

3

这里有几个问题:

除了这 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})
于 2013-03-14T23:10:58.960 回答