使用以下CMakeLists.txt构建脚本:
include( ExternalProject )
ExternalProject_Add( framework SOURCE_DIR ${framework_SOURCE}
PREFIX framework_build
INSTALL_DIR ${framework_DISTRIBUTION} )
...
add_library( ${PROJECT_NAME} SHARED ${BUILD_MANIFEST} )
add_dependencies( ${PROJECT_NAME} framework )
当我尝试执行并行构建(
make -j5
)时,由于不存在来自框架的构建伪像,有时会失败。未遵守add_dependencies
固定的构建顺序。我是否误解了add_dependencies的documentation?
cmake --graphviz=graph.dot
的输出 最佳答案
好的,因此CMake的更新版本警告我该框架依赖项不存在。 ExternalProject_Add和add_dependencies不能相互使用,因为ExternalProject_Add尚未实际构建,因此已将该框架注册为高级目标。
注意:
将来遇到此问题的任何人。我发现@matiu的另一个SO post解决了我的问题。
关于c++ - CMake ExternalProject_Add和并行构建,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31222734/