QGIS编译问题纪实
QGIS3.28.14
问题1
2>Generating qgsexpression_texts.cpp
2>[FLEX][QgsExpressionLexer] Building scanner with flex 2.6.4
2>[BISON][QgsExpressionParser] Building parser with bison 3.0.4
2>/usr/bin/bison: /usr/share/bison/m4sugar/m4sugar.m4: cannot open: No such file or directory
2>G:\app\vs2017\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(209,5): error MSB6006: “cmd.exe”已退出,代码为 1。
2>已完成生成项目“qgis_core_autogen.vcxproj”的操作 - 失败。
解决:原因是没有安装完整的cygwin64,重新安装即可
问题2
再编译qgis时遇到 正在生成代码…
55> 正在创建库 G:/dev/qgis/3.28.14/code/build/src/core/RelWithDebInfo/qgis_core.lib 和对象 G:/dev/qgis/3.28.14/code/build/src/core/RelWithDebInfo/qgis_core.exp
55>libprotobuf-lite.lib(int128.cc.obj) : error LNK2001: 无法解析的外部符号 __CxxFrameHandler4
55>libprotobuf-lite.lib(stringprintf.cc.obj) : error LNK2001: 无法解析的外部符号 __CxxFrameHandler4
55>libprotobuf-lite.lib(io_win32.cc.obj) : error LNK2001: 无法解析的外部符号 __CxxFrameHandler4
55>libprotobuf-lite.lib(zero_copy_stream_impl_lite.cc.obj) : error LNK2001: 无法解析的外部符号 __CxxFrameHandler4
解决:是自己的编译器太老了,用的VS2017,后来换成了VS2022就好了。
问题3
CMake3.19版本不支持VS2022构建
解决:换为CMake3.26即可
问题4
使用CMake3.19可以正确找到gdal库,但是CMake3.31就不行
解决:使用CMake3.26,既可以找到gdal库也可以支持VS2022