当前位置:   article > 正文

cmake开发环境 linux qt_QGIS二次开发笔记(4)——Linux和macOS环境配置

linux python qgis.core

最近折腾了一下 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 源码仓库里面

  1. mkdir BUILD
  2. cd BUILD
  3. cmake ..
  4. make -j8
  5. sudo make install

基本上无需其他操作。

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

Index of /qt/archive/online_installers/3.2/​mirrors.tuna.tsinghua.edu.cn
0da88e93c15dd72aa97d4c8860f69305.png

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

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

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

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

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

macOS

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

sudo xcode-select --install

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

Tsinghua Open Source Mirror​mirrors.tuna.tsinghua.edu.cn
0da88e93c15dd72aa97d4c8860f69305.png

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

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

  1. brew install git
  2. brew install cmake
  3. brew install ninja
  4. brew install pkg-config
  5. brew install wget
  6. brew install bash-completion
  7. brew install curl
  8. brew install gnu-sed
  9. brew install coreutils
  10. brew install ccache
  11. brew install libtool
  12. brew install astyle
  13. brew install help2man
  14. brew install autoconf
  15. brew install automake
  16. 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 配置并编译了

  1. QGIS_DEPS_VERSION=0.3.0;
  2. QT_VERSION=5.14.1;
  3. PATH=/opt/QGIS/qgis-deps-${QGIS_DEPS_VERSION}/stage/bin:$PATH;
  4. cmake
  5. -DCMAKE_INSTALL_PREFIX=~/Applications
  6. -DCMAKE_BUILD_TYPE=Release
  7. -DQGIS_MAC_DEPS_DIR=/opt/QGIS/qgis-deps-${QGIS_DEPS_VERSION}/stage
  8. -DCMAKE_PREFIX_PATH=/opt/Qt/${QT_VERSION}/clang_64
  9. ..

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

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

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

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

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

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

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

即在命令行中运行

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

然后再 make install 即可。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/117532
推荐阅读
相关标签
  

闽ICP备14008679号