QGIS2.3+VS2008+Win7编译(更新2014-5-5)

QGIS2.3.0官方推荐采用VS2008进行编译,GUI使用Qt4.7.1-VS2008,脚本使用Python2.7.4。QGIS 插件包括CPP插件和Python插件两种,使用Qt4加载CPP插件,使用Python2加载Python插件,有些Python插件(例如processing插件)依赖于PyQt4,PyQt4依赖于Qt4-VS2008。QGIS的有些依赖库(例如Qwt5)依赖于Qt4-VS2008。

 

1、安装CMake 2.8

(1)下载地址:http://www.cmake.org/

(2)安装路径:自定义,例如:C:\GNU\CMake2.8

 

2、安装GNUWin32 flex 2.5和bison 2.4

(1)下载地址:http://gnuwin32.sourceforge.net/packages/flex.htm和.../bison.htm

(2)安装路径:自定义,例如:C:\GNU\GnuWin32

说明:Flex/Bison常用安装程序有两种:GnuWin32 Flex 2.5/Bison 2.4和Win flex-bison 2.5 (http://sourceforge.net/projects/winflexbison/),推荐安装GnuWin32Flex 2.5/Bison 2.4。

 

3、下载QGIS 2.3源代码

(1)下载地址:https://github.com/qgis/QGIS

(2)解压路径:自定义,例如:C:\qgis230-source\QGIS-master

说明:源代码压缩包中提供了安装说明(QGIS-master\doc\INSTALL.html)。

 

4、通过OSGeo4W Installer 32bit安装QGIS 2.3依赖库

(1)下载地址:https://trac.osgeo.org/osgeo4w/

(2)运行OSGeo4W,选择Advanced Install -> Install from Internet or Install from LocalDirectory –> Root Directory (Default: C:\OSGeo4W) -> Select Packages:qgis-full-dev。

(3)缺省QGIS 2.3开发包(qgis-full-dev)未安装Qwt5开发包(Qwt5-devel-qt4)和Spatialindex开发包(libspatialindex-devel),需要单独安装这两个开发包。

说明:QGIS依赖库头文件位于C:\OSGeo4W\include路径下,静态库文件位于C:\OSGeo4W\lib路径下,qmake.exe等工具位于C:\OSGeo4W\bin路径下,外部可执行程序包位于C:\OSGeo4W\apps路径下。

 

5、设置环境变量

(1)打开系统命令提示符,在控制台模式下设置环境变量中

(2)调用OSGeo4W\bin\o4w_env.bat批处理文件,将自动递归调用OSGeo4W \etc\ini\*.bat批处理文件,设置OSGeo4W运行环境变量,例如:

call "C:\OSGeo4W\bin\o4w_env.bat"

其中用于CMake生成VS解决方案的变量包括:

OSGEO4W_ROOT=C:\OSGeo4W

PATH=%OSGEO4W_ROOT%\bin;%PATH%

PYTHONHOME=%OSGEO4W_ROOT%\apps\Python27

PATH=%OSGEO4W_ROOT%\apps\Python27\Scripts;%PATH%

说明:CMake使用PYTHONHOME查找SIP包所在路径。

(3)在环境变量INCLUDE和LIB中添加OSGeo4W依赖库头文件和静态库文件所在路径,或者在环境变量PATH中添加依赖库头文件和库文件所在路径。例如:

set INCLUDE=%OSGEO4W_ROOT%\include;%INCLUDE%

set LIB=%OSGEO4W_ROOT%\lib;%LIB%

(4)定义GRASS_PREFIX,例如:

setGRASS_PREFIX=c:/OSGeo4W/apps/grass/grass-6.4.3

注意:在GRASS_PREFIX路径中不要使用’\’代替’/’,否则CMake将产生错误。

(5)在环境变量PATH中添加添加GNUWin32 Flex/Bison可执行文件所在路径,例如;

set C:\GNU\GnuWin32\bin

(6)在环境变量PATH中添加CMake可执行文件所在路径,例如:

C:\GNU\CMake2.8\bin

(7)调用VS2008的\VC\vcvarsall.bat批处理文件,将自动递归调用VC\bin\vcvars32.bat和%VS90COMNTOOLS%vsvars32.bat批处理文件,例如:

call "C:\Program Files\MicrosoftVisual Studio 9.0\VC\vcvarsall.bat" x86 或

call "C:\Program Files (x86)\MicrosoftVisual Studio 9.0\VC\vcvarsall.bat" x86

其中用于CMake生成VS解决方案的变量包括:

VS90COMNTOOLS =C:\Program Files\MicrosoftVisual Studio 9.0\Common7\Tools\或

VS90COMNTOOLS =C:\Program Files (x86)\MicrosoftVisual Studio 9.0\Common7\Tools\

LIB=”C:\Program Files\MicrosoftSDKs\Windows\v7.0A\Lib; %LIB%;”或

LIB=”C:\Program Files (x86)\MicrosoftSDKs\Windows\v7.0A\Lib; %LIB%;”

说明:CMake需要在环境变量PATH或LIB中查找Microsoft SDKs 的SetupAPI.Lib,找到后定义SETUPAPI_LIBRARY变量。

 

特别注意:系统环境变量PATH中路径之间分号的前后不要加空格,否则CMake解析路径时出现错误。

 

6、复制GNUWin32 Flex/Bison的unistd.h头文件

QGIS编译时需要GNUWin32Flex/Bison的unistd.h头文件,将GnuWin32\include\unistd.h头文件复制到VC\include路径下,例如:C:\ProgramFiles\Microsoft Visual Studio 9.0\VC\include或C:\Program Files(x86) \Microsoft Visual Studio 9.0\VC\include。

说明:在环境变量INCLUDE或PATH中添加GNUWin32 Flex/Bison的unistd.h头文件所在路径,VS2008编译时仍然找不到unistd.h,因此必须复制该文件。

 

7、生成QGIS 2.3.0解决方案

(1)开cmake-gui应用程序;

(2)在where is the source code中输入源代码根路径,例如:D:/dev_qgis/qgis230-source/QGIS-master;

(3)在where to build the binaries中输入编译根路径,例如:D:/dev_qgis/qgis-source230/build;

(4)选中Grouped复选框,按分组显示列表,使用默认选项。

(5)点击Configure按钮,选择Visual Studio 10,应该顺利通过;

(6)点击Generate按钮,生成qgis2.3.0.sln解决方案。

说明:可以采用基本编译选项,打开With组,仅选中WITH_DESKTOP, WITH_INTERNAL_HTTPLIB, WITH_INTERNAL_QEXTSERIALPORT,WITH_ INTERNAL_QWTPOLAR。

 

8、编译QGIS 2.3.0解决方案

(1)通过VS2008打开qgis2.3.0.sln解决方案

(2)将解决方案配置由Debug改为RelWithDebInfo (Release with Debug Info)

(3)编译默认解决方案

说明:由于OSGeo4W仅提供了release依赖库,RelWithDebInfo配置使用release依赖库,还保留了调试信息,可以调试QGIS,推荐采用该配置。

 

 

问题1:CMake生成QGIS解决方案时,找不到flex

分析原因:在QGIS-master\CMakeLists.txt中通过 INCLUDE(Flex)调用QGIS-master\cmake\ Flex.cmake 模块,在 Flex.cmake 中通过FIND_PROGRAM命令查找flex.exe可执行文件所在目录:

   FIND_PROGRAM(FLEX_EXECUTABLE

        NAMES flex.exe

        PATHS$ENV{LIB_DIR}/bin c:/cygwin/bin $ENV{PROGRAMFILES}/GnuWin32/bin)

由于未在环境变量PATH指定flex所在路径,所以找不到flex。

解决方法:在环境变量PATH添加flex所在路径,例如:

set PATH=C:\GNU\GnuWin32\bin;%PATH%

 

问题2:CMake生成QGIS解决方案时,找不到bison

分析原因:在QGIS-master\CMakeLists.txt中,过 INCLUDE(Bison)调用QGIS-master\cmake\ Bison.cmake模块,在Bison.cmake中通过FIND_PROGRAM命令查找bison.exe可执行文件所在目录:

 FIND_PROGRAM(BISON_EXECUTABLE PATHS

     NAMES bison.exe

     PATHS $ENV{LIB_DIR}/bin c:/cygwin/bin $ENV{PROGRAMFILES}/GnuWin32/bin

由于未在环境变量PATH指定bison所在路径,所以找不到bison。

解决方法:在环境变量PATH添加bison所在路径,例如:

set PATH=C:\GNU\GnuWin32\bin;%PATH%

 

问题3:CMake生成QGIS解决方案时,未定义GEOS_INCLUDE_DIR和GEOS_LIBRARY

分析原因:在QGIS-master\CMakeLists.txt中通过FIND_PACKAGE(GEOS)调用QGIS-master \cmake\ FindGEOS.cmake模块,在FindGEOS.cmake中通过FIND_PATH命令查找GEOS头文件,通过和FIND_LIBRARY命令查找GEOS库文件:

  IF(MSVC)

   FIND_PATH(GEOS_INCLUDE_DIR geos_c.h $ENV{LIB_DIR}/include $ENV{INCLUDE})

   FIND_LIBRARY(GEOS_LIBRARY NAMES geos geos_c_i geos_c PATHS

     "$ENV{LIB_DIR}/lib"

     $ENV{LIB})

 ENDIF (MSVC)

遍历CMake缺省路径和PATHS指定路径,并将结果保存到GEOS_INCLUDE_DIR和GEOS_LIBRARY中。

由于未在环境变量PATH中添加依赖库头文件和库文件所在路径,导致找不到GEOS库。

解决方法1:在环境变量INCLUDE和LIB中添加OSGeo4W依赖库所在路径,例如:

set OSGEO4W_ROOT=C:\OSGeo4W

setINCLUDE=%OSGEO4W_ROOT%\include;%INCLUDE%

set LIB=%OSGEO4W_ROOT%\lib;%LIB%

解决方法2:在环境变量PATH中添加OSGeo4W依赖库所在路径,例如:

set PATH=%OSGEO4W_ROOT%\include;%PATH%

set PATH=%OSGEO4W_ROOT%\lib;%PATH%

 

问题4:CMake生成QGIS解决方案时,找不到PYTHON_EXECUTABLE

分析原因:在QGIS-master\CMakeLists.txt中通过FIND_PACKAGE(PythonInterpREQUIRED)调用CMake的FindPythonInterp.cmake模块,在FindPythonInterp.cmake中通过find_program命令查找Python可执行文件:

find_program(PYTHON_EXECUTABLE NAMES${_Python_NAMES})

解决方法:在环境变量PATH添加python.exe所在路径,例如:

set PATH=%OSGEO4W_ROOT%\bin;%PATH%

注意:当系统中安装了两个版本Python时,假设由OSGeo4W安装了Python2.7.4,由其他程序安装了Python 2.7.2,若环境变量PATH中设置了Python 2.7.2安装路径,可能导致异常问题。建议:从环境变量PATH中删除其他版本Python所在路径,例如:C:\Python27\; C:\Python27\Scripts。

 

问题5:CMake生成QGIS解决方案时,找不到SIP

分析原因:在QGIS-master\CMakeLists.txt中,如果定义了WITH_BINDINGS,将通过FIND_PACKAGE(SIPREQUIRED)命令调用QGIS-master\cmake\ FindSIP.cmake模块,该模块通过EXECUTE_PROCESS(COMMAND${PYTHON_EXECUTABLE} ${_find_sip_py} OUTPUT_VARIABLE sip_config)命令调用python.exe来运行QGIS-master\cmake\FindSIP.py,在FindSIP.py中需要导入sipconfig包,查找sipconfig包时需要使用PYTHONHOME变量,由于未定义该变量而导致找不到SIP。

解决方法:定义环境变量PYTHONHOME,例如:

set PYTHONHOME=%OSGEO4W_ROOT%\apps\Python27

注意:不需要在环境变量PATH中添加Python安装路径。

 

问题6:CMake生成QGIS解决方案时,未定义QWT_INCLUDE_DIR和QWT_LIBRARY

分析原因:QGIS-master\CMakeLists.txt中通过FIND_PACKAGE(QwtREQUIRED) 加载并运行QGIS-master\cmake\ FindQwt.cmake模块,在FindQwt.cmake中通过FIND_PATH命令查找Qwt头文件,通过FIND_LIBRARY命令查找库文件:

   FIND_PATH(QWT_INCLUDE_DIR NAMES qwt.h PATHS

       /usr/include

       /usr/local/include

       "$ENV{LIB_DIR}/include"

       "$ENV{INCLUDE}"

       PATH_SUFFIXES qwt-qt4 qwt qwt5 qwt6)

   FIND_LIBRARY(QWT_LIBRARY NAMES qwt qwt5 qwt6 qwt-qt4 qwt5-qt4 PATHS

       /usr/lib

       /usr/local/lib

       "$ENV{LIB_DIR}/lib"

       "$ENV{LIB}" )

遍历CMake缺省路径和PATHS指定路径,并将结果保存到QWT_INCLUDE_DIR和QWT_LIBRARY中。

解决方法1:确保安装了Qwt开发包。

解决方法2:在环境变量INCLUDE和LIB中添加Qwt的头文件和库文件所在路径。

 

问题7:CMake生成QGIS解决方案时,未定义SPATIALINDEX_INCLUDE_DIR和SPATIALINDEX_LIBRARY

分析原因:QGIS-master\src\core\CMakeLists.txt中通过FIND_PACKAGE(SpatialindexREQUIRED)调用FindSpatialindex.cmake模块,在FindSpatialindex.cmake中通过FIND_LIBRARY查找Spatialindex库文件:

FIND_LIBRARY(SPATIALINDEX_LIBRARY NAMES spatialindex_i spatialindexPATHS

  /usr/lib

       /usr/local/lib

 "$ENV{LIB_DIR}/lib"

  "$ENV{LIB}/lib"

 "$ENV{OSGEO4W_ROOT}/lib")

编译64位QGIS时,使用了spatialindex-64.lib库,因此找不到spatialindex-64.lib库。

解决方法1:确保安装了Spatialindex开发包。

解决方法2:在环境变量INCLUDE和LIB中添加Spatialindex的头文件和库文件所在路径。

解决方法3:在CMake_gui中手工添加spatialindex-64.lib所在路径。

 

问题8:CMake生成QGIS解决方案时,找不到Qt4

分析原因:在QGIS-master\src\core\CMakeLists.txt中通过FIND_PACKAGE(Qt4${QT_MIN_VERSION} REQUIRED)调用CMake安装路径\share\cmake-2.8\Modules\FindQt.cmake模块,查找Qt 4.7.x以上版本,由于未在环境变量PATH中设置C:\GNU\OSGeo4W\bin路径,找不到qmake.exe,最终导致找不到Qt4。

解决方法:在环境变量PATH中添加OSGeo4W的可执行程序所在路径(bin)。

 

问题9:CMake生成QGIS解决方案时,未定义SETUPAPI_LIBRARY

分析原因:在QGIS-master\src\core\CMakeLists.txt中通过FIND_LIBRARY(SETUPAPI_LIBRARYNAMES setupapi PATHS $ENV{LIB})查找setupapi库文件。由于未在环境变量PATH中添加Microsoft SDKs库文件所在路径,导致找不到SetupAPI.Lib。

解决方法1:在环境变量LIB或PATH中添加SetupAPI.Lib所在路径,例如:

set PATH= “C:\Program Files\MicrosoftSDKs\Windows\v7.0A\Lib;%PATH%” 或

set PATH= “C:\Program Files (x86)\MicrosoftSDKs\Windows\v7.0A\Lib;%PATH%” 或

解决方法2:调用VC变量定义批处理文件,例如:

call "C:\Program Files\MicrosoftVisual Studio 10.0\VC\vcvarsall.bat" x86 或

call "C:\Program Files (x86)\MicrosoftVisual Studio 10.0\VC\vcvarsall.bat" x86

 

问题10:CMake生成QGIS解决方案时,定义了GRASS_PREFIX,FindGRASS.cmake错误

分析原因:QGIS-master\CMakeLists.txt中通过FIND_PACKAGE(GRASS)加载并运行QGIS-master\cmake\ FindGRASS.cmake模块,在FindGRASS.cmake中通过FIND_PATH命令查找GRASS头文件:

SET (GRASS_PATHS ${GRASS_PREFIX}/usr/lib/grass /usr/lib64/grass64 /usr/lib/grass64 c:/msys/local /opt/grass$ENV{GRASS_PREFIX})

IF (WITH_GRASS)

 FOREACH (G_PREFIX ${GRASS_PATHS})

   IF (NOT GRASS_FOUND)

     CHECK_GRASS(${G_PREFIX})

   ENDIF (NOT GRASS_FOUND)

 ENDFOREACH (G_PREFIX)

ENDIF (WITH_GRASS)

 MACRO (CHECK_GRASS G_PREFIX)

 FIND_PATH (GRASS_INCLUDE_DIR grass/version.h ${G_PREFIX}/include)

ENDMACRO (CHECK_GRASS)

遍历GRASS_PATHS指定路径,并将结果保存到GRASS_INCLUDE_DIR中。

由于GRASS_PREFIX路径中包含’/’,导致CMake出现错误。

解决方法1:确保安装了GRASS开发包。

解决方法2:将GRASS_PREFIX中’\’手工替换为‘/’。

 

问题11:CMake生成QGIS解决方案时,安装了Win flex-bison,找不到flex路径

分析原因:在QGIS-master\CMakeLists.txt中通过 INCLUDE(Flex)调用QGIS-master\cmake\ Flex.cmake 模块,在 Flex.cmake 中通过FIND_PROGRAM命令查找flex.exe可执行文件所在目录:

   FIND_PROGRAM(FLEX_EXECUTABLE

        NAMES flex.exe

        PATHS$ENV{LIB_DIR}/bin c:/cygwin/bin $ENV{PROGRAMFILES}/GnuWin32/bin)

由于win_flex_bison-2.5.1使用了win_flex.exe文件名,导致无法找到flex.exe所在路径。

解决方法:建议在CMake_gui中手工添加win_flex.exe所在路径。

 

问题12:CMake生成QGIS解决方案时,安装了Win flex-bison,找不到bison路径

分析原因:在QGIS-master\CMakeLists.txt中,过 INCLUDE(Bison)调用QGIS-master\cmake\ Bison.cmake模块,在Bison.cmake中通过FIND_PROGRAM命令查找bison.exe可执行文件所在目录:

 FIND_PROGRAM(BISON_EXECUTABLE PATHS

      NAMES bison.exe

      PATHS $ENV{LIB_DIR}/binc:/cygwin/bin $ENV{PROGRAMFILES}/GnuWin32/bin

由于win_flex_bison-2.5.1使用了win_bison.exe文件名,导致无法找到bison.exe所在路径。

解决方法:建议在CMake_gui中手工添加win_flex.exe所在路径。

 

 

问题13:编译QGIS时,找不到unistd.h

分析原因:在QGIS-master\cmake\Flex.cmake 模块中定义宏MACRO(ADD_FLEX_FILES _sources ),在QGIS-master\src\core\CMakeLists.txt中通过宏ADD_FLEX_FILES(QGIS_CORE_SRCSqgsexpressionlexer.ll)生成build\src\core\flex_qgsexpressionlexer.cpp文件,在flex_qgsexpressionlexer.cpp中调用#include<unistd.h>头文件,Windows系统不自带该文件。

解决方法:将unistd.h复制到VS\include路径下。

 

问题14:编译QGIS时,errorC2487: “FieldIndexRole”: dll 接口类成员可能不与 dll接口一起声明

分析原因:在qgis-master\src\gui\qgsfieldmodel.h中定义了类_declspec(dllexport)QgsFieldModel,类中定义静态成员变量FieldNameRole和FieldIndexRole在一行中导致错误,这是Micorsoft产品的一个缺陷 (http://support.microsoft.com/kb/127900/zh-cn):

class GUI_EXPORT QgsFieldModel : publicQAbstractItemModel

{ ……

    static const int FieldNameRole, FieldIndexRole;

…… }

解决方法:将每个静态变量声明移到自己的行中,即:

class GUI_EXPORT QgsFieldModel : publicQAbstractItemModel

{ ……

    static const intFieldNameRole;

    static const int FieldIndexRole;

…… }

 

问题15:编译QGIS时,errorC3861: “finite”: 找不到标识符

分析原因:在QGIS-master\src\core\pal\feature.cpp中调用了Linux /Unix函数finite(),而Windows中类似函数为_finite()。

    assert(finite( lx ) && finite( ly ) );

finite()函数语法:intfinite(double value);

如果value既不是无穷大/无穷小,也不是非数字,则返回非零值,否则返回0。

解决方法:修改为Windows中_finite()函数。

 

问题16:编译qgispython工程DEBUG版本时,出现 errorLNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”(qgispython.obj和qgspythonutilsimpl.obj)

分析原因:在QGIS-master\src\python\qgspythonutilsimpl.cpp文件中,取消了_DEBUG定义:

#ifdef _MSC_VER

#ifdef _DEBUG

#undef _DEBUG

#endif

#endif

在QGIS-master\src\python\qgispython.cpp文件中,未取消_DEBUG定义,因此,导致两个文件的DEBUG版本不匹配。

解决方法1:在qgispython.cpp文件中,取消_DEBUG定义。

解决方法2:在qgspythonutilsimpl.cpp文件中,不取消_DEBUG定义,可能会引起其它问题。

 

问题17:编译qgispython工程DEBUG版本时,出现error LNK1104: 无法打开文件“python27_d.lib”

分析原因:qgspython依赖于python 2.7的库文件,在pyconfig.h文件中定义DEBUG链编时使用python27.lib库,RELEASE链编时使用python27_d.lib库。

#       if defined(_MSC_VER)

            /* So MSVC users need not specify the .lib file in

            theirMakefile (other compilers are generally

            takencare of by distutils.) */

#           ifdef _DEBUG

#               pragma comment(lib,"python27_d.lib")

#           else

#               pragma comment(lib,"python27.lib")

#           endif /* _DEBUG */

#       endif /* _MSC_VER */

解决方法1:在qgspython工程中取消_DEBUG定义。

解决方法2:修改pyconfig.h文件,将_DEBUG中链接库改为python27.lib,可能会引起其它问题。

说明:编译python_module_qgis_analysis, python_module_qgis_core, python_module_qgis_gui,python_module_qgis_networkanalysis工程时,出现error LNK1104: 无法打开文件“python27_d.lib”,解决方法同上。

 

问题18:调试QGIS时,通过qgspython.dll加载python27.dll失败

分析原因:通过Depends工具查看QGIS的依赖库(或者在调试状态下查看自动加载的依赖库),发现加载了系统路径下的Python动态库(例如C:\Windows\System32\python27.dll,版本2.7.2),未加载开发环境中的Python动态库(例如C:\GNU\OSGeo4W\bin\python27.dll,版本2.7.4),而两个Python动态库的版本不一致,导致加载失败。

解决方法1:将系统路径下Python动态库移到其他路径下。

解决方法2:使用开发环境中Python动态库覆盖系统路径下Python动态库。

 

问题19:调试QGIS时,加载qgis.core模块失败:无法载入PyQGIS,Python支持将被禁用

分析原因:QGIS未生成qgis.core模块

解决方法:QGIS通过python_module_qgis_core工程生成qgis.core模块,例如D:\dev_qgis\qgis-source230\build\output\python\qgis\core.pyd。

 

问题20:在Python中加载qgis.core模块出现错误:ImportError: No module named qgis.core

分析原因:qgis.core模块不在Python搜索路径中,qgis.core模块是…\qgis\core.pyd文件。

解决方法1:定义PYTHONPATH变量保存qgis.core模块所在路径,例如:D:\dev_qgis\qgis-source230\build\output\python

注意:必须定义PYTHONPATH变量,不需要在PATH变量中添加qgis.core模块所在路径。

 

问题21:在Python中加载qgis.core模块出现错误:ImpotError: DLL load failed

分析原因:通过Depends工具查看…\qgis\core.pyd的依赖库,发现需要调用qgis_core.dll动态库。

解决方法:在系统PATH变量中添加qgis_core.dll动态库所在路径例如:D:\dev_qgis\qgis-source230\build\output\bin\RelWithDebInfo

注意:必须在PATH变量中添加,不需要在PYTHONPATH变量中添加qgis_core.dll动态库所在路径。

 

 

编译警告:C4702 无法访问的代码

使用Notepad++ 6.5 打开引起警告的文件,通过格式菜单,将UTF-8无BOM格式编码转为UTF-8格式编码,重新编译。

 

 

注意:安装路径最好不要有空格或中文。

 

说明1:Flex是语法扫描器,用于解析文本生成代码;Bison是语法分析器,用于把上下文无关文法描述转换为可做语法分析的C或C++程序。Flex扫描器经常使用Bison定义的语法,Flex生成代码时使用Bison生成的头文件。

 

说明2:CMake 2.8中包含FindFLEX.cmake模块和FindBISON.cmake模块(位于C:\GNU\CMake2.8\share\cmake-2.8\Modules),用于查找Flex可执行程序 (flex.exe或win_flex.exe)和Bison可执行程序(bison.exe或win_bison.exe),但是QGIS未使用这两个模块,而是自定义Flex.cmake 模块和Bison.cmake模块(位于\QGIS-master\cmake)来查找flex.exe和bison.exe。

 

说明3:MS2010中MFC静态编译设置:项目属性 -> 配置属性 –> 常规–> MFC的使用 设置为在静态库中使用MFC;运行库编译设置:项目属性 -> 配置属性 -> C/C++-> 代码生成 -> 运行库设置为多线程(/MT)多线程调试(/MTd)

 

 

你可能感兴趣的:(QGIS2.3+VS2008+Win7编译(更新2014-5-5))