C 如何在使用Makefile时关闭断言

C 如何在使用Makefile时关闭断言,c,makefile,terminal,assertions,C,Makefile,Terminal,Assertions,我在Xcode中使用makefile来编译我的C程序,但我不知道在使用makefile编译代码时如何禁用断言 以前我一直在使用-DNDEBUG在终端中切换断言 只需将-DNDEBUG标记添加到Makefile中即可。如果要使其保持有序,请设置一个名为CFLAGS的变量。例如: CC=clang CFLAGS=-DNDEBUG DEPS = stackover.h %.o: %.c $(DEPS) $(CC) -c -o $@ $< $(CFLAGS) CC=clang CFLA

我在Xcode中使用makefile来编译我的C程序,但我不知道在使用makefile编译代码时如何禁用断言


以前我一直在使用
-DNDEBUG
在终端中切换断言

只需将
-DNDEBUG
标记添加到Makefile中即可。如果要使其保持有序,请设置一个名为
CFLAGS
的变量。例如:

CC=clang
CFLAGS=-DNDEBUG
DEPS = stackover.h

%.o: %.c $(DEPS)
    $(CC) -c -o $@ $< $(CFLAGS)
CC=clang
CFLAGS=-DNDEBUG
DEPS=stackover.h
%.o:%.c$(DEPS)
$(CC)-c-o$@$<$(CFLAGS)

只需将
-DNDEBUG
标记添加到Makefile中即可。如果要使其保持有序,请设置一个名为
CFLAGS
的变量。例如:

CC=clang
CFLAGS=-DNDEBUG
DEPS = stackover.h

%.o: %.c $(DEPS)
    $(CC) -c -o $@ $< $(CFLAGS)
CC=clang
CFLAGS=-DNDEBUG
DEPS=stackover.h
%.o:%.c$(DEPS)
$(CC)-c-o$@$<$(CFLAGS)

您仍然使用
-DNDEBUG
关闭它们(尽管您确定要这样做吗?)。问题是:C编译器命令行是如何形成的,在哪里可以插入自己的标志?对于我自己的工作,我从许多片段构建了
CFLAGS
,并保留了UFLAGS(用户标志),以便在
make
命令行上进行设置,以便在命令行中设置额外的标志。不过,这不是一个普遍的解决办法。在极端情况下,您可以使用
make CC='clang-DNDEBUG'
将普通的C编译器(
clang
)替换为
clang-DNDEBUG
)。但是,这不太可能是最好的方法,甚至不是唯一的方法。您仍然使用
-DNDEBUG
关闭它们(尽管您确定要这样做吗?)。问题是:C编译器命令行是如何形成的,在哪里可以插入自己的标志?对于我自己的工作,我从许多片段构建了
CFLAGS
,并保留了UFLAGS(用户标志),以便在
make
命令行上进行设置,以便在命令行中设置额外的标志。不过,这不是一个普遍的解决办法。在极端情况下,您可以使用
make CC='clang-DNDEBUG'
将普通的C编译器(
clang
)替换为
clang-DNDEBUG
)。然而,这不太可能是最好的,甚至是唯一的方法。那么,当我运行程序时,我必须添加其他内容。以前我用“make”then.“/my_program”从终端运行我的程序。然后在运行程序时我必须添加其他内容。以前我使用“make”then./my_program”从终端运行我的程序。