如何向Makefile添加调试选项

时间:2014-09-11 21:32:52

标签: c 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

它与调试标志汇合。

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

2 个答案:

答案 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'您已宣布的选项。