Makefile条件编译debug版和release版
来源:互联网 发布:sed linux 编辑:程序博客网 时间:2024/06/08 04:50
一般,在开发测试阶段用debug版本,而上线发布用release版本。
使用Makefile定制编译不同版本,避免修改程序和Makefile文件,将会十分方便。
读了一些资料,找到一个解决方法,Makefile预定义宏与条件判断,结合make预定义变量,进行条件编译。
比如,有一个test.cpp,包含这段代码
#ifdef debug//your code#endif
你希望在debug版本要执行它,在release版本不执行。
我们可以写这样的一个Makefile:
ver = debug ifeq ($(ver), debug)ALL: test_dCXXFLAGS = -c -g -DdebugelseALL: test_rCXXFLAGS = -c -O3 endiftest_d: test.do g++ -o $@ $^test_r: test.ro g++ -o $@ $^%.do: %.cpp g++ $(CXXFLAGS) $< -o $@%.ro: %.cpp g++ $(CXXFLAGS) $< -o $@
简单说一下,Makefile根据ver的不同定义了不同的编译选项CXXFLAGS与输出程序ALL,
debug版本输出程序是test_d,release版本输出程序是test_r
debug版本编译选项是"-c -g -Ddebug",release版本编译选项是"-c -O3"
debug版本object文件后缀是".do",release版本object文件后缀是".ro"
debug版本编译选项使用"-D"定义宏debug,使得your code能够执行。
不同版本的编译选项、object文件、输出程序均不同,所以可以同时编译两个版本的程序,互不影响。
Makefile执行时,首先判断ver变量,如果ver的值是debug,编译debug版,否则编译release版。当然,默认情况下是编译debug版的。
如果想编译release版,要怎么做?
只要在执行make时,对ver变量赋值,使得ver的值不为debug,比如
# make ver=release
如有疏漏,欢迎指正!
From http://www.cnblogs.com/caosiyang/
0 0
- Makefile条件编译debug版和release版
- Makefile条件编译debug版和release版
- Makefile条件编译debug版和release版
- Makefile条件编译debug版和release版
- qt条件编译debug和release版本--qmake之CONFIG(debug, debug|release)
- qt条件编译debug和release版本--qmake之CONFIG(debug, debug|release)
- GCC 64位程序的makefile条件编译心得——32位版与64位版、debug版与release版(兼容MinGW、TDM-GCC)
- GCC 64位程序的makefile条件编译心得——32位版与64位版、debug版与release版(兼容MinGW、TDM-GCC)
- GCC 64位程序的makefile条件编译心得——32位版与64位版、debug版与release版(兼容MinGW、TDM-GCC)
- GCC 64位程序的makefile条件编译心得——32位版与64位版、debug版与release版(兼容MinGW、TDM-GCC)
- GCC 64位程序的makefile条件编译心得——32位版与64位版、debug版与release版(兼容MinGW、TDM-GCC)
- GCC 64位程序的makefile条件编译心得——32位版与64位版、debug版与release版(兼容MinGW、TDM-GCC)
- GCC 64位程序的makefile条件编译心得——32位版与64位版、debug版与release版(兼容MinGW、TDM-GCC)
- GCC 64位程序的makefile条件编译心得——32位版与64位版、debug版与release版(兼容MinGW、TDM-GCC)
- Xcode如何编译Debug版和Release版
- Xcode如何编译Debug版和Release版
- Xcode如何编译Debug版和Release版
- Xcode如何编译Debug版和Release版
- UILabel上文字的自适应
- C++之嵌套类与外围类及友元
- 知识管理方式整理
- socket编程小范例
- CSS outline属性以及和border属性的区别
- Makefile条件编译debug版和release版
- Android开发加速工具-JRebel for Android
- mysql 常用命令
- const用法
- 『Scrapy学习』基础知识
- Linux下安装TeXLive 2015
- 树莓派3代-命令行配置wifi无线连接
- ArcGIS格网化shp数据
- dialogfragment 的使用