给出一个简单的cmake文件,例如
PROTOBUF_GENERATE_CPP( ProtoSources ProtoHeaders Example.proto )
ADD_LIBRARY( Example SHARED Example.cpp )
有没有办法在使用make -j8
下一步开始之前强制PROTOBUF_GENERATE_CPP完成?
(上下文:在cmake文件上使用cmake . ; make -j8
时,第一次运行几乎总是失败,因为protobuf文件在编译库时还没有完成处理。第二次运行总是正常但是避免每次都要运行两次会很好。)
答案 0 :(得分:1)
我假设'示例'取决于ProtoSources和/或ProtoHeaders。 否则,构建顺序无关紧要。
你需要告诉CMake,'示例'之间存在依赖关系。和生成的文件。
尝试将这些行添加到您的脚本
add_custom_target(generated_code DEPENDS ${ProtoSources} ${ProtoHeaders})
add_dependencies(Example generated_code)