一、QT、QGIS 在windows下cmake独立应用开发-环境配置

         本文主要介绍QT、QGIS的Windows应用开发环境准备工作。适用于借助QGIS的GIS功能,QT的UI功能开发带GIS信息的独立应用,工程为采用vs2019开发的cmake工程。

        QGIS开发从语言方面出发有两个选择,python、C++,使用python开发主要通过调用QGIS和QT的python接口,这一套专门接口叫pyqgis 和pyqt,使用C++开发主要通过将QGIS和QT的库链接到我们工程中,进行开发。我们主要介绍C++开发环境准备,python不做介绍。QGIS是开源的工程,我们在准备环境过程中就有两种选择:1,通过编译源码,将编译后的库集成到我们的应用中。2,通过安装qgis官方网站提供的编译后的文件进行安装。在这里我们采用第二种方法,由于打包好的qgis挈带了qt,而且我觉的自主安装qt没必要,且可能存在不知道的隐患,所以选择使用qgis自带的qt,下文就不会再介绍如何使用自己安装的qt。

以下是具体安装步骤:

1,准备工作安装文件:

进入官网 QGIS . 点击界面下方的下载界面连接。

下载快速连接:Download QGIS

这里我们选择:OSGeo4W 

 下载完成后为一个在线安装库的可执行程序:

 2,安装环境:

启动osgeo4w-setup.exe,打开如下界面,两个选择 Express Install (快速安装,很多安装参数将按默认进行),Advanced Install (高级安装,我们可以自己选择更多的安装方法),选择Advanced Install :

 点击下一页,可选:install from Internet(从网络下载安装,也即在线安装),Download Without Installing (只下载不安装),Install from Local Directory (从本地文件夹安装,和第二种结合使用),我们选择在线安装。

 下一页,Root Directory (选择安装的根目录),Install For (为哪些用户使用),这儿选择Just Me,后面的Create icon on Desktop (创建桌面快捷方式),Add icon to Start Menu (添加到系统开始菜单) 可以按自己喜欢选择。

下一页,选择下载的安装文件保存目录

下一页,网络连接方式选择,Direct Connection (直连)。

 下一页,选择下载网址,默认选第一个,如果后续下载失败或速度慢,可以重新启动选择其他站进行尝试。

下一页,首先在上面的搜索栏输入qgis-ltr(qgis长期支持版),搜索结果出来后点击ALL旁边的Default,变成Install。

 

 完成这一步后清除搜索框的内容,再搜索qgis-dev-deps(开发依赖库),重复刚才的步骤,将All点击成Install状态。

 然后可以一路点击下一步直到安装完成。(安装过程中已经下载的安装包,或已经安装的在重启安装程序再次安装时可以自动跳过。)

3,qgis安装完成后,安装目录下会是这样的:

 在qpps 目录下可以看到python、qt、qgis-ltr、qgis-ltr-dev 等一些依赖库都已经安装,我们可以进入实际开发。

 4,环境变量配置

库已经安装好,但是若想在vs2019下开发,还需要设置一些环境变量,让vs找到我们安装的库。有两种方式:1,直接配置环境变量,永久性配置,2,采用脚本配置环境变量,启动脚本后生效。在电脑安装的程序比较多,环境复杂的情况下,建议采用后一种,若机器只用作qgis工程开发,可以采用第一种。以下配置是按照qgis安装在D:/OSGeo4W64/ 下进行的配置,具体还需要根据实际安装路径进行修改。

需要配置的环境变量:

环境变量名:path或PATH

对应的值:%PATH%;D:/OSGeo4W64/bin;D:/OSGeo4W64/apps/qgis-ltr/bin;D:/OSGeo4W64/apps/qgis-ltr-dev/bin;D:/OSGeo4W64/apps/Qt5/bin;D:/OSGeo4W64/apps/grass/grass78/bin;D:/OSGeo4W64/apps/gdal-dev/bin;D:/OSGeo4W64/apps/proj-dev/bin;

环境变量名:GDAL_DATA

对应的值:D:/OSGeo4W64/share/gdal

环境变量名:PROJ_LIB

对应的值:D:/OSGeo4W64/share/proj

采用脚本配置环境变量,可以创建脚本qgis_vs_start.bat 脚本内容:

@echo off
echo "set env path befor:"
echo ******************************************************************************************
echo %PAth%
::把开发环境设置到当前cmd的环境(仅对cmd生效)
set PATH=%PATH%;D:/OSGeo4W64/bin;D:/OSGeo4W64/apps/qgis-ltr/bin;D:/OSGeo4W64/apps/qgis-ltr-dev/bin;D:/OSGeo4W64/apps/Qt5/bin;D:/OSGeo4W64/apps/grass/grass78/bin;D:/OSGeo4W64/apps/gdal-dev/bin;D:/OSGeo4W64/apps/proj-dev/bin;
 
