Go-Qt5开发之Windows10安装配置(1)

2023-05-16

Go-Qt5开发之Windows10安装配置

  • 开发环境
  • 安装Qt,两种方式(这里采用官方版本方式):
  • MSYS2 安装
    • MSYS2介绍
    • MSYS2是什么编辑
    • 安装
    • 更换国内源
      • 教程
      • 更换内容
    • 通过以下命令来更新MSYS2系统文件包:
    • 更新:关闭MSYS2,重新启动MSYS2并更新
    • 设置环境变量(重要)
    • 安装软件
      • 安装Qt动态发布链接库:
      • 安装Qt静态链接库:
      • 清理安装包
    • 变量配置
  • Qt离线包安装
    • 安装
    • 将g++所在路径加入环境变量PATH中(可选)
  • 设置变量(*非常重要,不匹配后期后导致编译错误)
  • Go mod配置
    • 安装qt库方式:这里用第一种
    • 开启mod,进行下载
    • 下载qt库
    • 库文件处理说明
    • 库文件处理(therecipe,gopherjs)
    • qtsetup
    • 为什么不直接使用go build
    • 使用go编译1
    • 使用go编译2
    • go build 生成没有黑窗口
    • qtdeploy编译 讲解
    • qtdeploy编译,生成目标exe文件

开发环境

  • 系统:windows10
  • Go版本:1.14
  • Msys2版本:20190524(最新x64)
  • Git:2.25
  • Go开发工具:goland-2019.3.1
  • Qt5 版本: 5.13.2 (推荐5.13,具体看官网)

安装Qt,两种方式(这里采用官方版本方式):

  • MSYS2 安装
  • 官方版本安装

MSYS2 安装

MSYS2介绍

MSYS2 (Minimal SYStem 2) 是一个MSYS的独立改写版本,主要用于 shell 命令行开发环境。同时它也是一个在Cygwin (POSIX 兼容性层) 和 MinGW-w64(从"MinGW-生成")基础上产生的,追求更好的互操作性的 Windows

MSYS2是什么编辑

MSYS2是MSYS的一个升级版,准确的说是集成了pacman和Mingw-w64的Cygwin升级版, 提供了bash shell等linux环境、版本控制软件(git/hg)和MinGW-w64 工具链。与MSYS最大的区别是移植了 Arch Linux的软件包管理系统 Pacman(其实是与Cygwin的区别)。

安装

直接下一步就好,具体看以下资料。

  • 下载地址:https://www.msys2.org/
  • 安装教程:https://baike.baidu.com/item/MSYS2/17190550?fr=aladdin

更换国内源

教程

https://www.cnblogs.com/feipeng8848/p/10037962.html
https://www.cnblogs.com/findumars/p/6546088.html

更换内容

简单的说 ..\msys64\etc\pacman.d 目录下有三个文件。 
mirrorlist.msys 
mirrorlist.mingw64 
mirrorlist.mingw32

# 这里安装在D盘D:\DevelopProgram\msys64,所以可以直接在D:\DevelopProgram\msys64\mingw64\etc\pacman.d下直接修改文件
# 或者在msys2里直接 vim /etc/pacman.d下修改


mirrorlist.msys:
##
## MSYS2 repository mirrorlist
##
## Primary
## msys2.org
Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch/
Server = http://repo.msys2.org/msys/$arch
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MSYS2/$arch
Server = http://www2.futureware.at/~nickoe/msys2-mirror/msys/$arch/


mirrorlist.mingw64:
##
## 64-bit Mingw-w64 repository mirrorlist
##
## Primary
## msys2.org
Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/
Server = http://repo.msys2.org/mingw/x86_64
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/x86_64
Server = http://www2.futureware.at/~nickoe/msys2-mirror/x86_64/
Server = http://mirror.bit.edu.cn/msys2/REPOS/


mirrorlist.mingw32:
##
## 32-bit Mingw-w64 repository mirrorlist
##
## Primary
## msys2.org
Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686/
Server = http://repo.msys2.org/mingw/i686
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/i686
Server = http://www2.futureware.at/~nickoe/msys2-mirror/i686/

通过以下命令来更新MSYS2系统文件包:

pacman --needed -Sy bash pacman pacman-mirrors msys2-runtime

