Win7下VS2008调试qgis1.7.0
各种纠结之后发现,Win7下调试qgis1.7.0是一个概率性问题。不同的人会遇见不同的错误,估计是编译环境的不同或者blabla一系列我也说不明白的问题。谨在此将自己遇到的和网上查到的总结一下。
先说说自己的吧:
后来才发现命令行批处理是一个多么神奇的东西,运行一下就把所有环境都设置好了,省得我再一个一个路径跑来跑去设置一堆变量。恩,打算把以前的很多环境配置都写成这样的。。。
问题的解决很是偶然,当时已经纠结于这个整整一天不得其所以然,在VS2008下打开别的项目都挺好的,不知道这个问题是怎么跑出来的。后来百度谷歌各大论坛,试了很多方法未果,终于在某国外论坛的一个小角落里发现这么一段话:
莫非是Cmake版本不同引起的问题?我的是2.8.4版本,但CMAKE_MAKE_PROGRAM变量的值却是devenv.com,试了下改成VCExpress.exe,果然就没有这个问题了~
解决方式很野蛮,可能会影响GRASS功能的应用,切勿参考,在这里仅仅是记录一下。
接下来直接编译ALL_BUILD就没什么问题了,至于网上出现的多问题我都没有遇到过,至今也迷茫中。不过未雨绸缪一下,贴上来各位大牛的解决方案~
这两个工具在安装时,安装目录不要有空格,否则在编译QGIS时找不到这两个文件。
手工执行C:/GnuWin32/bin/bison.exe -oD:/QGis170/src/core/qgssearchstringparser.cpp -d -v -t D:/QGis170/src/core/qgssearchstringparser.yy
设置环境变量M4,M4是Bison中一个可执行程序,如不设置需要手动执行Bison:M4=C:\GnuWin32\bin\m4.exe;设置一个环境变量PYTHONHOME,PYTHONHOME指定了Python的安装路径,如不设置有几个项目无法编译通过,提示找不到Python的库:PYTHONHOME=C:\OSGeo4W\apps\Python25。
修改编译设置为RelWithDebInfo,这是因为1.安装的OSGeo4W都是release版的;2. 而为了调试qgis,又需要debug信息。
最后直接运行\src\app\RelWithDebInfo下的qgis.exe显然不可以,所以我把C:\OSGeo4W\bin里面除了文件夹和exe之外的一系列dll都拷贝到RelWithDebInfo中,另外新建一个plugins文件夹,搜索\src\plugins中所有的dll、lib和pdb,拷贝到plugins中。当然也可以参照参考文档1中的方法自己建立一个bat文件,比较简洁~
千万要注意的问题:安装OSGeo4W时选择的是高级安装,我图省事直接把所有的库都装了,后来运行qgis.exe时提示缺少ippj-3.5.dll,四处找不到答案,在网上下载dll时又顺便带了病毒,啊啊,我这个纠结。后来发现不能太省事,安装OSGeo4W,lib中的gdal-dev下,选择libjpeg的同时不能选择libjpeg-ipp。切记切记~
1、qgis.bat
这个批处理文件的内容还是很值得研究一下,我的范本是:
@echo off
path %SYSTEMROOT%\system32;%SYSTEMROOT%;%SYSTEMROOT%\System32\Wbem;C:\Progra~2\CMake 2.8\bin;C:\Progra~2\subversion\bin;C:\GnuWin32\bin
set PYTHONPATH=
set VS90COMNTOOLS=D:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\
call "D:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86
set INCLUDE=%INCLUDE%;C:\Progra~1\Microsoft SDKs\Windows\v6.0A\Include
set LIB=%LIB%;C:\Progra~1\Microsoft SDKs\Windows\v6.0A\lib
set OSGEO4W_ROOT=C:\OSGeo4W
call "%OSGEO4W_ROOT%\bin\o4w_env.bat"
@set GRASS_PREFIX=C:\OSGeo4W\apps\grass\grass-6.4.0
@set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%\include
@set LIB=%LIB%;%OSGEO4W_ROOT%\lib;%OSGEO4W_ROOT%\lib
@cmd
2、configure时出现The C compiler "C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin/cl.exe" is not able to compile a simple test program.
OK, so for 2.6, you are getting this: C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.com For 2.8 you are getting this: C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\VCExpress.exe |
3、configure时找不到GRASS路径
CMakeLists.txt中line51改为SET (WITH_GRASS FALSE CACHE BOOL "Determines whether GRASS plugin should be built")
4、Flex 和 Bison
5、编译报错:Project : error PRJ0019: A tool returned an error code from "Generating qgssearchstringparser.cpp"
C:/GnuWin32/bin/bison.exe -p raster -oD:/QGis170/src/analysis/qgsrastercalcparser.cpp -d -v -t D:/QGis170/src/analysis/raster/qgsrastercalcparser.yy
6、环境变量
7、编译选项
此时还有问题,qgis.exe可以运行但是打不开栅格矢量文件,难道是因为我把GRASS编译禁止了么,555,有待继续研究啊~~
参考文档1:很好很强大,虽然里面很多问题我都没遇到过,收藏了~
编译参考文档: