使用Assert和-B进行Makefile帮助/澄清

时间:2015-10-06 01:48:19

标签: c makefile

我遇到makefile问题并使用assert进行编译。对于赋值,我应该使用make -B FLAG = -DNDEBUG来编译以关闭调试模式并使-B打开它。我不确定-B的作用是什么,我不明白它的文档“-B,-always-make无条件地制作所有目标”(来自手册页)。如果有人可以帮助那就太棒了!

1 个答案:

答案 0 :(得分:0)

感谢@MadScientist在我的回答中指出错误 (-D是编译器选项,不是make指令的选项)

[纠正后的答案]
使FLAG = -DNDEBUG

make -B FLAG = -DNDEBUG

在这种情况下,您必须拥有自己的自定义makefile。 使用make指令定义的标志可以在makefile中用来添加编译器选项 例如
Makefile - >
所有:
    gcc $ FLAG -o test -c test.c

[纠正前的答案]
make --->如果是第一次,那么是新建,如果是连续调用,那么只对已修改的源文件或更新库的链接进行增量构建

make -B --->总是新建,而不是增量构建

make -B -DNDEBUG --->关闭调试日志(根据你的代码使用NDEBUG宏来控制调试代码),总是做新的构建

使用NDEBUG宏控制函数调用序列调试的示例代码:

void test_func()
{
#ifndef NDEBUG
    printf("%s::%d::++Entered\n, __func__, __LINE__);
#endif /* NDEBUG */

     /* Your code goes here */
     ...

#ifndef NDEBUG
    printf("%s::%d::--Exiting\n, __func__, __LINE__);
#endif /* NDEBUG */

}

当make -B(或make)用于编译程序时,程序将在执行时打印调试日志。

当make -B -DNDEBUG(或make -DNDEBUG)用于编译程序时,由于此次定义了NDEBUG符号,因此不会打印调试日志。