如何向Makefile添加调试选项

我有以下简单的Makefile,我用它来编译C程序:

all: gcc -Wall -o myfile myfile.c lol_dht22/dht22.c lol_dht22/locking.c -lwiringPi -lcurl -lm 

我想添加一个调试选项,这样我就可以使用-DDEBUG进行编译,所以如果我运行的话

 make 

它正常编译。 如果我跑

 make debug 

它与调试标志汇编。

我已阅读了一些教程,但似乎越来越困惑。

这是一个示例makefile,它有两个您正在寻找的选项。

 all: gcc -Wall -o myfile myfile.c lol_dht22/dht22.c lol_dht22/locking.c -lwiringPi -lcurl -lm debug: gcc -DDEBUG -Wall -o myfile myfile.c lol_dht22/dht22.c lol_dht22/locking.c -lwiringPi -lcurl -lm 

您只需要添加一个调试选项,它与您已经声明的’all’选项的方式类似。

如果你想知道如何做得好,就在这里。 你不应该make debug ,而应该调用

 >make 

要么

 >make DEFS=DEBUG 

要么

 >make DEFS='ANY DEFINES YOU WANT' 

除了正常的Make rebuild标准之外,以下Makefile还可以识别基于DEFS重建。

 define DEPENDABLE_VAR .PHONY: phony $1: phony @if [[ `cat $1 2>&1` != '$($1)' ]]; then \ echo -n $($1) > $1 ; \ fi endef $(eval $(call DEPENDABLE_VAR,DEFS)) .PHONY: all all: myfile SRCS := myfile.c lol_dht22/dht22.c lol_dht22/locking.c myfile: $(SRCS) Makefile DEFS gcc $(addprefix -D, $(DEFS)) -Wall -o $@ $(SRCS) -lwiringPi -lcurl -lm