更新:关闭MSYS2,重新启动MSYS2并更新

pacman -Syu

设置环境变量(重要)

D:\DevelopProgram\msys64\mingw64\bin
D:\DevelopProgram\msys64\usr\bin

安装软件

安装Qt动态发布链接库:

pacman -S mingw-w64-x86_64-qt-creator mingw-w64-x86_64-qt5

安装Qt静态链接库:

pacman -S mingw-w64-x86_64-qt5-static

清理安装包

pacman -Scc

变量配置

vim /etc/profile

export QT_MSYS2=true
export QT_MSYS2_ARCH=amd64
export QT_MSYS2_ARCH=amd64
export QT_MSYS2_STATIC=true

# 生效:
source /etc/profile

Qt离线包安装

安装

  • 官方安装方案:https://github.com/therecipe/qt/wiki/Installation-on-Windows
  • 根据go-qt文档,选择推荐版本qt5.13
  • 下载地址:http://download.qt.io/archive/qt/5.13/5.13.2/
  • 如果怕麻烦,安装时可以把所有组件安装上
  • 参考安装文档:https://blog.csdn.net/weixin_30617561/article/details/96078022

将g++所在路径加入环境变量PATH中(可选)

D:\DevelopProgram\Qt\Qt5.13.2\5.13.2\mingw73_64\bin 目录下包含了gcc、g++等编译链接工具
D:\DevelopProgram\Qt\Qt5.13.2\Tools\mingw730_64\bin 目录下包含了qmake.exe以及程序运行过程中需要的动态链接库(.dll)文件

设置变量(*非常重要,不匹配后期后导致编译错误)

err:
exec: "gcc": executable file not found in %PATH%

linux:
export QT_DIR=D:\\DevelopProgram\\Qt\\Qt5.13.2
export QT_VERSION=5.13.2
Windows:
QT_DIR=D:\\DevelopProgram\\Qt\\Qt5.13.2
QT_VERSION=5.13.2

Go mod配置

安装qt库方式:这里用第一种

  • 推荐在下载库的时候打开,这样会走代理,下载速度会非常快,后期处理略麻烦;
  • 关闭mod,下载速度慢,但后期处理简单。
  • 官网直接下载包,放置src下

开启mod,进行下载

# 打开mod
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io

备用代理地址:
GOPROXY=https://goproxy.io,direct
GOPROXY=https://mirrors.aliyun.com/goproxy/
GOPROXY=https://goproxy.cn

下载qt库

go get -v -tags=no_env github.com/therecipe/qt/cmd/...

库文件处理说明

  • 由于打开了mod,实现了代理下载,但库位置在:%GOPATH%/pkg/mod/
  • 会导致配置go mod vendor;以及引发其他的问题;
  • 运行qtsetup 会导致库文件不全;
  • IDE会导致识别问题;
  • 因此将库文件放置src下,前提一定要配置好GOPATH\GOROOT变量。

库文件处理(therecipe,gopherjs)

cp -r %GOPATH%/pkg/mod/github.com/therecipe %GOPATH%/src/github.com/
cp -r %GOPATH%/pkg/mod/github.com/gopherjs %GOPATH%/src/github.com/

在src中进入对应的包,去掉版本号,否则无法识别
同目录文件进行合并

qtsetup

生成binding需要编译一些Qt的source文件,所以要花上一段时间。

# 关闭mod,否则会让你运行go mod vendor
go env -w GO111MODULE=off

# 开始编译
%GOPATH%\bin\qtsetup.exe

为什么不直接使用go build

因为qt使用了moc技术(元对象编译器),对于一些Qt的扩展语法需要进行额外的处理,用C++写过Qt项目的读者应该知道不能直接用g++或者其他编译器去编译项目代码,而是通过qmake生成的Makefile进行构建,而在这个Makefile文件里就使用了moc程序来处理Q_OBJECT这样的扩展语法,处理完成后再交由C++编译器编译。
golang也是同样的流程,只不过不用自己配置qmake,而是用一条qtdeploy命令就能完成项目的编译了。

使用go编译1

