在我们的项目中,我们想要使用第三方库(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.
任何修复或替代解决方案将不胜感激!(更改第三方库不是一个选项)谢谢!
这里有几个问题:
external_project应该ExternalProject_AddDEPENDavailable 的属性 - 该set_source_files_properties命令在这里不起作用。(以下是源文件上可用的属性)add_library期望传递源文件列表,而不是另一个 CMake 目标(这A是)add_dependency应该add_dependencies除了这 4 行之外,一切都可以:-)
因此,问题是您希望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})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4243 次 |
| 最近记录: |