如何在makefile中设置长选项
我正在写一个makefile分发给学生。为了缓解他们的黑客体验,我想提醒一下未初始化的变量 我知道有一个选项--warn undefined variables可以做到这一点,当然,我可以将aliasála alias make=“make--warn undefined variables”添加到my.bashrc中。但是我想在makefile中设置这个选项,这样学生在开始扩展makefile时也会自动从这些警告中获益。 这样做的逻辑方法是MAKEFLAGS变量。但是,尽管它适用于短选项,但我无法让它使用中所述的--warn未定义变量 生成文件:如何在makefile中设置长选项,makefile,Makefile,我正在写一个makefile分发给学生。为了缓解他们的黑客体验,我想提醒一下未初始化的变量 我知道有一个选项--warn undefined variables可以做到这一点,当然,我可以将aliasála alias make=“make--warn undefined variables”添加到my.bashrc中。但是我想在makefile中设置这个选项,这样学生在开始扩展makefile时也会自动从这些警告中获益。 这样做的逻辑方法是MAKEFLAGS变量。但是,尽管它适用于短选项,但我
MAKEFLAGS=--warn-undefined-variables
$(info MAKEFLAGS: $(MAKEFLAGS))
$(info ${BAR})
电话:
当我将MAKEFLAGS更改为-d时,控制台中充斥着调试信息,因此我知道MAKEFLAGS设置正确。有什么建议吗?我这里有GNU make 4.0,我一辈子都不能用一个简单的make文件警告未定义的变量。但是,如果我让Makefile调用自己,那么
MAKEFLAGS=--warn undefined variables
在子调用中工作
MAKEFLAGS= --warn-undefined-variables
$(info MAKEFLAGS: $(MAKEFLAGS))
$(info $(BAR))
# This prevents a warning if we invoke make without a target...
MAKECMDGOALS?=
all:
ifndef RECURSED
$(MAKE) RECURSED=1 $(MAKECMDGOALS)
else
echo $(FOO)
endif
如果我只运行make
,我会得到:
MAKEFLAGS: --warn-undefined-variables
make RECURSED=1
make[1]: Entering directory '/tmp/t1'
MAKEFLAGS: --warn-undefined-variables
Makefile:3: warning: undefined variable 'BAR'
Makefile:12: warning: undefined variable 'FOO'
echo
make[1]: Leaving directory '/tmp/t1'
要么我是在做什么。。。或者有一个错误在制造。我倾向于后一种想法。你将淹没在关于未设置变量的虚假警告中,如
TARGET\u ARCH
和LOADLIBES
。我认为这取决于他是否使用内置规则。
MAKEFLAGS: --warn-undefined-variables
make RECURSED=1
make[1]: Entering directory '/tmp/t1'
MAKEFLAGS: --warn-undefined-variables
Makefile:3: warning: undefined variable 'BAR'
Makefile:12: warning: undefined variable 'FOO'
echo
make[1]: Leaving directory '/tmp/t1'