首页 > 其他分享 >vs+qt静态编译环境配置

vs+qt静态编译环境配置

时间:2022-11-20 22:02:04浏览次数:70  
标签:12 运行库 qt 5.12 编译 vs 多线程 Qt

一、简述

Qt官方提供二进制安装包+vs开发环境默认只能通过动态编译。可以通过Qt提供工具Windeployqt把相关qt依赖dll复制到当前目录(但是会有windows系统提供dll不能关联,所以在其他系统会提示需要运行时库)。

如果需要静态编译exe可执行程序,需要通过Qt源码自己编译。

二、编译安装

2.1环境准备

Vs:Visual Studio 2017

Qt:qt-everywhere-src-5.12.12

Qt Vs Tools:Vs扩展和更新


Python:Python3.7.9

Ruby:rubyinstaller-devkit-2.7.5-1-x64.exe

Perl:strawberry-perl-5.32.1.1-64bit


Qt源码:qt-everywhere-src-5.12.12.zip


2.2Qt参数修改

Qt解压目录:qtbase\mkspecs\common\msvc-desktop.conf

配置文件中:40、41、42行

  1 QMAKE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_OPTIMIZE -MD
  2 QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -Zi -MD
  3 QMAKE_CFLAGS_DEBUG = -Zi –MDd

改为下面内容:

  1 QMAKE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_OPTIMIZE -MT
  2 QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -Zi -MT
  3 QMAKE_CFLAGS_DEBUG = -Zi -MTd



2.3编译


编译x64编译环境:管理员运行VS环境的“适用于 VS 2017 的 x64 本机工具命令提示”

输入对应命令:

  1 切换工作目录:
  2 C:\Windows\System32>cd C:\Qt\Qt5.12.12_static\qt-everywhere-src-5.12.12\qt-everywhere-src-5.12.12
  3 
  4 预编译,指定安装目录:
  5 C:\Qt\Qt5.12.12_static\qt-everywhere-src-5.12.12\qt-everywhere-src-5.12.12>configure.bat -mp -confirm-license -opensource -platform win32-msvc -debug-and-release -static -force-asserts -prefix C:\Qt\Qt5.12.12_static\Qt_msvc2017_x86_static -static-runtime -silent -opengl desktop -qt-sqlite -qt-pcre -qt-zlib -qt-freetype -qt-harfbuzz -qt-libpng -qt-libjpeg -nomake examples -nomake tests
  6 
  7 编译,用默认nmake工具:
  8 C:\Qt\Qt5.12.12_static\qt-everywhere-src-5.12.12\qt-everywhere-src-5.12.12>nmake
  9 
 10 对应的程序复制到安装目录:
 11 C:\Qt\Qt5.12.12_static\qt-everywhere-src-5.12.12\qt-everywhere-src-5.12.12>nmake install


2.4vs环境配置

Vs->Qt VS Tools->Qt Versions

image


2.5新建项目及静态编译配置



Debug环境:

image


Release环境:

image


一种语言的开发环境往往会附带有语言库,这些库就是对操作系统的API的包装,我们也称这些语言库为运行库

对于MSVC的运行库(CRT),按照静态/动态链接,可以分为静态版和动态版;按照调试/发布,可以分为调试版本和发布版本;按照单线程/多线程,可以分为单线程版本和多线程版本(但是目前VS中已不提供单线程版本了)

在调试模式下,使用调试运行库:多线程调试(/MTd)、多线程调试DLL(/MDd)

在发布模式下,使用发布运行库:多线程(/MT)、多线程DLL(/MD)

调试模式下运行库带d,但发布模式不带。调试与发布的区别在于,发布模式省略了程序的调试信息,简单来说就是删除了调试模式下的用于调试的内容,所以一般情况下,发布模式下生成的可执行文件的大小比调试模式下生成的要小

静态链接:多线程(/MT)、多线程调试(/MTd)

动态链接:多线程DLL(/MD)、多线程调试DLL(/MDd)

动态链接为D,静态链接为T。两者的区别在于,静态链接将程序所依赖的运行库集成到了可执行文件中,可执行文件运行时不再需要运行库;动态链接没有把程序所依赖的运行库集成到可执行文件中,可执行文件运行时需要运行库。由于静态链接将程序所依赖的运行库集成到了可执行文件中,一般情况下,生成的可执行文件的大小大于动态链接生成的

对这四种运行库的选在位于VS的项目属性-》C/C++-》代码生成-》运行库:


三、相关参考

标签:12,运行库,qt,5.12,编译,vs,多线程,Qt
From: https://www.cnblogs.com/mehome/p/16909712.html

相关文章

  • Miniconda & vs code _ How to Set up Python and Visual Studio Code IDE for Dat
    原文:HowtoSetupPythonandVisualStudioCodeIDEforDataScience-OneZeroBlog SettingupPythonandrunningitsmoothlyonyourPCisessentialford......
  • the Jupyter Extension for VS Code
    原文:IntroducingtheJupyterExtensionforVSCode-Python(microsoft.com) JupyterNotebookenablescreatingandsharingdocumentsthatcontainlivecode,e......
  • 利用xmake在c++项目中编译与调用webassmebly
    最近在尝试用webassembly替代lua作为c++程序的脚本。刚好xmake也支持了webassembly的编译。下面是踩坑记录。项目需要两个target:一个c++项目、一个webassembly项目。需要......
  • vs2022 使用 cmake
    vs版本:vs2022vs中默认不使用cmake,在项目->cmake工作区设置中修改{"enableCMake":flase}默认为false,修改为true即可。点击CMakeLists.txt文件设置启动项,......
  • 学习Cortex-M:结构体 vs 分散变量
    学习Cortex-M:结构体vs分散变量静态变量使用结构体表示的代码无论在space上还是speed上都要优于分散变量,应当尽量使用结构体。对于局部变量采用结构体还是分散变量并没有什......
  • golang的编译过程
    编译过程:-----编译前端------词法分析与语法分析类型检查(别的语言中的语义分析,这时候有语法错误才会被找出来)-----编译后端------中间代码生成机器码生成我......
  • vscode连接云服务器开发
    前言选的腾讯的云服务器,非双11,当时60多一年,还挺划算的,系统选的centos7.9-docker版(已经预装docker了)安装打开VSCode软件,点击最左侧活动栏内的“扩展”小图标,然后搜索......
  • 解决VSCode无法显示Unity代码提示和源代码
     1,先删除项目目录下的配置文件,也可以理解为除文件夹外的其他文件 2,先把vscode选中,下拉框中没有vscode的找到文件就可以导进来再选中。然后红框里的不要勾选,因为我是这......
  • Debian编译安装最新的Linux kernel 6.1.0-rc3
    没有编译过​​Linux kernel的Linux运维工作是不完整的安装必要的包sudoaptupdate-y&&sudoaptinstallmakegccbc-y&&sudoaptinstallpkg-configlibncurses-de......
  • tslib库编译与移植
    tslib库编译与移植1.tslib库简介  tslib是电阻式触摸屏用于校准的一个软件库,是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏......