QGIS1.7.1编译
(仅将此文献给喜欢调试QGIS的Giser)
编译qgis开始
参考文档:{
http://download.osgeo.org/qgis/doc/manual/qgis-1.6.0_coding-compilation_guide_en.pdf }
参考网址:{ http://www.qgis.org/wiki/Building_QGIS_from_Source }
编译环境:windowsxp,vs2008, Qt4.5.0
1. 下载软件;
下载Gnuw:安装到C:\GnuWin32
{
Microsoft Windows Server® 2003 R2 Platform SDK:http://download.microsoft.com/download/f/a/d/fad9efde-8627-4e7a-8812-c351ba099151/PSDK-x86.exe
Flex:http://gnuwin32.sourceforge.net/downlinks/flex.php
Bison:http://gnuwin32.sourceforge.net/downlinks/bison.php
注意:拷贝:GnuWin32/include/unistd.h到vs2008安装目录下../VC/include
}
下载安装OSGEO4W,安装到C:\OSGeo4W
{
OSGeo4W:http://download.osgeo.org/osgeo4w/osgeo4w-setup.exe
选择安装下面lib:
expat
fcgi
gdal17
grass
gsl-devel
iconv
pyqt4
qt4-devel
qwt5-devel-qt4
sip
}
下载安装Cmake;
{
CMake :http://www.cmake.org/files/v2.8/cmake-2.8.2-win32-x86.exe
}
下载安装Qt(qt-win-opensource-4.5.0-vs2008.exe)
2. 下载qgis代码;qgis1.6.0和qgis1.7.1已经编译通过:
http://qgis.org/downloads/qgis-1.6.0.tar.bz2
http://qgis.org/downloads/qgis-1.7.1.tar.bz2
3. 指向代码;如下设置
在源码文件夹建立Build文件夹
postgresql库文件指定osgeo4w中的lib下的libpq.lib文件
4. 处理一下:qgis1.6.0版本需要处理;
使用bison.exe 生成qgssearchstringparser.cpp 文件时会出错误,错误信息如下:
C:\GnuWin32\bin\bison.exe -oD:/QGIS1.6.0/Build/src/core/qgssearchstringparser.cpp -d -v -t D:/QGIS1.6.0/src/core/qgssearchstringparser.yy
if errorlevel 1 goto VCReportError
goto VCEnd
:VCReportError
echo Project : error PRJ0019: A tool returned an error code from "Generating qgssearchstringparser.cpp"
exit 1
因此,必须手工生成该文件,在dos环境下,进入bison.exe文件所在的目录,执行下述命令:
c:\>cd GnuWin32
c:\gnuwin32>cd bin
c:\gnuwin32\bin>bison.exe -o D:/QGIS1.6.0/Build/src/core/qgssearchstringparser.cpp -d -v -t D:/QGIS1.6.0/src/core/qgssearchstringparser.yy
这里D:/QGIS1.6.0指的是ggis源码所在的目录,D:/QGIS1.6.0/Build指的是cmake生成的vc工程文件所在的目录,上述命令表示用qgssearchstringparser.yy在vc工程文件所在的目录下生成qgssearchstringparser.cpp 文件。
对于qgis_core工程,需要手动生成qgssearchstringparser.cpp,方法如下
C:/GnuWin32/bin/bison.exe -oD:/QGIS1.6.0/Build/src/core/qgssearchstringparser.cpp -d -v -t D:/QGIS1.6.0/src/core/qgssearchstringparser.yy
对于qgis_analysis工程,需要手动生成qgsrastercalcparser.cpp,方法如下
C:/GnuWin32/bin/bison.exe -p raster -oD:/QGIS1.6.0/Build/src/analysis/qgsrastercalcparser.cpp -d -v -t D:/QGIS1.6.0/src/analysis/raster/qgsrastercalcparser.yy
编译qgis1.7.1版本不需要本步骤处理。
5. 启动编译,成功运行!只需要按下2个F7即可。(经过测试,qgis1.7.1版本为稳定版本,源码保重包含了CODING.pdf和INSTALL.pdf文件,对于qgis二次开发,可谓是绝佳宝典)
建议使用debug编译lib库,方便后面案例应用调试;(我曾经使用RelWithDebInfo格式的lib、dll出现了一个错误QWidget: Must construct a QApplication before a QPaintDevice,设定了debug编译,拷贝相应库到对应文件夹,问题解决)
6. 测试案例,参考链接6,里面包含设置与调试运行;
7. Enjoy it!
8. 可能出现的问题:
a) Python问题,建议选择osgeo4w中的python,不推荐使用arcgis等软件提供的python;
b) Qt安装之后,设置环境变量QTDIR并指向相应位置、并将其添加到path中(%QTDIR%;%QTDIR%\bin),添加GnuWin32到path中(C:\GnuWin32\bin;)等
c) 其他问题,诸如应用程序无法正常启动(0xc0150002) 的办法解决参考网上解决;
9. 参考连接
a) 参考编译:http://blog.sina.com.cn/s/blog_62cd89530100t9um.html
b) 参考编译:http://blog.csdn.net/ryanzll/article/details/6217142
c) 参考编译:http://www.cnblogs.com/ajeyone/archive/2011/05/12/2044680.html
d) 编译问题:http://lzchenheng.blog.163.com/blog/static/838335362011274940450/
e) 示范程序:http://download.csdn.net/detail/lzchenheng/3356813
f) QGIS二次开发介绍:
http://lzchenheng.blog.163.com/blog/static/838335362011214103147804/