Cmake 使用Make multi-threaded时强制PROTOBUF_GENERATE_CPP完成

Cmake 使用Make multi-threaded时强制PROTOBUF_GENERATE_CPP完成,cmake,protocol-buffers,Cmake,Protocol Buffers,给定一个简单的cmake文件,例如 PROTOBUF_GENERATE_CPP(ProtoSources ProtoHeaders Example.proto) 添加库(Example SHARED Example.cpp) 使用make-j8时,是否有办法强制PROTOBUF_GENERATE_CPP在下一步开始之前完成 (上下文:在cmake文件上使用cmake..make-j8时,第一次运行几乎总是失败,因为在编译库时protobuf文件尚未完成处理。第二次运行总是可以正常运行,但最好避免

给定一个简单的cmake文件,例如

PROTOBUF_GENERATE_CPP(ProtoSources ProtoHeaders Example.proto)
添加库(Example SHARED Example.cpp)

使用
make-j8
时,是否有办法强制PROTOBUF_GENERATE_CPP在下一步开始之前完成


(上下文:在cmake文件上使用
cmake..make-j8
时,第一次运行几乎总是失败,因为在编译库时protobuf文件尚未完成处理。第二次运行总是可以正常运行,但最好避免每次运行make两次。)

我假设“示例”依赖于原型源和/或原型头。 否则构建顺序就无关紧要了

您需要告诉CMake“示例”和生成的文件之间存在依赖关系

尝试将这些行添加到脚本中

add_custom_target(generated_code DEPENDS ${ProtoSources} ${ProtoHeaders})
add_dependencies(Example generated_code)

这就是我需要的。非常感谢。