linux下debug與release編譯的方法
【原文:http://blog.csdn.net/lzyzuixin/article/details/7800267】
如果是DEBUG,則加引數-Ddebug,release'版本則不加該引數。
一般,在開發測試階段用debug版本,而上線釋出用release版本。
使用Makefile定製編譯不同版本,避免修改程式和Makefile檔案,將會十分方便。
讀了一些資料,找到一個解決方法,Makefile預定義巨集與條件判斷,結合make預定義變數,進
行條件編譯。 比如,
有一個test.cpp,
包含這段程式碼
#ifdef debug//your code
#endif你
希望在debug版本要執行它,在release版本不執行。
我們可以寫這樣的一個Makefile:
1 ver = debug
2
3
ifeq ($(ver), debug)
4
ALL: test_d
5 CXX
FLAGS = -c -g -Ddebug 6 else
7 ALL: test_r
8 CXXFLAGS = -c -O3
9 endif10
11 test_d: test.do
12 g++ -o $@ $^
13
14 test_r: test.ro
15 g++ -o $@ $^
16
17 %.do: %.cpp
18 g++ $(CXXFLAGS) $< -o $@
19
20 %.ro: %.cpp
21 g++ $(CXXFLAGS) $< -o $@
簡單說一下,Makefile根據ver的不同定義了不同的編譯選項CXXFLAGS與輸出程式ALL,debug版本輸出程式是test_d,release版本輸出程式是test_rdebug版本編譯選項是"-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
相關文章
- [cmake]如何設定Debug和Release編譯模式編譯模式
- 關於VS中區分debug與release,32位與64位編譯的巨集定義編譯
- flutter release版編譯Flutter編譯
- linux下的gcc編譯LinuxGC編譯
- Debug和Release的區別
- Linux下把靜態庫編譯進PHP的方法Linux編譯PHP
- VC下Debug和Release區別——網路文摘
- debug 和 release 應用
- 原始碼的下載與編譯原始碼編譯
- LevelDB C++教程: Linux下編譯與安裝C++Linux編譯
- LINUX下編譯TriangleLinux編譯
- linux(ubuntu)下的64位編譯器編譯32位程式LinuxUbuntu編譯
- 安全的清理Debug Release資料夾
- windows下修改、編譯、構建spring-framework4.1.8.RELEASE原始碼Windows編譯SpringFramework原始碼
- linux與windows交叉編譯LinuxWindows編譯
- Centos下Sphinx的下載與編譯安裝CentOS編譯
- VS2008 Debug與Release的本質區別
- -debug(C# 編譯器選項)C#編譯
- Linux下編譯安裝BOOSTLinux編譯
- iOS Debug和Release環境的最新配置iOS
- VC中debug和release版本的區別
- Windows:Debug和Release build區別WindowsUI
- 彙編debug程式跳轉指令的方法
- Linux下C語言編譯的問題LinuxC語言編譯
- Linux下c mysql程式的編譯命令(轉)LinuxMySql編譯
- Linux Centos下編譯安裝RedisLinuxCentOS編譯Redis
- linux下gcc/g++編譯用法LinuxGC編譯
- iOS中 Debug 和 Release 的區別和使用iOS
- C# Debug和release判斷用法C#
- Linux下nginx編譯安裝教程和編譯引數詳解LinuxNginx編譯
- Java編譯與反編譯Java編譯
- A40i &T3 全原始碼編譯-ARM Linux核心在PC Linux的編譯方法原始碼編譯Linux
- Linux下的C/C++編譯環境配置LinuxC++編譯
- 無IDE下編譯和執行Java的方法IDE編譯Java
- 在linux下編譯hibernate筆記Linux編譯筆記
- Linux 環境下編譯安裝 RedisLinux編譯Redis
- Linux系統下編譯Openssl 步驟:Linux編譯
- 附錄B Linux 下編譯 C 程式Linux編譯