Gcc 編譯時指定巨集
阿新 • • 發佈:2019-01-10
gcc 編譯指定巨集
那在makefile裡面
gcc -DMACRONAME=MACRODEF
或者
gcc -DMACRONAME
這樣就定義了預處理巨集,編譯的時候可選程式碼就會被編譯進去了。
舉例說明:
-Dmacro=string,等價於在標頭檔案中定義:#define macro string。
-DTRUE=true,等價於在標頭檔案中定義:#define TRUE true
-Dmacro,等價於在標頭檔案中定義:#define macro 1,實際上也達到了定義:#define macro的目的。
-DLINUX,等價於:#define LINUX 1(與#define LINUX作用類似)。
–define-macro macro=string與-Dmacro=string作用相同。
Qt pro檔案中示例
原程式
#include <iostream>
using namespace std;
int main()
{
#ifdef DEF
cout<<"abc"<<endl;
#else
cout<<"xyz"<<endl;
#endif
return 0;
}
pro檔案
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += main.cpp
QMAKE_CXXFLAGS += -DDEF
編譯輸出
g++ -c -pipe -fno-keep-inline-dllexport -DDEF -g -std=gnu++11 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG