scons:如何指定对外部构建目标的依赖?

scons: how to specify dependency to an external build target?

我正在使用 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 中的 "env." 命令不是按顺序执行的(这就是为什么可以使用 scons -j20 并行构建目标)。但有时问题是,因为 "pb_my" 的目标应该在我从 "my.proto" 生成 "my.pb.cc" 之后构建,scons 会报错是第二行先执行。

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

非常感谢。

不能直接在scons中指定顺序

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

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

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

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