1 ver=debug 2 ifeq ($(ver),debug) 3 TARGET = testmain_d 4 FLAG=-g -D debug 5 else 6 TARGET = testmain_r 7 FLAG=-O3 8 endif 9 10 CC=gcc 11 SRC_DIR=./ 12 13 vpath %.c $(SRC_DIR) 14 SRC_FILES:=$(wildcard $(SRC_DIR)*.c) 15 SRC_FILES:=$(notdir $(SRC_FILES)) 16 OBJ_FILES:=$(patsubst %.c,%.o,$(SRC_FILES)) 17 18 19 $(TARGET):$(OBJ_FILES) 20 $(CC) -o $@ $(OBJ_FILES) 21 22 $(OBJ_FILES):%.o:%.c 23 $(CC) -c $(FLAG) $? -o $@ 24 clean: 25 -rm -rf *.o 26 -rm -rf $(TARGET)
这样在代码中有如下代码时
#ifdef debug printf("============测试Debug\n"); #endif
可以通过makefile来达到编译debug版本或release版本的区别
debug版本 直接make
release版本 make ver=release (写其他都可以除了debug)
参考文章:
(1)http://blog.csdn.net/chaoqunz/article/details/6033660
(2)http://www.cnblogs.com/caosiyang/archive/2012/06/13/2548051.html
备注:从上边拷贝下来代码后,需要把空格符换成制表符tab。大家都懂的~