我有以下简单的Makefile,用于编译C程序:
all:
gcc -Wall -o myfile myfile.c lol_dht22/dht22.c lol_dht22/locking.c -lwiringPi -lcurl -lm
我想添加一个调试选项,这样我就可以使用-DDEBUG进行编译,所以如果我运行
make
它正常编译。如果我跑
make debug
它与调试标志汇合。
我已阅读了一些教程,但似乎越来越困惑。
答案 0 :(得分:2)
如果你想知道如何做得好,就在这里。您没有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
答案 1 :(得分:1)
这是一个示例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'您已宣布的选项。