::设置坐标系相关文件
set GDAL_DATA=D:/OSGeo4W64/share/gdal

set PROJ_LIB=D:/OSGeo4W64/share/proj

echo "set env path end:"
echo ******************************************************************************************
echo %PAth%
echo ******************************************************************************************
echo "Start visoual studio 2019"
::设置vs启动(路径为:右键打开所在的文件夹直到找到exe执行程序)
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\devenv.exe"
 
::pause>null

5,创建基础工程

采用脚本方式,打开vs2019,创建cmake工程,修改CMakeList.txt

cmake_minimum_required (VERSION 3.8)

project ("RTRAPP")


set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
 
SET(QT_USE_QTMAIN TRUE)
 
find_package(Qt5 COMPONENTS Core Widgets Xml Sql REQUIRED)

set(qgis_path D:/OSGeo4W64/apps/qgis-ltr)
set(osg_path D:/OSGeo4W64)

if(qgis_path STREQUAL "NOT-FOUND")
 message(FATAL_ERROR "need download qgis sdk from Run Geo4w.exe")
endif()
 message(STATUS "qgis_path >>${qgis_path}")
 
set(CMAKE_BUILD_RPATH D:/OSGeo4W64)            #设定cmake_build_path的目录
message(STATUS "CMAKE_BUILD_RPATH >>${CMAKE_BUILD_RPATH}")     #打印目录

set(OSG_INC "${osg_path}/include")
set(OSG_LIB "${osg_path}/lib")
set(OSG_BIN "${osg_path}/bin")

set(QGIS_INC "${qgis_path}/include")
set(QGIS_LIB "${qgis_path}/lib")
set(QGIS_BIN "${qgis_path}/bin")
 
message(STATUS "OSG_INC >> ${OSG_INC}")
message(STATUS "OSG_LIB >> ${OSG_LIB}")
message(STATUS "QGIS_INC >> ${QGIS_INC}")
message(STATUS "QGIS_LIB >> ${QGIS_LIB}")


file(GLOB ALL_LIBS ${QGIS_LIB}/*.lib)
message(STATUS "ALL_LIBS >>${ALL_LIBS}")


file(GLOB ALL_LIBS2 ${OSG_LIB}/*.lib)
message(STATUS "ALL_LIBS2 >>${ALL_LIBS2}")
 
include_directories(${QGIS_INC} D:/OSGeo4W64/apps/Qt5/include) #头文件的路径 SDK下QGIS目录和自带Qt5的头文件路径


link_directories(${GIS_LIB})
link_libraries(${ALL_LIBS})
link_libraries(${ALL_LIBS2})

add_definitions(-D_USE_MATH_DEFINES)

aux_source_directory(${CMAKE_SOURCE_DIR} SRC_ALL)
 

add_subdirectory(util)
add_subdirectory(subwidget)
add_subdirectory(view)


add_executable(${PROJECT_NAME} main.cpp ${ALL_UI}) # console 
#add_executable(${PROJECT_NAME} WIN32 main.cpp ${ALL_UI} ) # no console 
target_link_libraries(${PROJECT_NAME} Qt5::Widgets Qt5::Xml Qt5::Sql )
 
 
file(WRITE ${RTRAPP_SOURCE_DIR}/bin/pathCmd.cmd 
"@echo off
set PATH=%PATH%;${QGIS_BIN};D:/OSGeo4W64/apps/Qt5/bin;${OSG_BIN};
${PROJECT_NAME}.exe
echo application begin...
::pause>null"
)#这里生成一个cmd脚本用于拉起exe。在VS开发下可能不太方便调试。


install(TARGETS ${PROJECT_NAME}
  RUNTIME DESTINATION ${RTRAPP_SOURCE_DIR}/bin
  ARCHIVE DESTINATION ${RTRAPP_SOURCE_DIR}/lib
  LIBRARY DESTINATION ${RTRAPP_SOURCE_DIR}/lib)
 
install(DIRECTORY ${CMAKE_BUILD_RPATH} DESTINATION ${RTRAPP_SOURCE_DIR}/bin FILES_MATCHING PATTERN "*.cmd")

在程序入口 main.cpp 文件中创建应用,编写窗口

#include <qgis.h>
#include "main.h"
#include <qgsapplication.h>



int main(int argc, char* argv[])
{
	
	QgsApplication myApp(argc, argv, true);
	
	myApp.setPrefixPath("D:\\OSGeo4W64\\apps\\qgis", true);     //配置prefix路径
	QMainWindow mainWindow;
	//mainWindow.show();
	mainWindow.showMaximized();

	return myApp.exec();

}

接下来就可以编写自己的窗口,加入自己的gis,进行设计开发了。

以下是上述代码启动后界面,一个空的窗口:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xb52121

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值