在我们的项目中,我们想要使用第三方库(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.
任何修复或替代解决方案将不胜感激! (更改第三方库不是一个选项) 谢谢!
答案 0 :(得分:3)
这里有一些问题:
external_project
应为ExternalProject_Add
DEPEND
属性 - set_source_files_properties
命令在此处无效。 (这是properties available on source files)add_library
需要传递源文件列表,而不是另一个CMake目标(A
是add_dependency
应为add_dependencies
除了这四行之外,还可以: - )
所以问题是你希望在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})