Marble它是一个虚拟地球仪和地图应用程序,支持多种平台。Marble 提供 2D 和 3D 的地图视图,能够展示各种地理信息,像卫星图、街道图、气象图等。它还支持自定义插件、路线规划、离线地图等功能,适合地理信息系统 (GIS) 和教育用途。
Marble 有多种使用场景,可以集成到 Qt 应用中。你可以在使用 Marble 作为独立应用,也可以将其嵌入到自己的项目中.
你可以按照以下步骤搭建qt vs marble开发环境:
1. 先安装git和cmake工具
安装CMake时会默认勾选添加到环境目录
Download CMake
2.测试QT5+MinGW 32位环境
打开程序菜单中的Qt 5.14.2 (MinGW 7.3.0 32-bit)环境,先来克隆marble源代码
创建目录D:\marble,在里面创建两个不同目录,如果链接下载不了的话请在管网查看最新的:
Marble - find your way and explore the world
mkdir build-release build-debug
git clone -b Applications/17.04 https://invent.kde.org/education/marble
如果下载太慢或无响应,请自带梯子;
官方的代码居然还能编译报错了,不太清楚为啥为漏掉一行?解决办法如下:
在克隆下载完代码到本地后, 先打开下面的一些文件中加一行#include <QIcon>
D:\Marible\src\plugins\render\gpsinfo\GpsInfo.h
D:\Marible\src\plugins\render\speedometer\Speedometer.h
#include <QIcon>
3.构建CMake文件并编译生成QT库libmarblewidget-qt5.dll.a
分别进不同目录依次输入以下命令(一般不需要debug版本)
// release版本 (注意当前操作目录)
cd D:\Marible\build-release
cmake -G "MinGW Makefiles" -DQTONLY=TRUE -DQT5BUILD=TRUE -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
mingw32-make
// debug版本 (注意当前操作目录)
cd D:\Marible\build-debug
cmake -G "MinGW Makefiles" -DQTONLY=TRUE -DQT5BUILD=TRUE -DCMAKE_BUILD_TYPE=Debug ..
mingw32-make
这里会非常慢,我这台老爷车(i7-6700HQ + 32GB) 跑了15分钟才编译20%(大写的尴尬)
4. QT Creator新建一个默认QMainWindow的工程
在.pro工程文件末尾添加以下代码:
可以注释掉debug这里全部采用release版本即可
# 根据构建模式更改头文件目录
#win32:debug {
# INCLUDEPATH += D:/Marible/build-debug/src/lib/marble
# LIBS += "D:/Marible/build-debug/src/lib/marble/libmarblewidget-qt5.dll.a"
#}
#win32:release {
INCLUDEPATH += D:/Marible/build-release/src/lib/marble
LIBS += "D:/Marible/build-release/src/lib/marble/libmarblewidget-qt5.dll.a"
#}
INCLUDEPATH += D:/Marible/src/lib/ \
D:/Marible/src/lib/marble/ \
D:/Marible/src/lib/marble/blendings \
D:/Marible/src/lib/marble/cloudsync \
D:/Marible/src/lib/marble/declarative \
D:/Marible/src/lib/marble/geodata \
D:/Marible/src/lib/marble/geodata/data \
D:/Marible/src/lib/marble/geodata/graphicsitem \
D:/Marible/src/lib/marble/geodata/handlers \
D:/Marible/src/lib/marble/geodata/parser \
D:/Marible/src/lib/marble/geodata/scene \
D:/Marible/src/lib/marble/geodata/writer \
D:/Marible/src/lib/marble/geodata/writers \
D:/Marible/src/lib/marble/geodata/writers/dgml \
D:/Marible/src/lib/marble/geodata/writers/kml \
D:/Marible/src/lib/marble/graphicsview \
D:/Marible/src/lib/marble/layers \
D:/Marible/src/lib/marble/osm \
D:/Marible/src/lib/marble/projections \
D:/Marible/src/lib/marble/routing \
D:/Marible/src/lib/marble/routing/instructions \
这个是mainwindow.cpp中修改的部分代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <marble/MarbleWidget.h>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// Load Marble using OpenStreetMap in Mercator projection
Marble::MarbleWidget *mapWidget = new Marble::MarbleWidget;
mapWidget->setProjection(Marble::Mercator);
// 注意这个路径是官方自带的数据
mapWidget->setMapThemeId("data/maps/earth/openstreetmap/openstreetmap.dgml");
setCentralWidget(mapWidget);
setWindowTitle("Hello Marble!");
}
5. 发布QT marble程序
将这两个marble生成的dll拷贝到你程序根目录下:
D:\Qt\Qt5.14.2\5.14.2\mingw73_32\bin>windeployqt.exe C:\Users\xx\Desktop\MarbleTest\release\YouApp.exe
D:\Qt\Qt5.14.2\5.14.2\mingw73_32\bin>windeployqt.exe C:\Users\xx\Desktop\MarbleTest\release\libastro.dll
D:\Qt\Qt5.14.2\5.14.2\mingw73_32\bin>windeployqt.exe C:\Users\xx\Desktop\MarbleTest\release\libmarblewidget-qt5.dll
官方自带的APP下载地址:
Marble - find your way and explore the world
将官方的data拷贝过来到你的APP目录中就可以直接使用它自带的地图数据了:
发布版本的主目录应该是这样的:
鼠标可以拖拽,滚动缩放等等,运行后效果图如下:
下一期再介绍如何在Visual Studio环境生成.lib库吧!
标签:src,QT5,lib,marble,MinGW,Marible,release,Marble From: https://blog.csdn.net/wangningyu/article/details/143086247