使用CMake 配置 Windows QGIS开发环境笔记
使用CMake 配置 Windows QGIS开发环境
因为要项目协作想着用CMake组织一下吧这样分发源码就很方便了,然后开启了我痛苦的三天…在Windows上配置开发环境实在太痛苦了😭
省流–如何使用OSGeo4W快速在Windows上配置开发环境
- 下载OSGeo4W
- 在OSGeo4W中下载QGIS(QGIS还有dev,ltr-dev等版本可自由选择)以及Qt开发工具qt5-devel,qt5-libs,qt5-tools,qt5-libs-symbols
- 打开系统环境变量配置:
- OSGEO4W_ROOT=C:\OSGeo4W
- Qt5_DIR=$OSGEO4W_ROOT$\apps\Qt5
- 在系统环境变量PATH中添加配置:
- $Qt5_DIR$\bin
- $OSGEO4W_ROOT$\bin
- $OSGEO4W_ROOT$\apps\qgis\bin 类似的一些库如gdal-dev等也需要如此配置。
- 找到QGIS下的FindQGIS.cmake文件,将其添加到当前的CMAKE_MODULE_PATH中。
- 将OSGEO4W_ROOT\bin下的文件复制到\OSGEO4W_ROOT\apps\qgis\bin中(建议先备份bin)。
- 使用MSVC构建CMakeLists
如果想启用编译器的编译提示,可以把对应的头文件加载到IDE的搜索路径中(如VScode就是C/C++ Extension的include dir)
排坑–CMake环境相关问题杂谈
你说的对但是Windows绝不会让你就此结束…以下是一些遇到的坑(和遗留问题)
- 使用MSVC进行编译! 由于OSGeo4W的QGIS等库是MSVC编译的,无法使用MinGW64链接MSVC编译的库。(
微软资本你赢了) - 检查环境路径的优先级 检查Path中同一软件的环境优先级,提高新填写的环境变量的优先级,否则可能会找到老的依赖。
- 记得清理CMake构建目录缓存的Qt缓存 这东西普遍比较玄学,没有头绪可以试一试,以及在CMakeLists有重大改动后要注意。
- Q: 提示找不到qt5-qca.dll/qt5-webkit.dll/qt5-keychain等错误如何解决 这个问题的来源是Qt依赖的更新。在qt5.6之后的版本默认不包含这些库,因此大家使用的qt5.15.2等版本是默认不包含这些库的,因此需要配置PATH能够找到OSGeo4W下的qt5
- Q: 提示entry point not found XX in qgis_core.dll如何解决 这个问题到根源在于如OSGeo4W使用的部分库与其他软件使用的库版本不兼容,如JAVA默认的zip库就无法在OSGeo4W的qgiscore中使用,因此需要提高OSGeo4W中库的优先级。当然这可能导致其他软件的环境出错,为什么要把OSGEO4W_ROOT\bin复制到qgis\bin下。(或者一些土方法是把对应的dll移到当前文件目录下)
- Q: QGIS提示Application PATH not found如何解决 在使用QgsApplication等函数前记得配置prefix,详见文档。
- Q: 我可以使用qt6构建QGIS项目吗? 答案是非常困难四舍五入不可以,因为这(尤其是对于Windows)意味着要把QGIS从源码重新编译一遍。当然通过QGIS的GitHub仓库下的install的提示是可以做到的(笔者在Debian上尝试过,Debian的qt包比较老各种不兼容非常抽象),但这需要花费很大精力并且要处理qt5到qt6的webengine兼容问题。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment