QT5.12.6+QGIS3.10二次开发(Qtcreater)(一)环境搭建

一、前言

QtCreater的编译模式有msvc和mingw两种,msvc调用的第三方库是.lib结尾的,而mingw调用的库是.a结尾的。在windows下下载的QGIS开发包中的库文件是.lib库,所以,在QtCreater中直接使用下载的QGIS库只能采用msvc编译模式(至于mingw下调用.lib库比较麻烦,而且容易出各种问题,在此不做深入讨论),本文主要说明使用msvc编译模式下的环境搭建方法。
准备工作:

  1. 下载vs_Community.exe(visual studio 2017 社区版)
    链接:https://pan.baidu.com/s/1lQQUkW6AMZCVqowlJpLybw
    提取码:j1zs
    (visualstudio官网下载也行,但是有时候速度很慢)
  2. 下载qt-opensource-windows-x86-5.12.6.exe(或者其他版本)
    下载地址:
  3. 下载osgeo4w-setup-x86_64.exe
    下载地址:https://www.qgis.org/en/site/forusers/download.html
    (QGIS in OSGeo4W,有64位和32位两个版本,根据自己需要下载,需要跟QT版本一致,也就是说,如果此处下载32位版本,qt安装时也需要安装32位版本;如果此处下载64位版本,qt安装时也需要安装64位版本)
    其中,vs_Community.exe和osgeo4w-setup-x86_64.exe都是网络安装包,所以安装过程需要联网。

二、VS2017安装

1.双击vs_Community.exe,开始安装vs2017
QT5.12.6+QGIS3.10二次开发(Qtcreater)(一)环境搭建_第1张图片

点击“继续”,等待下载器下载、安装完成,
QT5.12.6+QGIS3.10二次开发(Qtcreater)(一)环境搭建_第2张图片

下载器安装完成后自动启动,进入准备界面,如下:
QT5.12.6+QGIS3.10二次开发(Qtcreater)(一)环境搭建_第3张图片

加载完毕后,出现如下界面:
QT5.12.6+QGIS3.10二次开发(Qtcreater)(一)环境搭建_第4张图片

选中“使用C++的桌面开发”,右下角选择“下载完后安装”,点击安装按钮开始安装。大约20-30分钟左右。
2.安装完毕后,vs默认未安装调试器,需要手动安装,否则Qt安装完成后MSVC的debugger缺失。安装步骤如下:
打开控制面板程序,找到“Windows Software Development Kit –Windows 10.0xxxx”,鼠标右键,选择“更改”
QT5.12.6+QGIS3.10二次开发(Qtcreater)(一)环境搭建_第5张图片

在弹出的安装程序中,选择“Change”,点击“Next”按钮
QT5.12.6+QGIS3.10二次开发(Qtcreater)(一)环境搭建_第6张图片

在窗口中勾选“Debugging Tools for Windows”,然后点击“Change”按钮(因为我是安装完后截的图,所以“Change”按钮是灰色的),等待安装完成即可。
QT5.12.6+QGIS3.10二次开发(Qtcreater)(一)环境搭建_第7张图片

三、安装QT5.12

1.双击安装程序开始安装,默认安装在C盘,一直下一步即可。在选择组件部分根据自己的需要选择,简单说一下各组件含义:
Qt5.12.6下时Qt的组件,msvc是msvc编译模式下所需要的库文件,mingw是mingw编译模式下所需的库文件,后面分别是ARM和安卓开发所需要的库文件。
Developer and Designer Tools是开发工具。
在此处,只需要安装msvc2017 64-bit和QtCreater即可(因为我使用的是64位QGIS,所以此处选择64位msvc库,其它组件根据需要选择是否安装,勾选mingw只是因为个人想在其它项目中使用,source组件建议勾选,在编码过程中比较有用)
QT5.12.6+QGIS3.10二次开发(Qtcreater)(一)环境搭建_第8张图片
QT5.12.6+QGIS3.10二次开发(Qtcreater)(一)环境搭建_第9张图片

完成安装后,启动QtCreater,在“工具”—“选项”—“Kits”中,Qt自动检测到MSVC编译器(没有黄色小图标说明安装正常)。
QT5.12.6+QGIS3.10二次开发(Qtcreater)(一)环境搭建_第10张图片

2新建一个工程,测试Qt安装是否成功(一般问题不大,创建一个窗口程序,能跑起来就行~~~~这里就不多说了)
注意选择MSVC编译模式。
QT5.12.6+QGIS3.10二次开发(Qtcreater)(一)环境搭建_第11张图片

四、安装QGIS

双击安装程序,选择“Advanced Install”,“install form network”,后面的默认配置,下一步即可。在选择下载地址界面,第一个非常非常慢,可以在第二个和第四个之中选一个。
QT5.12.6+QGIS3.10二次开发(Qtcreater)(一)环境搭建_第12张图片

