herb

我要靠谱→hello world!
随笔 - 14, 文章 - 0, 评论 - 0, 引用 - 0
数据加载中……

从Makefile向源代码传递宏定义

      在编译程序过程中,往往需要动态传递一些现象,比如要区别程序DEBUG版本和release版本;比如svn中代码版本太多,为方便管理,在编译时加上被编译程序的版本号等。
      要做到这一点其实挺简单,我们可以再Makefile中定义宏,传递给源代码。下面是一个简单的例子
     
    hello.c    判断是否定义了宏 DEF
 1  #include <stdio.h>
 2  #include <stdlib.h>
 3  
 4  #ifdef DEF
 5      int isvalid = 1;
 6  #else
 7      int isvalid = 0;
 8  #endif
 9  
10  
11  int main(int argc, char *argv[])
12  {
13      if (isvalid == 1)
14      {
15          printf("login success, welcome!\n");
16      }
17      else
18      {
19          printf("sorry, login failed!\n");
20      }
21  
22      return 0;
23  }

   Makefile: 在CFLAGS 中添加 宏定义参数
 1 TARGET = hello
 2 
 3 all: $(TARGET)
 4 
 5 CC = gcc
 6 
 7 AA = DEF
 8 
 9 CFLAGS += -D$(AA)
10 
11 $(TARGET): hello.o
12     $(CC) $^ -o $@ $(CFLAGS)

运行结果:

posted on 2012-06-26 20:28 herb 阅读(6137) 评论(0)  编辑 收藏 引用 所属分类: C/C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理