如何使用 scons 构建任意配方?



我想要一个替代Make的方法,在那里我可以轻松地使用一些Python代码来生成一些中间文件。

我碰到了声称与Make相似的Scons。我想将这种 Makefile 翻译成 Scons,其中对 Python 的调用将完成到 Scons 本身。

.PHONY all clean mrproper
all: out
A=$(wildcard *.a)
B=$(A:.b=.a)
C=$(B:.c=.b)
D=$(wildcard *.d)
C=$(D:.c=.d)
-include $(wildcard *.dep) 
*.b : *.a
python -mfoo a2b $< -o $@ -M $@.dep
*.c : *.b
python -mfoo b2c $< -o $@
*.e : *.d
python -mfoo d2e $< -o $@
out: $(E) $(C)
python -mfoo out $^ -o $@
clean: 
$(RM) $(B) $(C) $(E)
mrproper: clean
$(RM) out *.dep

可以这样做吗?我对工作解决方案不感兴趣,只对我需要启动的构建块感兴趣。

我缺少的是Scons提供的帮助者,例如

env.Program(target = 'helloworld', source = ["helloworld.c"])

它适用于标准扩展(*.c*.s,...(。不幸的是,我不想制作程序,我想指定配方。换句话说,我正在寻找更像这样的东西:

env.append(env.Recipe(target='%.b', deps=['out/%.a', 'out'], builder=foo_a2b))

这听起来像是你想编写/定义你自己的生成器,用SCons的说法。请查看我们的ToolsForFools指南,该指南试图解释如何向SCons教授新的"构建配方"。请注意,如何始终指定真正的 Python可调用对象(例如函数(而不是仅仅是 Action的字符串。您可能还想查看 MAN 页(尤其是关于"动作对象"的部分(和用户指南,以便更好、更详尽地介绍此构建系统。

最后,请随时加入我们的用户邮件列表 scons-users@scons.org 并在那里提出后续问题。我们的社区总是渴望帮助...

最新更新