目錄
00、編譯環境
VS2017
QT5.9.4
01、在電腦任意位置新建HelloWorld目錄,裏面編寫HelloWorld.cpp代碼,代碼如下
#include <QApplication>
#include <QLabel>
int main(int argc, char **argv)
{
QApplication app(argc, argv);// 構建一個qt應用程序對象
QLabel label("HelloWorld!");// 構建一個標籤
label.setAlignment(Qt::AlignCenter);
label.resize(400, 300);
label.show();
return app.exec();// 讓程序進入事件循環
}
02、打開vs2017的命令行
03、qmake -project,生成pro文件
- 在命令行中切換到HelloWorld.cpp所在目錄下,執行命令:
qmake -project
- 在HelloWorld目錄下就自動生成了HelloWorld.pro文件
- 用文本編譯器打開HelloWorld.pro文件,並且在文件開頭加入 QT+=widgets ,因爲代碼裏的 QApplication 和 QLabel 兩個類是屬於widgets模塊
注意:可以直接使用命令qmake -project QT+=widget
使生成的pro文件帶有QT+=widgets
04、qmake,生成Makefile
在命令行中繼續執行qmake
命令,生成 Makefile 以及其他文件:
05、nmake,生成可執行程序
-
在命令行中繼續執行命令編譯 :
nmake
-
出現關於qalgorithms.h的錯誤
..\Qt5.9.4\5.9.4\msvc2017_64\include\QtCore/qalgorithms.h(847): error C3615: constexpr 函數 "qCountLeadingZeroBits" 不會生成常數表達式 ..\Qt5.9.4\5.9.4\msvc2017_64\include\QtCore/qalgorithms.h(858): note: 對未定義的函數或爲未聲明爲“constexpr”的函數的調用導致了故障 ..\Qt5.9.4\5.9.4\msvc2017_64\include\QtCore/qalgorithms.h(858): note: 請參見“qPopulationCount”的用法
這是使用MSVC2017編譯器的一個bug,Qt社區已經解決了,下載官方提供的qalgorithms.h替換即可
問題描述與解決方法:https://codereview.qt-project.org/c/qt/qtbase/+/236948 -
替換後繼續執行
nmake
,出現下列錯誤Qt5Widgets.lib(Qt5Widgets.dll) : fatal error LNK1112: 模塊計算機類型“x64”與目標計算機類型“x86”衝突 NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\bin\HostX64\x86\link.EXE"”: 返回代碼“0x458” Stop. NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\nmake.exe"”: 返回代碼“0x2” Stop.
錯誤原因:當前命令行窗口沒有同時兼容x64和x86
解決辦法:重新打開“適用於 VS2017 的x86_x64兼容工具命令”窗口,再編譯則在realease目錄生成可執行程序
執行下面命令重新編譯,在realease目錄生成了HelloWorld.exenmake clean nmake
06、運行
進入realease目錄雙擊HelloWorld.exe,則彈出如下窗口