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 的输出添加到您的问题中。
我正在使用 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 的输出添加到您的问题中。