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。大家都懂的~

posted on 2013-08-13 15:07  dspeeding  阅读(268)  评论(0编辑  收藏  举报