在“select package”界面,在搜索框中输入“qgis”(不用敲Enter键),筛选qgis相关包,我安装的是当前的长期有效版本(ltr),所以在带“ltr”的包中选择相同版本号的包下载即可。

QT5.12.6+QGIS3.10二次开发(Qtcreater)(一)环境搭建_第13张图片

下一步完成安装即可,至此,安装工作全部完成。

五、环境测试

1.新建一个工程,选择Qt Widgets Application,在Kits步骤选择MSVC2017编译模式。
QT5.12.6+QGIS3.10二次开发(Qtcreater)(一)环境搭建_第14张图片
QT5.12.6+QGIS3.10二次开发(Qtcreater)(一)环境搭建_第15张图片

2.修改pro文件:

#需要添加xml模块
QT       += core gui xml 
#这两个语句指明了Qgis库头文件(.h)文件的路径。(这个地方网上资料有添加INCLUDE和LIB环境变量来实现的,但是我在“项目”-“构建环境”中对INCLUDE和LIB修改后,不起作用,原因未知,所以此处使用了绝对路径)*
INCLUDEPATH += C:\OSGeo4W64\apps\qgis-ltr\include
INCLUDEPATH += C:\OSGeo4W64\include
# 配置了Qgis库的lib文件的路径
LIBS += -LC:\OSGeo4W64\apps\qgis-ltr\lib -lqgis_core -lqgis_gui
#宏
unix{
DEFINES += CORE_EXPORT=
DEFINES += GUI_EXPORT=
}
!unix{
DEFINES += CORE_EXPORT=__declspec(dllimport)
DEFINES += GUI_EXPORT=__declspec(dllimport)
}

可以把OSGeo4W的安装目录配置到环境变量,添加的时候如下:
设置环境变量:OSGEO4W_HOME C:\OSGeo4W64
在pro文件中使用:
INCLUDEPATH += $( OSGEO4W_HOME)/ apps\qgis-ltr\include

3.修改main.cpp
修改后内容如下:

#include "mainwindow.h"
#include "qgsapplication.h"
#include 
int main(int argc, char *argv[])
{
    QgsApplication a(argc, argv,true);
    QgsApplication::setPluginPath(QDir::currentPath() + "/plugins");
    QgsApplication::initQgis();  //初始化QGIS应用
    MainWindow w;
    w.show();
    return a.exec();
}

4.使用release模式编译
5.拷贝相关依赖到目录
(1)拷贝C:\OSGeo4W\apps\Qt5\bin 目录下全部dll到exe目录
(2) 拷贝C:\OSGeo4W\apps\Qt5\plugins 目录下的platforms目录到 exe目录下
(3)拷贝C:\OSGeo4W\apps\qgis-ltr\bin 目录下全部文件考到exe目录下。
(4)拷贝C:\OSGeo4W\bin 目录下全部dll文件和gdalplugins目录考到exe目录下
(5)把C:\OSGeo4W\apps\qgis-ltr下的plugins文件夹拷贝到exe目录下
(6)拷贝C:\OSGeo4W\share 中gdal目录到exe同级的share目录下(需要手动新建share文件夹)
6.重新编译运行,弹出窗口说明配置完成

六、其它问题

1.环境变量PROJ_LIB
虽然在上一章节到步骤6后程序能跑起来,但是在加载图层时,如果不配置PROJ_LIB环境变量,就会出错(一堆pro.db的错误),所以这里就一起说一下。
使用OSGeo4W安装QGIS后,安装目录下有以下两个proj目录:
C:\OSGeo4W64\share\proj
C:\OSGeo4W64\apps\proj-dev\share\proj
网上有资料中使用第二个目录,但我在使用第二个目录时虽然没有了proj.db的错误,但是会出现”proj_create_from_database: SQLite error on SELECT name, type,…”的错误。使用第一个目录的时候则没有再报错,所以我把PROJ_LIB环境变量配置成了C:\OSGeo4W64\share\proj
环境变量的配置方法:
在“项目”–“构建环境”,点击“详情”,点击“添加”按钮,新增一条配置。
2.M_PI问题
如果出现M_PI未声明的标识符问题,则需要添加在pro文件中添加如下内容:
DEFINES += _USE_MATH_DEFINES

3.编码格式问题
虽然在编译时能通过,但是会报“warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失”的警告,解决方法如下:
QtCreater中点击“项目”—“Project Setting”—“编译器”,将编译器设置修改为“自定义设置”,在文件编码处,默认编码设为“UTF-8”,UTF-8 BOM处选择“如果编码是UTF-8则添加”,然后将出现警告的文件修改一下然后保存(敲个回车、打个空格都行,别出BUG就行),再重新编译即可(添加的qgis头文件仍然会报警告,目前没找到解决办法)。
QT5.12.6+QGIS3.10二次开发(Qtcreater)(一)环境搭建_第16张图片

你可能感兴趣的:(QGIS二次开发,QT,qt,windows,qgis,qtcreator)