我想要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))
答案 0 :(得分:2)
这听起来像是要编写/定义自己的 Builder ,用SCons的说法来讲。请查看我们的ToolsForFools Guide,它会尝试解释如何教授新的&#34;构建食谱&#34;到SCons。注意,如何始终指定真正的Python 可调用(例如函数),而不仅仅是 Action 的字符串。您可能还想查看MAN page(特别是关于&#39; Action Objects&#39;的部分)和User Guide,以便更好,更详尽地介绍此构建系统。
最后,请随时加入我们的User mailing list scons-users@scons.org并在那里提出后续问题。我们的社区总是渴望帮助...