Qgis+Cmake配置

2019-04-14 16:11发布

 2016.11开源平台Qgis项目配置手册     框架设计 一、环境需求        操作系统:Win7 64位操作系统        编译器:VS 2010        Qgis版本:QGIS-release-2_4版本源码        CMake版本:CMake2.8.12.2        Flexhttp://gnuwin32.sourceforge.net/downlinks/flex.php        Bisonhttp://gnuwin32.sourceforge.net/downlinks/bison.php 切记配置Bison的环境变量 D:GnuWin32GnuWin32in        OSGeo4W64位):        http://download.osgeo.org/osgeo4w/osgeo4w­setupx86_64.exe (注:以上程序安装目录不能包含中文及空格,具体请参考QGIS Win7 64位编译-记忆悔中行-博客.pdf 二、CMakeQGis项目配置 1、设置源代码路径为QGIS-release-2_4目录 2、设置生成文件路径为与QGIS-release-2_4同级的Build(自己创建)目录 3、点击Configure,选择VS2010 64位编译器,点击Finish 以下为重点内容,在CMake中配置各libinclude路径 1GEOS配置 2GDAL配置 3ExpatQWTSpatialindexSqlite3配置 4Qmake配置 5SetupAPI.lib配置(Windows系统文件 6Proj配置 7、其他勾选项配置如下,只保留三项     8、以上配置选项配置成功后,可生成VS2010的项目文件qgis2.4.0.sln及其他相关项目文件,具体如下图所示: 9、编译qgis2.4.0.sln项目还需要将之前安装的unistd.h头文件放在VS安装目录下 OSGeo4W64/include/spatialite.h 替换(可以先查看一下内容是否一致) OSGeo4W64/include/ spatialite/spatialite.h 10、编译时选择“RelWithDebInfo”模式 11、设置解决方案的启动项为qgis 12、从解决方案中卸载无用项目,只保留如下八个项目,结果如下图所示 gdalprovider ogrprovider qgis qgis_analysis qgis_core qgis_gui ui ZERO_CHECK 13、编译Qgis项目,生成qgis.exe可执行程序   14、如果出现错误: LINK: fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 按如下方式进行解决: 项目-->项目属性-->配置属性-->连接器-->清单文件-->嵌入清单 中的改为,不让他将清单嵌入,自然也用不着转换了,所以轻松编译。虽然麻烦点,每次新建项目都要设置,但是总比不能编译强吧。 但是这次,不可以了,因为我的程序要加写rc,必须带清单才能正常使用。所以这种治标不治本的方法失效了。 根据猜想,可能是因为系统最近多次更新,出现了两个版本的cvtres.exe。而系统变量里将这俩都引用了,编译的时候,不知道用哪个了,导致出错。 这就好办了,删掉一个呗。 一个在C:WindowsMicrosoft.NETFrameworkv4.0.30319cvtres.exe,另一个在你安装VS的软件目录..Microsoft Visual Studio 10.0vcincvtres.exe 然后右键属性-->详细信息 查看两者版本号,把老大的Kill掉,就完了。我的是在..Microsoft Visual Studio 10.0vcincvtres.exe 的为老版本的,删掉它一切都正常了。 15QGis编译之后,部分图标不显示的问题,相信很多同学在Windows下编译时都遇到过这个问题。 解决办法:http://blog.csdn.net/deirjie/article/details/50446033 事实上,这个是Qt的问题,不是QGis的问题,并不是Qt不支持”svg”的图片(QtDesigner能够显示就说明是支持的),而是运行的时候程序找不到正确支持图标格式的库文件。在这里,这个文件是”qsvg4.dll”,这个文件在Qt所在路径的”plugins/imageformats”文件夹下,将这个“qsvg4.dll”拷贝到与”qgis.exe”路径下就可以了。由于QGis版本和Qt版本的问题,有些同学可能将库文件拷过去还是不行,是因为程序没找到“imageformats”这个文件夹。这个时候,只需要将”imageformats”这个文件夹全部拷贝到”qgis.exe”路径下就可以了。   16编译Qgis项目,生成qgis.exe可执行程序,但是无法执行。 解决方法:将D:OSGeo4W64in下面.dll文件都拷贝到qgis.exe所在的文件夹下。