使用Make Multithreaded时强制PROTOBUF_GENERATE_CPP完成

时间:2016-02-24 14:46:45

标签: cmake protocol-buffers

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

PROTOBUF_GENERATE_CPP( ProtoSources ProtoHeaders Example.proto ) ADD_LIBRARY( Example SHARED Example.cpp )

有没有办法在使用make -j8下一步开始之前强制PROTOBUF_GENERATE_CPP完成?

(上下文:在cmake文件上使用cmake . ; make -j8时,第一次运行几乎总是失败,因为protobuf文件在编译库时还没有完成处理。第二次运行总是正常但是避免每次都要运行两次会很好。)

1 个答案:

答案 0 :(得分:1)

我假设'示例'取决于ProtoSources和/或ProtoHeaders。 否则,构建顺序无关紧要。

你需要告诉CMake,'示例'之间存在依赖关系。和生成的文件。

尝试将这些行添加到您的脚本

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