Qt 編譯配置相關總結


MinGW 與 MSVC 編譯的區別

我們可以從 Qt 下載頁面看到兩種版本編譯器,如下圖:


我們來對比一下這兩個編譯器的區別:

  • MSVC 是指微軟的 VC 編譯器。
  • MinGW 是 Minimalist GNU on Windows 的縮寫。它是一個可自由使用和自由發布的 Windows 特定頭文件和使用 GNU 工具集導入庫的集合,允許你在 GNU/Linux 和 Windows 平台生成本地的 Windows 程序而不需要第三方 C 運行時庫。

這兩個都是很好用的編譯工具,但是他們兼容的並不好。當你的項目使用 MinGW 編譯的使用,想要用一個 MSVC 編譯生成的庫時就會有問題。使用 MinGW 編譯項目的時候,所使用的 Lib 也要是 MinGW 編譯的。如果你只是開發 Window 平台的軟件時,最好使用 MinGW 編譯,這樣可以使用大量的第三方 lib,還有很多的構建指令,畢竟 window 上 MSVC 才是王道。

注意:Qt 如果使用 MSVC 編譯,需要安裝 VS 和Win10 SDK。


Qt 如何使用 MSVC 編譯?

若只是在計算機上安裝了 Visual Stuido 2015(或其他版本),圖中顯示的界面上 MSVC2015 的兩個編譯器的圖標會變為帶有感嘆號的一個黃色圖標。Debuggers 頁面沒有 Windows 的 CDB 調試器,可以用 MSVC 編譯器對 Qt Creator 編寫的程序進行編譯,但是不能調試,這是因為缺少了 Windows Software Development Kit(SDK),這個 SDK 不會隨 Visual studio 一同安裝,自行下載。可以下載 windows software development kit(SDK)for windows 8.1,安裝后重啟計算機即可。

Win10 SDK 的安裝可以參考:Qt5.9.6使用MSVC(VS2017)開發環境搭建


此時如下圖這樣配置,只配置了 C 和 C++ 編譯器,不能配置調試器。



再在 "項目" 中切換成 MSVC2015_64 編譯,此時會報錯:C1902: 程序數據庫管理器不匹配;請檢查安裝解決解決方法:

到 F:\VS2015\VC\bin 目錄下面拷貝 mspdbsrv.exe、mspdb140.dll、mspdbcore.dll、mspdbst.dll 到 F:\VS2015\Common7\IDE 下面,然后重啟 Qt 即可。你沒有看錯,以上確實在 VS2015 安裝目錄中進行操作,這確實是 Qt 運行時發生的錯誤!

然后編譯運行正常,但是調試會報錯,原因正如上面所說還未安裝 Win10 SDK。


qmake 是什么?

qmake 是 Qt 提供的一個編譯工具,他可以生成與平台無關的 .pro 文件,然后利用該文件生產與平台相關的 Makefile 文件。

Makefile 文件中包含了要創建的目標文件或可執行文件、創建目標文件所依賴的文件和創建每個目標文件時需要運行的命令等信息。最后使用 mingw32-make 工具來完成自動編譯(命令行編譯的情況),mingw32-make 就是通過讀入 Makefile文件 的內容來執行編譯工作的。使用 mingw32-make 命令時會為每一個源文件生成一個對應的 .o 目標文件,最后將這些目標文件進行鏈接來生成最終的可執行文件。


Qt 構建、運行、qmake的區別

qmake:根據實際環境創建項目文件 .pro,並且運行 qmak 生成適當的 Makefile。

構建:構建是增量編譯,只編譯有變化部分。

重新構建:是把所有部分都重新編譯。

運行: 有改動則根據已有的 Makefile 進行編譯,執行構建和重新構建時如果沒有 Makefile,會根據 .pro 文件等生成Makefile后再編譯。

所以一般運行順序應該是:qmake-構建-運行


VS 打開編譯 Qt 工程,找不到宏定義 QTDIR 的解決辦法

打開從以前機器創建的 VS解決方案文件.sln, 發現宏定義${QTDIR}是以前機器的 Qt 安裝目錄, 並沒有同步更新過來。

解決辦法:

(1)使用 VS 打開 .user 文件:


(2)修改 QTDIR 宏變量:



免責聲明!

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



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