0

有没有办法根据变量的值来重建某个目标?

我有一个带有名为 DEBUG 的命令行设置的 Makefile。我希望在执行“make DEBUG=no”后调用“make DEBUG=yes”时重建某些目标文件(以包含调试信息)。

4

1 回答 1

0

如果文件不存在或具有不同的值,则将该变量的值写入文件。使您的所有目标文件都依赖于该文件,以便每当文件更改时,所有目标文件都会重新编译。例如:

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。

于 2012-08-30T08:33:43.217 回答