当然使用go build也是可行的,如果你不需要qtdeploy生成的额外内容,使用如下命令即可:
cd your_project
qtmoc # 使用moc处理Qt扩展语法
qtrcc # 如果使用了qrc机制需要使用此命令
go build -o project_name
之后等待一段时间,会在目录下生成可执行程序。这个程序是动态链接的,所以需要运行程序的目标机器安装有相应的依赖。
因为目标环境可能不会安装有这些依赖,所以这时候我们就可以用qtdeploy解决问题。

使用go编译2

D:\\DevelopProgram\\Qt\\Qt5.13.2\\5.13.2\\mingw73_64\\bin\\qtenv2.bat
go build xx

go build 生成没有黑窗口

go build -ldflags='-H windowsgui'

qtdeploy编译 讲解

qtdeploy build [target] [path/to/your/project]
target是指定的目标平台,编译完成后的程序将可以在target指定的平台上运行。
如果也可以将target设为desktop,qtdeploy将会根据本地环境选择相对应的target。以下是部分可用的target选项:

desktop
windows
linux
android
android-emulator
ios
ios-simulator
sailfish
sailfish-emulator
rpi1
rpi2
rpi3

qtdeploy会自动调用qtrcc和qtmoc来进行预编译,然后再使用go build来编译

qtdeploy编译,生成目标exe文件

qtdeploy build desktop projectDir
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Go-Qt5开发之Windows10安装配置(1) 的相关文章

  • 音视频基础之音频编码原理简介

    一 xff1a 隐蔽信号 数字音频信号如果不加压缩地直接进行传送 xff0c 将会占用极大的带宽 例如 xff0c 一套双声道数字音频若取样频率为44 1KHz xff0c 每样值按16bit量化 xff0c 则其码率为 xff1a 244
  • three.js+vue浏览器端展示nrrd+vtk3D模型(截图功能+颜色功能)

    前言 前面做了vue 43 three js展示nrrd 43 vtk3D模型 vue框架集成后 xff0c 想给我们的项目加一些功能 xff0c 因为目前考虑的只是展示 xff0c 没有需求 xff0c 所以做一些功能尝试添加 xff0c
  • 通过apt方式安装opencv

    转自 xff1a https www cnblogs com cxchanpin p 7103012 html 本文介绍怎样在树莓派中通过apt方式安装opencv xff0c 并通过一个简单的样例说明怎样使用opencv 相比于源码方式安
  • PHP7使用MongoDB\Driver\Manager类实现增删改查

    这篇笔记记录了PHP7使用官方扩展MongoDB Driver提供的Manager BulkWrite Query Cursor WriteResult类实现增删改查的过程 相关笔记 xff1a CentOS6 9安装mongodb和php
  • 牛妹爱数列_牛客练习赛67

    题目链接 xff1a https ac nowcoder com acm contest 6885 D 题意 给你一个长度为n的仅包含01的序列a xff0c 并执行以下操作单点修改 xff1a 0 gt 1 xff0c 1 gt 0前缀修
  • C++11 thread类在windows上无法使用。std 没有成员 thread、thread not member of std

    C 43 43 11 thread类在windows上无法使用 std 没有成员 thread thread not member of std 解决方法 使用C 43 43 11其他特性完全没问题 这个问题原因是MinGW GCC当前仍缺
  • nginx编译安装常见报错

    编译nginx root 64 iZgt88z6l1kvd7Z nginx 1 10 1 configure prefix 61 usr local nginx with http ssl module with pcre 61 pcre
  • 【万人千题】C语言矩阵的转置12.4总结

    目录 一 xff1a 知识点 1 xff0c 概念 二 xff1a 应用 1 xff0c 另开一个数组来存放转置内容 xff08 row和col不等的情况 xff09 2 xff0c n阶矩阵 xff08 row与col相等的情况 xff0
  • MarkDown--- 让CSDN的博客更炫丽,添加小图标,调整字体大小和颜色

    MarkDown 让CSDN的博客更炫丽 xff0c 添加小图标 xff0c 调整字体大小和颜色 1 Icon2 Font3 Color4 Gif1 Animal2 ColorBall3 cartoon4 Beautiful5 JumpSh
  • 手把手教你linux如何挂载磁盘,进行扩容

    Linux挂载磁盘 xff0c 进行扩容 1 检查新磁盘并设定1 1 检查新磁盘1 2 建立PV1 3 建立VG1 4 建立LV 2 挂载2 1 挂载到新目录2 2 挂载到根目录 3 移除3 1 移除挂载关系3 2 Remove VG3 3
  • VMware安装Win11+WSA子系统和使用教程

    VMware安装Win11 43 WSA子系统和使用教程 作者 xff1a Sna1lGo 时间 xff1a 2022 9 29 下载相关文件 xff1a Win11镜像 xff1a Download Windows 11 microsof
  • 计算机网络_以太网帧中的前导码和帧间隙

    以太网帧长中的前导码和帧间隙 1 概述 目前出现三个bug都涉及到L1和L2限速不准确的问题 xff1a 在计算网络带宽时 xff0c 报文设置的越小 xff0c 差距就越大 这个问题几乎所有新手都会遇到 xff0c 在此梳理一下 xff0
  • 初识Nginx和环境准备

    初识Nginx和环境准备 Nginx的优点Nginx的环境搭建开始搭建Nginx环境 Nginx的优点 支持海量的高并发 xff1a 采用IO多路复用epoll 官方测试Nginx能够支持5万并发链接 xff0c 实际生产环境中可以支撑2
  • vim的vimrc配置

    windows 34 modified by Neoh set helplang 61 cn 34 使用中文帮助文档 set encoding 61 utf 8 34 查看utf 8格式的帮助文档 set fileencodings 61
  • C++线程同步——阻塞线程的方法

    一般 xff0c 使线程阻塞我们可以使用 while condition for condition 等循环条件使之线程内语句执行在循环处无法向下继续执行 xff0c 但这样并不是真正意义上的线程阻塞 xff0c 当前线程仍然在执行 xff
  • 利用爬虫爬取游戏网站图片和信息并生成词云图

    一 项目简介 1 1 本项目博客地址 xff1a 1 2 项目完成的功能与特色 功能 xff1a 爬取目标游戏网站的皮肤图片及信息并用爬取的信息生成词云图 特色 xff1a 将爬取的信息做简单的处理 xff0c 并将爬取的图片直接保存在文件
  • Debian搭建FTP服务器及Caddy网站并上传

    Debian搭建FTP服务器及Caddy网站并上传 安装配置FTP1 安装2 查看网络服务状态3 配置vsftpd 安装配置Caddy1 安装Caddy2 配置Caddy 上传网站到服务器疑难解决 参考 安装配置FTP 首先用SSH方式连接
  • linux 软件安装

    linux 软件安装 yum xff1a 软件包管理工具 命令格式 xff1a yum options command command 列表 List of Commands check 检查 RPM 数据库问题 check update
  • POJ2823 滑动窗口 (单调队列)

    题目 来学习一下单调队列 xff1a 他只可以从队尾入队 xff0c 但可以从队尾或队首出队 xff0c 来维护队列的单调性 单调队列有两种单调性 xff1a 元素的值单调和元素的下标单调 单调队列可以用来优化DP 状态转移方程形如dp i
  • docker swarm 使用说明

    docker swarm 使用说明 swarm 命令 xff1a 管理集群 docker swarm command root 64 centos docker swarm help Usage docker swarm COMMAND M

