【问题标题】:How do I add a debug option to Makefile如何向 Makefile 添加调试选项
【发布时间】:2014-09-13 01:34:19
【问题描述】:

我有以下用于编译 C 程序的简单 Makefile:

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

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

make

它可以正常编译。如果我运行

make debug

它符合调试标志。

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

【问题讨论】:

    标签: c makefile


    【解决方案1】:

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

    >make
    

    >make DEFS=DEBUG
    

    >make DEFS='ANY DEFINES YOU WANT'
    

    除了正常的 Make 重建标准外,以下 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
    

    【讨论】:

      【解决方案2】:

      这是一个示例 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
      

      您只需要添加一个调试选项,其方式与您已经声明的“全部”选项类似。

      【讨论】:

      • 只是为了记录,这不是一个惯用的或写得很好的makefile。
      • @Etan Reisner 你说得很好,Etan
      • 我的意思是,它不是一个makefile。它是一个 shell 脚本,看起来像一个 makefile。
      猜你喜欢
      • 2014-12-16
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      • 2021-03-22
      • 1970-01-01
      相关资源
      最近更新 更多