winodws上使用vs2008编译QGis-1.6.0

    技术2022-05-20  28

    QGIS不断推陈出新,1.6早已是过去式,目前正在开发1.7. 在1.6的版本中有一个亮点(没有仔细调研,是1.5中还是1.6中添加的),就是对wfs-t的支持。如果你恰好通过QGIS访问了GeoServer的wfs,那么你可以试试修改(添加、删除、锁定等等)GeoServer发布的矢量图层。我也是出于了解QGIS如何通过wfs-t修改wfs的矢量图层的考虑,下载了1.6版本的QGIS,忙活了半天,老天有眼让我折腾出来了。总的来说,与1.4相比,按照官方的编译说明文档编译过程更加简单了,但终究还有一些地方没有覆盖到,要让人摸索很久。

     

    参考资料

    官方编译指南:http://www.qgis.org/wiki/Building_QGIS_from_Source

     

    软硬件环境

    1. 联想台式机

    2. winxp

    3. vs2008专业版

     

    编译步骤

    1.安装相关软件

    官方指南中提到的软件基本上都(svn无所谓的)需要安装,具体如下:

    Microsoft Windows Server® 2003 R2 Platform SDK:http://download.microsoft.com/download/f/a/d/fad9efde-8627-4e7a-8812-c351ba099151/PSDK-x86.exe

    CMake :http://www.cmake.org/files/v2.8/cmake-2.8.2-win32-x86.exe

    Flex:http://gnuwin32.sourceforge.net/downlinks/flex.php

    Bison:http://gnuwin32.sourceforge.net/downlinks/bison.php

    OSGeo4W:http://download.osgeo.org/osgeo4w/osgeo4w-setup.exe

     

    1.1) OSGeo4W的安装, 请选择安装下列的lib

    expat

    fcgi

    gdal17

           grass

           gsl-devel

           iconv

           pyqt4

           qt4-devel

           qwt5-devel-qt4

           sip

     

    1.2) 拷贝../GnuWin32/include/unistd.h到vs2008安装目录下../VC/include

     

     

    2. 设置VS参数

    新建bat文件,并添加如下命令

    @echo offpath %SYSTEMROOT%/system32;%SYSTEMROOT%;%SYSTEMROOT%/System32/Wbem;%PROGRAMFILES%/CMake 2.8/bin;%PROGRAMFILES%/subversion/bin;%PROGRAMFILES%/GnuWin32/binset PYTHONPATH=set VS90COMNTOOLS=%PROGRAMFILES%/Microsoft Visual Studio 9.0/Common7/Tools/call "%PROGRAMFILES%/Microsoft Visual Studio 9.0/VC/vcvarsall.bat" x86set INCLUDE=%INCLUDE%;%PROGRAMFILES%/Microsoft Platform SDK for Windows Server 2003 R2/includeset LIB=%LIB%;%PROGRAMFILES%/Microsoft Platform SDK for Windows Server 2003 R2/libset OSGEO4W_ROOT=C:/OSGeo4Wcall "%OSGEO4W_ROOT%/bin/o4w_env.bat"@set GRASS_PREFIX=c:/OSGeo4W/apps/grass/grass-6.4.0@set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%/apps/gdal-17/include;%OSGEO4W_ROOT%/include@set LIB=%LIB%;%OSGEO4W_ROOT%/apps/gdal-17/lib;%OSGEO4W_ROOT%/lib@cmd

    3. 下载QGIS源代码

    http://qgis.org/downloads/qgis-1.6.0.tar.bz2

    或者通过svn,地址如下(参考自http://www.qgis.org/wiki/Download#Source_Code)

    https://svn.osgeo.org/qgis/branches/Release-1_6_0

     

     

    4.CMake生成vs工程文件

    这一步很关键,设置不对后面会出很多问题

    我的设置如下 

    或者你可以查看cmake的缓存文件

    http://blog.csdn.net/ryanzll/archive/2011/03/02/6217209.aspx

     

    需要注意的是

    1.XXX_LIBRARY或者XXX_LIB:要求的是一个具体的lib文件,而非文件夹。

    2.XXX_LIBRARY_DIR:这里才是要求的一个lib文件夹。

    3.SETUPAPI_LIBRARY:指的是Microsoft Windows Server® 2003 R2 Platform SDK中的setupapi.lib, 即C:/Program Files/Microsoft Platform SDK for Windows Server 2003 R2/Lib/SetupAPI.Lib

    4.这里为了configure通过,我只勾选了WITH_INTERNAL_SPATIALITE(最快,最简单)。如果要编译其他的,不在本文叙述范围之内,请自行研究。:(

     

    跟着,就点按钮configure,如果configuring done并且没有错误和警告,就点按钮Generate生成vs2008工程文件。

     

     

    5.用vs2008打开工程文件并编译。

    打开QGIS1.6.0.sln,修改编译设置为RelWithDebInfo,这是因为

    1.安装的OSGeo4W都是release版的;

    2. 而为了调试qgis,又需要debug信息。

     

    选择ALL_BUILD,右键生成即可。这当中有两个地方要注意

    1. 对于qgis_core工程,需要手动生成qgssearchstringparser.cpp,方法如下

    C:/GnuWin32/bin/bison.exe -oD:/QGIS1.6/Build/src/core/qgssearchstringparser.cpp -d -v -t D:/QGIS1.6/src/core/qgssearchstringparser.yy

    2. 对于qgis_analysis工程,需要手动生成qgsrastercalcparser.cpp,方法如下

    C:/GnuWin32/bin/bison.exe -p raster -oD:/QGIS1.6/Build/src/analysis/qgsrastercalcparser.cpp -d -v -t D:/QGIS1.6/src/analysis/raster/qgsrastercalcparser.yy

    注意哦,上面两个命令,有一点点差别,就是第二个命令多了“-p raster”这样的参数,如果不添加这样的参数,也会导致后面的编译错误哦(经验之谈啊,汗。。。。。。)。

     

     

    6.到这里,编译工作该成功了。下面就是拷贝相应dll,pdb等等到qgis.exe的同级目录了。为啥?你懂的。

     

     

    最后,编译好的qgis1.6的压缩包链接如下:

    http://dl.dbank.com/c03a0bffu8


    最新回复(0)