在C语言中,如何在makefile中禁用优化?

在C语言中,如何在makefile中禁用优化?,c,makefile,C,Makefile,我有下面的makefile结构 # Default optimization level O ?= 2 TESTS = $(patsubst %.c,%,$(sort $(wildcard test[0-9][0-9][0-9].c))) all: $(TESTS) hhtest -include build/rules.mk LIBS = -lm %.o: %.c $(BUILDSTAMP) $(call run,$(CC) $(CPPFLAGS) $(CFLAGS) -O$(O) $

我有下面的makefile结构

# Default optimization level
O ?= 2

TESTS = $(patsubst %.c,%,$(sort $(wildcard test[0-9][0-9][0-9].c)))

all: $(TESTS) hhtest

-include build/rules.mk
LIBS = -lm

%.o: %.c $(BUILDSTAMP)
$(call run,$(CC) $(CPPFLAGS) $(CFLAGS) -O$(O) $(DEPCFLAGS) -o $@ -c,COMPILE,$<)

test%: test%.o m61.o
$(call run,$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS),LINK $@)

hhtest: hhtest.o m61.o
$(call run,$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS),LINK $@)
#默认优化级别
O=2
TESTS=$(patsubst%.c,%,$(sort$(通配符测试[0-9][0-9][0-9].c)))
全部:$(测试)hhtest
-包括build/rules.mk
LIBS=-lm
%.o:%.c$(建筑邮票)

$(call run,$(CC)$(CPPFLAGS)$(CFLAGS)-O$(O)$(DEPCFLAGS)-O$@-c,COMPILE,$您的代码的结构似乎是这样的(即,您将
-O$(O)
传递给CC),您应该能够说:

O ?= 0

用一个字母的变量名来代替
O?=2

确实不是很友好。用这个字母作为大写字母
O
就更不友好了
O ?= 0