zoukankan      html  css  js  c++  java
  • 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:很好很强大,虽然里面很多问题我都没遇到过,收藏了~
    编译参考文档:
  • 相关阅读:
    非凸优化的方法
    随机梯度下降与批量梯度下降
    python requests用于测试
    Vscode中运行js文件或部分代码 ,在下面cmd输出中显示结果
    ts问题处理(2): 'Promise' only refers to a type, but is being used as a value here.
    typeScript入门基础 (1)
    node启动服务报错Node.js Error: Cannot find module express
    能改变this各种情况下的总结,还有没有总结到的,请留言!!
    flutter安装与配置 v1.2.1版本
    vue项目webpack打包后有的文件big 问题
  • 原文地址:https://www.cnblogs.com/sier/p/5676419.html
Copyright © 2011-2022 走看看