Python 如何使用SCON创建任意配方?
我想要一个替代方案,在这里我可以轻松地使用一些Python代码生成一些中间文件 我碰上了声称与Make相似的烤饼。我想将这种Makefile转换成scon,其中对Python的调用将被转换成scon本身Python 如何使用SCON创建任意配方?,python,makefile,scons,Python,Makefile,Scons,我想要一个替代方案,在这里我可以轻松地使用一些Python代码生成一些中间文件 我碰上了声称与Make相似的烤饼。我想将这种Makefile转换成scon,其中对Python的调用将被转换成scon本身 .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 :
.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
它适用于标准扩展(*.c
,*.s
,…)。不幸的是,我不想做一个程序,我想指定配方。换言之,我正在寻找更像这样的东西:
env.append(env.Recipe(target='%.b', deps=['out/%.a', 'out'], builder=foo_a2b))
这听起来像是您想要编写/定义自己的构建器,用SCons的说法。请看一下我们的网站,它试图解释如何向SCons教授新的“构建食谱”。请注意,如何始终为操作指定一个真正的Python可调用(例如函数)而不是一个字符串。您可能还想查看(特别是关于“操作对象”的部分)和,以更好、更详尽地介绍此构建系统 最后,欢迎加入我们的团队,并在那里提出后续问题。我们的社区总是渴望帮助
env.append(env.Recipe(target='%.b', deps=['out/%.a', 'out'], builder=foo_a2b))