随机推荐

  • SQL处理json数据

    通过sql语句提取json字符串中的数据 1 示例数据 CREATE TABLE 96 json test 96 96 id 96 int NOT NULL COMMENT 39 主键ID 39 96 json str 96 longtex
  • 【一步到位】sublime 配置C/C++环境

    sublime 配置C 43 43 环境 1 找到MinGW64 bin路径2 配置环境变量3 sublime新建Build System4 运行 1 找到MinGW64 bin路径 复制完整路径 2 配置环境变量 xff08 1 xff0
  • docker mysql8使用SSL及使用openssl生成自定义证书

    docker安装MySQL8 修改my cnf vi span class token operator span docker data mysql conf my span class token punctuation span cn
  • springboot连接MySQL使用SSL证书

    安装java jdk 检查是否已安装JDK yum list installed span class token operator span span class token function grep span span class t
  • HTML(五):图片、超链接

    图片 一 图片标签 日常浏览网页中 xff0c 在一个页面中会有文字 图片 音频等等 xff0c 一般一个页面想要获取更多流量 xff0c 一般通过 图文并茂 这一维度进行挖掘 在HTML中 xff0c 使用img标签来表达显示一张图片 对
  • Maven打包提示dependencies.dependency.systemPath错误

    Maven打包提示dependencies dependency systemPath错误 具体信息如下 xff1a Some problems were encountered span class token keyword while
  • macbook桌面的文件突然消失的解决方案

    macos系统的的桌面文件突然间消失的解决方案 原因 有一天就突然发现我电脑桌面上的文件突然就不见了 xff0c 但是commad 43 空格键唤醒聚焦搜索 xff0c 搜索文件又能够找到我所消失的文件 xff0c 并且如果把原有的文件再一
  • 【cmake】搭配vcpkg的manifest模式实现自动安装第三方库

    cmake搭配vcpkg的manifest模式实现自动安装包 好处 类似于pip的requirements 你只需要指定该项目的依赖库 xff0c 就会自动运行vcpkg为你安装所有的依赖库 并且安装在当前项目build下面 这些第三方库与
  • python安装surprise库总是失败

    python安装surprise库缺乏组件的解决办法 1 背景 xff1a 2 明确问题3 找到资源包4 问题解决5 总结 1 背景 xff1a 在做一个用到django框架做音乐的推荐时 xff0c 由于要用到SVD算法 xff0c 需要
  • 通讯网络

    题面 Description 北极的某区域共有n座村庄 xff0c 每座村庄的坐标用一对整数 x y 表示 为了加强联系 xff0c 决定在村庄之间建立通讯网络 通讯工具可以是无线电收发机 xff0c 也可以是卫星设备 所有的村庄都可以拥有
  • Linux主机密码暴力破解

    一 目的 针对Linux主机SSH协议暴力破解过程以及漏洞原理和修复方式详细介绍 二 漏洞介绍 2 1 漏洞原因 由于主机用户没有设置密码或者设置了linux弱密码 xff0c 且未对主机设置严格的基线加固策略 xff0c 导致恶意攻击者可
  • CCF CSP认证201809-3 元素选择器

    201809 3 元素选择器 题目 思路 多级查询需要用到树形结构 xff0c 详见代码 AC代码如下 span class token macro property span class token directive keyword i
  • Week 11 必做题

    文章目录 11 1题目描述样例思路代码11 2题目描述样例思路代码11 3题目描述样例思路代码11 4题目描述样例思路代码 11 1题目描述 蒜头君从现在开始工作 xff0c 年薪 N 万 他希望在蒜厂附近买一套 60平米的房子 xff0c
  • Linux生成随机密码

    使用SHA算法来加密日期 xff0c 并输出结果的前10个字符 xff1a date span class token operator 43 span span class token operator span s span class
  • mac环境,安装anaconda,终端输入conda无效解决

    正常从官网下载安装包安装后 xff0c 打开终端 xff0c 配置conda环境变量 打开终端 xff0c 输入 vim bash profile 出现问题1 原因是 xff1a 存在了同名的文件 xff0c 但是这个同名的文件格式不一样
  • 前端实现一键复制,且不弹出软键盘

    前端实现一键复制 xff0c 且不弹出软键盘 直接上代码 直接上代码 span class token keyword function span span class token function downloadImg span spa
  • 【干货】阿里云ECS设置的安全组没有生效的解决方法

    问题描述 在ECS管理控制中设置对应端口的安全组规则 xff0c 但是未生效 问题原因 安全组配置错误 xff0c 导致规则未生效 解决方案 具体的解决方法请查看 xff1a https help aliyun com knowledge
  • 【干货】阿里云ECS安全组没有生效的解决办法

    解决方法 设置了ECS实例的安全组 xff0c 但是安全组没有生效 xff0c 可能是安全组配置错误 xff0c 所以没生效 xff0c 具体的解决方法请查看 xff1a https help aliyun com knowledge de
  • 使用ssl双向验证登录mysql

    1 检查服务端是否开启ssl认证 show variables like 39 ssl 39 2 确认用户强制使用ssl认证 use mysql username换成具体的用户 select ssl type from user where
  • Go-Qt5开发之Windows10安装配置(1)

    Go Qt5开发之Windows10安装配置 开发环境安装Qt xff0c 两种方式 xff08 这里采用官方版本方式 xff09 xff1a MSYS2 安装MSYS2介绍MSYS2是什么编辑安装更换国内源教程更换内容 通过以下命令来更新