0

protobuf用来从 . proto文件转换为 .cc/.h 文件。所以我有我SConscript的如下:

env.protoc('my.proto')
env.Program(target='pb_my',    CCFLAGS="-I.",   
        source=['pb_my.cpp',    'my.pb.cc'],       LIBS='protobuf')

我发现,“环境”。SConscript 中的命令不是按顺序执行的(这就是为什么可以使用 scons -j20 并行构建目标的原因)。但有时问题是,因为“pb_my”的目标应该是在我从“my.proto”生成“my.pb.cc”之后构建的,所以scons会报告错误是先执行第二行。

那么如何指定第二行的目标只应在第一行完成后执行?

非常感谢。

4

1 回答 1

2

您不能直接在 scons 中指定顺序。

正确的方法是确保指定了依赖项。

请包含您的 protobuf 构建器的代码?

如果您的 protobuf 构建器输出的文件在生成之前被编译,您的 protobuf 构建器可能没有指定它们。

另外,请将 scons --tree=prune 的输出添加到您的问题中。

于 2017-07-09T19:13:25.943 回答