我试图在makefile中实现一个问题。那么我怎样才能询问用户是否要在打开/关闭LED的情况下构建二进制文件。
当用户启动" make"在shell中应该有一个类似&#34的问题;你想用LED实现你的Binary吗? Y / N"
如果有" n"我的预处理器应该忽略我的c程序中的所有LED实现。 c中的部分我已经做过了。但我是makefile的新手。
我可以通过makefile设置env.variable吗?我怎么能这样做?
答案 0 :(得分:3)
单独的目标怎么样,所以你可以让用户说出来
$ make with-led
或
$ make no-led
然后你的目标可以轻松使用适当的预处理器标志。
答案 1 :(得分:1)
我不会声称这是个好主意。但有可能:
# For GNU Make
ifndef LEDS
LEDS := $(shell bash -c 'read -p "Use LEDS? [y/n] " && echo $$REPLY')
endif
print:
@echo LEDS=$(LEDS)
我真的建议您重新思考这是否是您想要的。关于Make的原则是它不是交互式的,你构建的用户可能不会因为你的违反而感谢你。例如,在构建服务器上自动编译,或者仅在Emacs compile
缓冲区中自动编译。
更好的策略是在Make变量中默认一种方式 - 在调用Make时可以覆盖它:
make install LED=0
你可能会坚持指定一个值:
# GNU Make, again
ifndef LEDS
$(error LEDS must be specified for this build)
endif