有没有办法根据变量的值重建某个目标?
我有一个带有命令行设置的Makefile,名为DEBUG。我想在执行“make DEBUG = no”之后调用“make DEBUG = yes”时重建某些目标文件(以包含调试信息)。
答案 0 :(得分:0)
如果文件不存在或者文件具有不同的值,则将该变量的值写入文件。使所有目标文件都依赖于该文件,以便每当文件更改时,都会重新编译所有目标文件。 E.g:
BUILD := debug
SHELL := /bin/bash
$(shell [[ `cat .build 2>/dev/null` == ${BUILD} ]] || echo ${BUILD} > .build)
all : prog
prog : .build
touch $@
clean :
rm prog .build
.PHONY: all clean
示例运行:
$ make
touch prog
$ make
make: Nothing to be done for `all'.
$ make BUILD=release
touch prog
$ make BUILD=release
make: Nothing to be done for `all'.
更好的方法是将调试和发布版本构建到不同的目录,如MSVS,但这需要更高级的makefile。