在我看来,scons 目标不是按声明顺序生成的。我的问题是,我需要先生成一些代码,我正在使用 protoc 将 my.proto 文件处理为 .h 和 .cc 文件,我需要一些这样的伪代码(工作代码应该是什么样的?)
import os
env=Environment(ENV=os.environ,LIBPATH='/usr/local/lib')
env.ShellExecute('protoc', '--outdir=. --out-lang=cpp', 'my.proto')//produces my.cc
myObj=Object('my.cc')//should wait until 'my.cc' is generated by protoc
Dependency(myObj, 'my.cc')
mainObj=Object('main.cpp')
我的问题是:
如何在 SConstruct/SConscript 中指定 protoc 的 ShellExecution?
如何确保'main.cpp'的编译依赖于'my.cc'的存在,即等到'my.cc'生成后再执行?