这是我的主程序:
#include <stdio.h>
int main(void)
{
#ifdef MONO
printf("MONO is defined\n");
#elif DEBUG
printf("DEBUG is defined\n");
#else
printf("Nothing is defined\n");
#endif
return 0;
}
和我的makefile:
# Makefile Variables
CC = gcc
EXEC =
CFLAGS = -Wall -g -ansi -pedantic -Werror
OBJ = test.o
# Add MONO to the CFLAGS and recompile the program
ifdef
CFLAGS += -D MONO
FANCY : clean $(EXEC)
endif
# Add DEBUG to the CFLAGS and recompile the program
ifdef
CFLAGS += -D DEBUG
DEBUG : clean $(EXEC)
endif
$(EXEC) : $(OBJ)
$(CC) $(OBJ) -o $(EXEC)
test.o : test.c
$(CC) $(CFLAGS) test.c -c
clean:
rm -f $(EXEC) $(OBJ)
[基本上,我正在尝试使用DEBUG和MONO进行条件编译。问题是,当在我的Makefile中两个都未定义时,如上所示,它仍然显示“正在测试...已定义MONO”。我通过键入“ make”进行编译,这使我得到“ gcc -Wall -g -ansi -pedantic -Werror test.c -c”并由./test运行