windows 使用 VS2017 msvc 命令行编译qt程序

windows 使用 VS2017 msvc 命令行编译qt程序

  • windows 使用 VS2017 msvc 命令行编译qt程序
  • 测试环境
  • 演示工程目录说明
  • 编译脚本
  • 关于jom
  • 附录

windows 使用 VS2017 msvc 命令行编译qt程序

使用 VS2017的编译器编译qt的pro工程。

测试环境

Windows 10 + VS2017 + Qt 5.12.9

演示工程目录说明

E:
T--test
    |--compile_cmd.bat   编译脚本
    |--testapp 测试工程目录
        |--main.cpp
        |--testapp.pro

图示
windows 使用 VS2017 msvc 命令行编译qt程序_第1张图片

编译脚本

说明:

  • 编译中间输出目录为msvc_x64_output

  • 编译版本为 qt 64位版本

具体脚本说明请查看注释。
// compile_cmd.bat

:: 关闭终端回显
:: @echo off

:: 创建中间文件输出目录
if not exist msvc_x64_output (
    mkdir msvc_x64_output
)

:: 打开终端回显
@echo on
:: 引入msvc编译环境, 请根据自己的vs安装目录更改vcvarsall.bat脚本所在位置,下面的命令为VS2017的
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat"  x86_amd64
@echo on
:: 进入中间文件输出目录并执行qt工程编译
cd msvc_x64_output
:: 若存在Makefile清,则理上一次编译的中间文件
if exist ./Makefile (
    "D:\Qt\Qt5.12.9\Tools\QtCreator\bin\jom.exe" clean
)

:: ../testapp/testapp.pro 为pro文件路径,可使用相对路径,也可使用绝对路径
:: "D:\Qt\Qt5.12.9\5.12.9\msvc2017_64\bin\qmake.exe" 为 x64 版本
:: 若想编译 32 位版本,请更改qmake.exe的路径, 例如
::      "D:\Qt\Qt5.12.9\5.12.9\msvc2017\bin\qmake.exe" -spec win32-msvc ../testapp/testapp.pro
"D:\Qt\Qt5.12.9\5.12.9\msvc2017_64\bin\qmake.exe" -spec win32-msvc ../testapp/testapp.pro
"D:\Qt\Qt5.12.9\Tools\QtCreator\bin\jom.exe" -f ./Makefile qmake_all

:: 编译debug版本
:: 指定4核编译
:: "D:\Qt\Qt5.12.9\Tools\QtCreator\bin\jom.exe" -j4 -f ./Makefile.Debug
:: 不指定编译核数
"D:\Qt\Qt5.12.9\Tools\QtCreator\bin\jom.exe" -f ./Makefile.Debug

:: 编译release版本
"D:\Qt\Qt5.12.9\Tools\QtCreator\bin\jom.exe" -f ./Makefile.Release

pause

测试工程的编译结果如下:
windows 使用 VS2017 msvc 命令行编译qt程序_第2张图片

关于jom

jom的备注(此处摘录的他人的理解):

linux下使用make,而在windows上面使用nmake,是vs提供的一个东西,
但是有很个坑的事,就是nmake不支持-j这个参数,也是就是说它是单线程编译.
Qt为了解决这样子的一个问题,弄出一个jom.exe,这和make的功能基本是一样的,但是他比nmake多出来的就是,-j这个参数.也就是说它支持多线程编译.
至于和make的其他区别我也不清楚,如果你不特别追究的话,简单理解为 jom == make == nmake*x

附录

在本次测试过程中,使用Qt Creator做了几次编译测试,顺手把Qt Creator的编译过程也记录了一下。

Qt Creator 4.12.2 (Community) 执行重新构建 时,Qt Creator 执行的编译命令执行记录如下:
[x86] [debug]

// 编译环境的工作路径在 E:/TestProj/testlib/build-staticlib-Desktop_Qt_5_12_9_MSVC2017_32bit-Debug
"D:\Qt\Qt5.12.9\Tools\QtCreator\bin\jom.exe" clean
"D:\Qt\Qt5.12.9\5.12.9\msvc2017\bin\qmake.exe" E:\TestProj\testlib\staticlib\staticlib.pro -spec win32-msvc "CONFIG+=debug" "CONFIG+=qml_debug"
"D:\Qt\Qt5.12.9\Tools\QtCreator\bin\jom.exe" -f E:/TestProj/testlib/build-staticlib-Desktop_Qt_5_12_9_MSVC2017_32bit-Debug/Makefile qmake_all
"D:\Qt\Qt5.12.9\Tools\QtCreator\bin\jom.exe" 

[x86] [release]

// 编译环境的工作路径在 E:/TestProj/testlib/build-staticlib-Desktop_Qt_5_12_9_MSVC2017_32bit-Release
"D:\Qt\Qt5.12.9\Tools\QtCreator\bin\jom.exe" clean
"D:\Qt\Qt5.12.9\5.12.9\msvc2017\bin\qmake.exe" E:\TestProj\testlib\staticlib\staticlib.pro -spec win32-msvc "CONFIG+=qtquickcompiler"
"D:\Qt\Qt5.12.9\Tools\QtCreator\bin\jom.exe" -f E:/TestProj/testlib/build-staticlib-Desktop_Qt_5_12_9_MSVC2017_32bit-Release/Makefile qmake_all
"D:\Qt\Qt5.12.9\Tools\QtCreator\bin\jom.exe" 

[x64] [debug]

// 编译环境的工作路径在 E:/TestProj/testlib/build-staticlib-Desktop_Qt_5_12_9_MSVC2017_64bit-Debug
"D:\Qt\Qt5.12.9\Tools\QtCreator\bin\jom.exe" clean
"D:\Qt\Qt5.12.9\5.12.9\msvc2017_64\bin\qmake.exe" E:\TestProj\testlib\staticlib\staticlib.pro -spec win32-msvc "CONFIG+=debug" "CONFIG+=qml_debug"
"D:\Qt\Qt5.12.9\Tools\QtCreator\bin\jom.exe" -f E:/TestProj/testlib/build-staticlib-Desktop_Qt_5_12_9_MSVC2017_64bit-Debug/Makefile qmake_all
"D:\Qt\Qt5.12.9\Tools\QtCreator\bin\jom.exe" 

[x64] [release]

// 编译环境的工作路径在 E:/TestProj/testlib/build-staticlib-Desktop_Qt_5_12_9_MSVC2017_64bit-Release
"D:\Qt\Qt5.12.9\Tools\QtCreator\bin\jom.exe" clean
"D:\Qt\Qt5.12.9\5.12.9\msvc2017_64\bin\qmake.exe" E:\TestProj\testlib\staticlib\staticlib.pro -spec win32-msvc "CONFIG+=qtquickcompiler"
"D:\Qt\Qt5.12.9\Tools\QtCreator\bin\jom.exe" -f E:/TestProj/testlib/build-staticlib-Desktop_Qt_5_12_9_MSVC2017_64bit-Release/Makefile qmake_all
"D:\Qt\Qt5.12.9\Tools\QtCreator\bin\jom.exe" 

本文档示例工程以上传至CSDN,资源路径为:
https://download.csdn.net/download/shadow_2011/36157689

你可能感兴趣的:(#,qt,开发IDE,qt,开发语言,msvc,windows,vs2015)