使用以下 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
的文档?来自
cmake --graphviz=graph.dot
的输出。
ExternalProject_Add
和add_dependencies
组合的工作示例。因为构建有时会失败,您可以比较代码并找到差异。在我的情况下,同时运行cmake不会导致任何问题。图表还显示主项目依赖于外部项目。如果没有add_dependencies
,cmake不知道这些项目之间的依赖关系,并尝试并行构建它们。 - jakule