让我们来嚼makefile---make给makefile内部变量赋值
2014-06-10 09:09
267 查看
场景:
一般程序都会有两个版本,针对出现问题需要定位的调试的版本和面向用户的发布的版本,这两个版本在代码级别上很大的区别在于是否把#ifdef DEBUG #endif编译进入二进制文件当中,而相对于makefile来说,就是在命令行里面加或者不加-D DEBUG的问题。例子: gcc -g -o main test_macro.c-D DEBUG 这个会把#ifdef和#endif之间的内容编译进去,如果这里面的内容是日志,错误信息的话,方便我们定位问题和解决问题。现在就会有两种方案去编译调试和发布版本,
一种是在makefile里面进行删除-D DEBUG 编译生成发布版本,增加-D DEBUG编译生成调试版本,这样会显得我们开发人员的智商有待提高;更好的一种方法是在makefile内部定义一个变量usedebug=0, 根据变量usedebug的值进行不同的编译命令, 然后再由make 命令在外部进行设置usedebug的值就可以生成不同的编译版本。
解决方案:
执行命令 make useDebug=1; make useDebug=0; 就可以执行不同的编译命令,生成不同的版本了。
需要注意的是: make useDebug=1 等号两边不能有空格,否则会报错的。还有一个ifeq else endif控制语句前面都不需要tab键,在一行的开始处写就是,否则也会报错。
一般程序都会有两个版本,针对出现问题需要定位的调试的版本和面向用户的发布的版本,这两个版本在代码级别上很大的区别在于是否把#ifdef DEBUG #endif编译进入二进制文件当中,而相对于makefile来说,就是在命令行里面加或者不加-D DEBUG的问题。例子: gcc -g -o main test_macro.c-D DEBUG 这个会把#ifdef和#endif之间的内容编译进去,如果这里面的内容是日志,错误信息的话,方便我们定位问题和解决问题。现在就会有两种方案去编译调试和发布版本,
一种是在makefile里面进行删除-D DEBUG 编译生成发布版本,增加-D DEBUG编译生成调试版本,这样会显得我们开发人员的智商有待提高;更好的一种方法是在makefile内部定义一个变量usedebug=0, 根据变量usedebug的值进行不同的编译命令, 然后再由make 命令在外部进行设置usedebug的值就可以生成不同的编译版本。
解决方案:
执行命令 make useDebug=1; make useDebug=0; 就可以执行不同的编译命令,生成不同的版本了。
需要注意的是: make useDebug=1 等号两边不能有空格,否则会报错的。还有一个ifeq else endif控制语句前面都不需要tab键,在一行的开始处写就是,否则也会报错。
相关文章推荐
- 在Makefile里如何对make命令行中的变量重新赋值
- makefile 中变量的赋值
- Makefile中变量赋值方法的区别
- 栈(stack)与堆(heap)区别以及Java的string变量赋值的内部工作机制(精典转载贴)
- 很详细、很移动的Linux makefile教程:介绍,总述,书写规则,书写命令,使用变量,使用条件推断,使用函数,Make 的运行,隐含规则 使用make更新函数库文件 后序
- Makefile中四种变量赋值的区别
- makefile预定义变量、自动变量、隐式规则、模式规则、make命令选项
- 内部变量和通过命令赋值给变量的区别
- makefile 变量赋值规则
- 很详细、很移动的Linux makefile教程:介绍,总述,书写规则,书写命令,使用变量,使用条件推断,使用函数,Make 的运行,隐含规则 使用make更新函数库文件 后序
- 解决ajax方法内部不能给方法外部变量赋值的问题
- [ make ] Makefile: 多个all目标的处理 和 变量目标的处理
- 注意区分shell与Makefile中变量赋值的区别
- makefile中的各种变量赋值方式
- 栈(stack)与堆(heap)区别以及Java的string变量赋值的内部工作机制(精典转载贴)
- make和Makefile中的规则和变量
- Makefile的变量赋值和函数
- Makefile 变量定义(*赋值)
- makefile之环境变量MAKEFILES
- Make选项及makefile常用变量