在Qt項目中添加全局宏變量來達到按方案編譯的目的


遇到一個需求,需要根據不同需要編譯所需程序,本人采用了在QtCreator中建立不同的構建設置,配合宏的方式來實現:

1、在項目-構建設置中,添加構建配置
2、在構建步驟里的qmake中的額外參數一欄填入:"DEFINES += XXXX",也就是對應的宏變量
3、按照上述方法再次添加別的構建配置與宏變量。
4、之后便可以在項目使用
#ifdef XXXX
#endif
的方式來判斷。

 

下面是從一些別的blog中的資料:

變量用法:

1、自定義變量:
  MY_VARIABLE = value
  定義了一個變量MY_VARIABLE,並將值設置為value。
2、變量值的傳遞:
  可以通過在其它任何一個變量的變量名前加$$來把這個變量的值分配給當前的變量。例如:
  MY_DEFINES = $$DEFINES  
  現在MY_DEFINES變量包含了項目文件在這點時DEFINES變量的值。這也和下面的語句一樣:
  MY_DEFINES = $${DEFINES}
原文地址:
http://blog.csdn.net/u013639526/article/details/43983755

變量賦值:
DEFINES += HELLO=\\\"$$PWD/\\\"
DEFINES += SUCCESS=\\\"string\\\"
在.cpp中測試代碼如下:
#ifdef HELLO
qDebug()<<"HELLO="<<HELLO;
#else
qDebug()<<"bye";
#endif
#ifdef HELLO
qDebug()<<"SUCCESS="<<SUCCESS;
#else
qDebug()<<"bye";
#endif

條件編譯:

 debug{
    TARGET = XXd
  }
  release{
    TARGET = XX
  }
  上面代碼的意思是:如果是debug版本,可執行程序的名字是xxd,否則就是xx。可以這樣寫:
  debug:TARGET = xxd
  release:TARGET = XX
  作用域也可以嵌套使用,例如:
  win32{
    debug{
      TARGET = xxwd
    }
  }

 

判斷是否存在定義的宏:

DEFINES += CLIENT
contains( DEFINES, CLIENT ) {
# VERSION contains 'CLIENT'
message( "Configuring for CLIENT build..." )
#must be last
ICON = $${TARGET}.png
DESKTOP_FILE = $${TARGET}.desktop
include(../install.pri)
}

 

Qt項目管理(33個規則)
https://www.cnblogs.com/findumars/p/5602073.html

QMake常用語法
http://www.cnblogs.com/yuohoo/archive/2013/03/11/2954556.html
http://www.cnblogs.com/yuohoo/archive/2013/03/11/2954594.html
https://www.cnblogs.com/yuohoo/archive/2013/03/11/2954631.html
http://www.cnblogs.com/yuohoo/archive/2013/03/12/2956533.html

更多詳細信息可以參考文檔
qmake Function Reference


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM