在windows命令行編譯Qt程序並糾錯

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.exe

    nmake clean
    nmake
    

06、運行

進入realease目錄雙擊HelloWorld.exe,則彈出如下窗口
在這裏插入圖片描述

發佈了9 篇原創文章 · 獲贊 9 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章