使用以下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/

10-09 06:36
查看更多