Win7下VS2008调试qgis1.7.0

各种纠结之后发现,Win7下调试qgis1.7.0是一个概率性问题。不同的人会遇见不同的错误,估计是编译环境的不同或者blabla一系列我也说不明白的问题。谨在此将自己遇到的和网上查到的总结一下。
    先说说自己的吧:
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.
    问题的解决很是偶然,当时已经纠结于这个整整一天不得其所以然,在VS2008下打开别的项目都挺好的,不知道这个问题是怎么跑出来的。后来百度谷歌各大论坛,试了很多方法未果,终于在某国外论坛的一个小角落里发现这么一段话:
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
    莫非是Cmake版本不同引起的问题?我的是2.8.4版本,但CMAKE_MAKE_PROGRAM变量的值却是devenv.com,试了下改成VCExpress.exe,果然就没有这个问题了~
3、configure时找不到GRASS路径
    解决方式很野蛮,可能会影响GRASS功能的应用,切勿参考,在这里仅仅是记录一下。
CMakeLists.txt中line51改为SET (WITH_GRASS FALSE CACHE BOOL "Determines whether GRASS plugin should be built")

    接下来直接编译ALL_BUILD就没什么问题了,至于网上出现的多问题我都没有遇到过,至今也迷茫中。不过未雨绸缪一下,贴上来各位大牛的解决方案~

4、Flex 和 Bison
    这两个工具在安装时,安装目录不要有空格,否则在编译QGIS时找不到这两个文件。
5、编译报错:Project : error PRJ0019: A tool returned an error code from "Generating qgssearchstringparser.cpp"
    手工执行C:/GnuWin32/bin/bison.exe -oD:/QGis170/src/core/qgssearchstringparser.cpp -d -v -t D:/QGis170/src/core/qgssearchstringparser.yy
C:/GnuWin32/bin/bison.exe -p raster -oD:/QGis170/src/analysis/qgsrastercalcparser.cpp -d -v -t D:/QGis170/src/analysis/raster/qgsrastercalcparser.yy
6、环境变量
    设置环境变量M4,M4是Bison中一个可执行程序,如不设置需要手动执行Bison:M4=C:\GnuWin32\bin\m4.exe;设置一个环境变量PYTHONHOME,PYTHONHOME指定了Python的安装路径,如不设置有几个项目无法编译通过,提示找不到Python的库:PYTHONHOME=C:\OSGeo4W\apps\Python25。
7、编译选项
    修改编译设置为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文件,比较简洁~
此时还有问题,qgis.exe可以运行但是打不开栅格矢量文件,难道是因为我把GRASS编译禁止了么,555,有待继续研究啊~~

    千万要注意的问题:安装OSGeo4W时选择的是高级安装,我图省事直接把所有的库都装了,后来运行qgis.exe时提示缺少ippj-3.5.dll,四处找不到答案,在网上下载dll时又顺便带了病毒,啊啊,我这个纠结。后来发现不能太省事,安装OSGeo4W,lib中的gdal-dev下,选择libjpeg的同时不能选择libjpeg-ipp。切记切记~

参考文档1:很好很强大,虽然里面很多问题我都没遇到过,收藏了~
编译参考文档:

posted on 2012-08-21 11:48  四-儿  阅读(463)  评论(0编辑  收藏  举报

导航