Qt設定根據編譯器不同連結不同的lib庫
我們知道Qt的pro工程檔案中可以編寫編譯條件,根據不同的條件生成不同的編譯指令,常用的是根據系統的不同包含不同的原始檔,如
win32 {
HEADERS += windows.h
}
linux {
HEADERS += linux.h
}
除了原始檔,連結的lib檔案也需要在pro中指定,而在windows平臺中,可選的編譯器有msvc和mingw兩種,且這兩種編譯器的庫檔案不能通用,那麼我們怎麼在pro檔案中根據編譯器的不同包含不同的lib庫檔案呢,pro檔案中我們可以通過CONFIG+=的形式定義自己的條件,如增加
CONFIG += mingw-cc
我們就可以像用這個來做判斷
mingw-cc {
LIBS += -Lmingw -ltest
} else {
LIBS += -Lvs -ltest
}
這樣就可以連線不同的lib庫檔案了,但是需要手動更改CONFIG設定,那麼Qt有沒有內建的表示當前編譯器型別的CONFIG變數呢,網上沒找到完整的qmake或pro檔案的說明文件,我們怎麼才能知道CONFIG的預定義值都有啥呢?
我們知道pro中可以通過$${var}的形式引用預定義變數,而pro檔案最終會通過qmake編譯成makefile檔案,這個makefile的內容是會落盤的,是我們能看見的,那麼我們增加如下定義
DEFINES += Q_CONFIG=$${CONFIG}
編譯一下,看生成的makefile中DEFINES的值,找到Q_CONFIG的定義如下
-DQ_CONFIG=lex yacc debug exceptions depend_includepath testcase_targets import_plugins import_qpa_plugin windows file_copies qmake_use qt warn_on release link_prl debug_and_release debug_and_release_target precompile_header shared release no_plugin_manifest win32 mingw gcc copy_dir_files debug DebugBuild Debug build_pass debug qml_debug debug DebugBuild Debug build_pass
等號後面就是CONFIG的預設值了,我們發現其中有mingw和gcc的定義,那麼我們就可以直接通過mingw和gcc來判斷編譯器型別了,不用自己定義了
mingw {
LIBS += -Lmingw -ltest
} else {
LIBS += -Lvs -ltest
}
換成msvc版的qt應該有msvc的預定義值,值的具體是啥我就不看了,還得換Qt版本,有mingw和gcc就夠用了。
相關文章
- ECharts 根據不同的X軸區域,設定不同區域的背景色Echarts
- 根據使用者的不同登入不同的頁面
- [譯] Flutter —— 根據不同螢幕尺寸高效的適配 UIFlutterUI
- [程式碼結構設計]根據不同條件使用不同實現類的業務程式碼設計
- 位移感測器根據材質的不同的分類
- vue-cli 根據不同的環境打包Vue
- Gradle根據引數配置不同的依賴Gradle
- php匯入時設定不同的編碼PHP
- 【WPF】根據選項值顯示不同的編輯控制元件(使用DataTemplateSelector)控制元件
- 根據題庫設定刷題程式
- WPF TextBlock根據值顯示不同的內容或格式BloC
- 使用Log4Net根據log level的不同將log輸出到不同的檔案中
- 基於角色的訪問控制並根據不同的場景顯示不同的反饋資訊
- Java 給Word不同頁面設定不同背景Java
- 解決Qt編譯動態連結庫could not find or load the Qt platform plugin "windows" in.問題QT編譯PlatformPluginWindows
- 如何針對不同客戶給不同價格的設定?
- Qt Creator匯入不同Qt版本QT
- 在pycharm中使用pip針對不同的編譯器新增包PyCharm編譯
- 歡迎使用CSDlambda表示式不同物件根據物件某個屬性去重N-markdown編輯器物件
- C# 給Word不同頁面設定不同背景C#
- 網頁根據螢幕寬度請求不同的CSS檔案網頁CSS
- Nginx根據PC端和手機端跳轉不同的路徑Nginx
- Qt QTcpSocket 對連線伺服器中斷的不同情況進行判定QTTCP伺服器
- golang 定時器的不同任務Golang定時器
- 對不同角色使用者設定不同的系統首頁
- RFID電子標籤根據應用場景的不同如何選型?
- nodemon+cross-env+config實現支援熱更新的能根據不同環境載入不同配置的nodejs環境ROSNodeJS
- 伺服器如何設定多個不同ip地址伺服器
- wordpress 不同的人看到不同的媒體庫
- Nginx 根據不同的域名來代理轉發內部主機-HTTP和HTTPSNginxHTTP
- Laravel redis 連不同的連線LaravelRedis
- JVM 模板直譯器之如何根據位元組碼生成彙編碼?JVM
- 根據子元素數量顯示不同樣式-純css解決方案CSS
- win10 多顯示器桌面不同步怎麼設定_win10雙顯示器怎麼設定顯示不同內容Win10
- Linux 中 根據SRA號獲取下載連結Linux
- sld樣式之根據id展示不同樣式,大於10000展示標註
- 如何根據不同業務場景調節 HPA 擴縮容靈敏度
- 程式設計師的自我修養-編譯連結程式設計師編譯