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
- 圖片設定level-list,根據不同狀態顯示不同圖片
- 在solaris環境下,根據java程式的不同,設定不同的環境變數Java變數
- django根據不同git分支載入不同配置DjangoGit
- [譯] Flutter —— 根據不同螢幕尺寸高效的適配 UIFlutterUI
- 根據不同的顯示器解析度使用不同樣式檔案
- asp.net 根據值不同,在繫結時顯示不同顏色ASP.NET
- [程式碼結構設計]根據不同條件使用不同實現類的業務程式碼設計
- js根據不同的時間段輸出不同的語句JS
- 根據不同瀏覽器視窗大小不同css檔案程式碼例項瀏覽器CSS
- 根據不同欄位,升降序排列查詢結果
- javascript實現根據點選按鈕的不同進行不同的操作JavaScript
- vue-cli 根據不同的環境打包Vue
- Gradle根據引數配置不同的依賴Gradle
- 根據需要動態include不同的檔案 (轉)
- 使用QT編寫Opencv2/3的LIB設定QTOpenCV
- 根據不同的瀏覽器載入相應的CSS檔案本瀏覽器CSS
- JSP頁面根據後臺傳值不同顯示不同內容JS
- 根據條件動態更新不同表的資料
- WPF TextBlock根據值顯示不同的內容或格式BloC
- linux下不同arm 編譯器的異同Linux編譯
- php匯入時設定不同的編碼PHP
- 使用Log4Net根據log level的不同將log輸出到不同的檔案中
- 根據瀏覽器視窗的大小不同自動調節文字大小瀏覽器
- VS2010 編譯QT 4.7.3 靜態庫(lib)編譯QT
- VC執行庫版本不同導致連結.LIB靜態庫時發生重複定義問題的一個案例分析和總結
- Java 給Word不同頁面設定不同背景Java
- 歡迎使用CSDlambda表示式不同物件根據物件某個屬性去重N-markdown編輯器物件
- profile 2種不同的設定
- 在pycharm中使用pip針對不同的編譯器新增包PyCharm編譯
- 如何針對不同客戶給不同價格的設定?
- C# 給Word不同頁面設定不同背景C#
- ArcGIS Server ADF開發:根據圖層不同屬性用不同圖示定位興趣點Server
- 不同EXCEL檔案超連結Excel
- 使用SQLLOADER將每行資料根據條件插入不同表SQL
- 解決Qt編譯動態連結庫could not find or load the Qt platform plugin "windows" in.問題QT編譯PlatformPluginWindows
- 對不同角色使用者設定不同的系統首頁
- qt TcpSocket 對連線伺服器中斷的不同情況進行判定QTTCP伺服器