gdal源码剖析与开发指南pdf_QGIS二次开发笔记(4)——Linux和macOS环境配置

最近折腾了一下 Linux 和 macOS 下的环境配置,感觉 Linux 下因为有强大的包管理工具,总体上配置 QGIS 开发环境是比较方便地。而 macOS 虽然没有 apt 那么强大的工具,但是和 Windows 一样,依赖库可以直接下载,有坑但是总体上也比较方便。

Linux

QGIS 在 Linux 上配置环境是比较方便的,根据官方文档进行配置就可以了。依赖库可以如此安装

apt-get install bison ca-certificates ccache cmake cmake-curses-gui dh-python doxygen expect flex flip gdal-bin git graphviz grass-dev libexiv2-dev libexpat1-dev libfcgi-dev libgdal-dev libgeos-dev libgsl-dev libpq-dev libproj-dev libprotobuf-dev libqca-qt5-2-dev libqca-qt5-2-plugins libqscintilla2-qt5-dev libqt5opengl5-dev libqt5serialport5-dev libqt5sql5-sqlite libqt5svg5-dev libqt5webkit5-dev libqt5xmlpatterns5-dev libqwt-qt5-dev libspatialindex-dev libspatialite-dev libsqlite3-dev libsqlite3-mod-spatialite libyaml-tiny-perl libzip-dev lighttpd locales ninja-build ocl-icd-opencl-dev opencl-headers pkg-config poppler-utils protobuf-compiler pyqt5-dev pyqt5-dev-tools pyqt5.qsci-dev python3-all-dev python3-autopep8 python3-dateutil python3-dev python3-future python3-gdal python3-httplib2 python3-jinja2 python3-lxml python3-markupsafe python3-mock python3-nose2 python3-owslib python3-plotly python3-psycopg2 python3-pygments python3-pyproj python3-pyqt5 python3-pyqt5.qsci python3-pyqt5.qtsql python3-pyqt5.qtsvg python3-pyqt5.qtwebkit python3-requests python3-sip python3-sip-dev python3-six python3-termcolor python3-tz python3-yaml qt3d-assimpsceneimport-plugin qt3d-defaultgeometryloader-plugin qt3d-gltfsceneio-plugin qt3d-scene2d-plugin qt3d5-dev qt5-default qt5keychain-dev qtbase5-dev qtbase5-private-dev qtpositioning5-dev qttools5-dev qttools5-dev-tools saga spawn-fcgi pandoc xauth xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable xvfb

其中 python-autopep8 可能会报没有这个库,那用 pip 装其实也一样,去掉也行。

然后使用 cmake 配置 QGIS ,使用 make 编译就可以了。比如 Ubuntu 系统下,在 QGIS 源码仓库里面

mkdir BUILD
cd BUILD
cmake ..
make -j8
sudo make install

基本上无需其他操作。

然后就是安装 QtCreator 了。下载 Qt 在线安装器,可以从清华大学开源软件镜像站下载

Index of /qt/archive/online_installers/3.2/​mirrors.tuna.tsinghua.edu.cn
72cdb92b37dc98b6ba6d80f3f9543c6a.png

然后安装 Qt 。只安装 QtCreator 的话,可能不能使用之前 apt 安装的 Qt 库。所以要查看一下 apt 安装的 Qt 版本,然后安装一个主次版本号相同的 Qt 库,才能让 QtCreator 使用。

但是注意有个坑。如果你需要使用 Armadiilo9 这个库,在之前 apt 安装 GDAL 的时候会自动安装一个 armadillo8 ,貌似和 Armadillo9 不兼容。所以需要先卸载 GDAL 及其相关依赖库,然后自行编译 PROJ, GEOS, Armadillo 以及 GDAL 库。

总体来说 Linux 不愧是开发界永远的神,确实很方便。

更新 2020年9月21日 关于 QGIS 库的使用
unix {
    INCLUDEPATH += /usr/local/include/qgis 
        /usr/include/gdal 
        /usr/include/qwt 
        /usr/include/x86_64-linux-gnu/qt5 
        /usr/lib/gcc/x86_64-linux-gnu/9/include
    LIBS += -lqgis_core -lqgis_gui -l"qwt-qt5"
}

将这段配置添加到 pro 文件中即可

macOS

在 macOS 上坑就略有点多了,比较复杂。首先还是参照官方文档,先安装 XCode 命令行工具

sudo xcode-select --install

然后安装 brew 工具。这个东西可以使用清华大学提供的版本,速度比较快

Tsinghua Open Source Mirror​mirrors.tuna.tsinghua.edu.cn
72cdb92b37dc98b6ba6d80f3f9543c6a.png

如果电脑上有 homebrew ,那么一定要先卸载 homebrew 而且要把残留的文件删掉(残留哪些文件卸载 homebrew 的时候会提示)

然后按照关方说明安装工具

brew install git
brew install cmake
brew install ninja
brew install pkg-config
brew install wget
brew install bash-completion
brew install curl
brew install gnu-sed
brew install coreutils
brew install ccache
brew install libtool
brew install astyle
brew install help2man
brew install autoconf
brew install automake
brew install pandoc

然后安装依赖包,安装依赖包的主要方法是在这个地址https://qgis.org/downloads/macos/deps/ 下载三个文件

  • install_qgis_deps-0.5.4.bash
  • qgis-deps-0.5.4.tar.gz
  • qt-5.14.2.tar.gz

注意一定是 0.5.4 版本,0.5.3 版本编译会有 Segmentation Fault 的问题。然后运行那个 bash 脚本,就可以把依赖库安装到 /opt 文件夹中。当然也可以手动编译安装,除非你愿意的话。

然后就是 CMake 配置并编译了

QGIS_DEPS_VERSION=0.3.0;
    QT_VERSION=5.14.1;
    PATH=/opt/QGIS/qgis-deps-${QGIS_DEPS_VERSION}/stage/bin:$PATH;
    cmake 
      -DCMAKE_INSTALL_PREFIX=~/Applications 
      -DCMAKE_BUILD_TYPE=Release 
      -DQGIS_MAC_DEPS_DIR=/opt/QGIS/qgis-deps-${QGIS_DEPS_VERSION}/stage 
      -DCMAKE_PREFIX_PATH=/opt/Qt/${QT_VERSION}/clang_64 
      ..

此处最好使用 ccmake 修改一些配置,例如

  • Proj GDAL GEOS 三大库的包含目录和库文件使用 /opt/QGIS 下面的版本
  • HDF5 所需要的 libm libz libdl 都使用 mac 系统自带的版本
  • 关闭一些不需要的功能

然后就可以 make 编译了。理论上 make install 就可以了。

但是这里会遇到一个 @rpath 的问题,是 Mac 下特有的。以这种方式配置的 Qt 库,当 QGIS 在安装过程中拷贝 QCA 并更新库路径的时候,会遇到一个问题

dyld: Library not loaded: @rpath/QtCore.framework/Versions/5/QtCore
    Referenced from: /opt/QGIS/qgis-deps-0.5.4/stage/bin/qcatool-qt5
    Reason: image not found

这是由于 Qt 的动态库并没有放在系统路径中,导致 qcatool-qt5 没有动态库无法启动。解决方法参考

MAC:@rpath的坑​www.jianshu.com
b63d24c7218f3b525089455a4adecda7.png

即在命令行中运行

install_name_tool -add_rpath [Qt库的路径] /opt/QGIS/qgis-deps-0.5.4/stage/bin/qcatool-qt5

然后再 make install 即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值