1. 代码下载
1)MapGuide代码下载地址:https://svn.osgeo.org/mapguide/trunk
2)FDO代码下载地址:https://svn.osgeo.org/fdo/trunk
3)CSMap代码下载地址:https://svn.osgeo.org/metacrs/csmap/trunk
2. 环境配置
在Windows下编译MapGuide需要安装如下软件:
1)JDK 1.8.0_74(jdk-8u74-windows-i586.exe),主要用于编译JavaAPI;
2)Flex 和Bison(cywin),主要用于编译PHP;
3)安装Perl(Strawberry),主要用于编译FDO;
4)安装.Net FrameWork 3.5,主要用于编译CsMap和配置ASP.NET网站;
5)安装Visual Studio 2015 update3
添加如下用户环境变量:
1)JAVA_HOME= C:\Program Files (x86)\Java\jdk1.8.0_74
2)PATH=%PATH%;C:\Strawberry\perl\bin;C:\cygwin\bin
3. 编译第三方库
MapGuide需要的第三方库大部分都包含在oem.sln解决方案中,对于较为复杂的第三方库(FDO、PHP、httpd)需要单独进行编译,具体编译步骤如下。
3.1 编译FDO
编译FDO(Feature Data Object 地理空间数据访问)需要安装Perl和.Net Framework 3.5,并且需要将Perl的安装路径添加到Path环境变量中,配置完成后在MgDev\Oem\FDO目录下执行如下命令进行FDO的编译:
1) 编译32位Release版本:
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86
setenvironment.bat
build_thirdparty.bat
build.bat
build.bat -a=install -o=../
2)编译32位Debug版本:
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86
setenvironment.bat
build_thirdparty.bat -c=debug
build.bat -c=debug
build.bat -c=debug -a=install -o=../
3)编译64位Release版本:
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86_amd64
setenvironment.bat x86_amd64
build_thirdparty.bat -p=x64
build.bat -p=x64
build.bat -p=x64 -a=install -o=../
4)编译64位Debug版本:
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86_amd64
setenvironment.bat x86_amd64
build_thirdparty.bat -c=debug -p=x64
build.bat -c=debug -p=x64
build.bat -c=debug -p=x64 -a=install -o=../
3.2 编译PHP
编译PHP主要是用来编译生成MapGuide PHP API。编译PHP需要安装Bison,并将其添加在Path环境变量中。在编译PHP扩展时会依赖其他的开源库,依赖的这些库可以到https://windows.php.net/downloads/php-sdk/deps网站上下载,也可以下载相应的源代码进行编译,依赖的开源库主要有:freetype、curl、libexslt、libpng16、libxml、libxml2、libxslt、openssl等,在MgDev\Oem\目录创建phpdev\vc14\x86文件夹和phpdev\vc14\x64其中目录“phpdev\vc14\x86\deps\lib”和“phpdev\vc14\x64\deps\lib”用于放置依赖开源库的库文件,“phpdev\vc14\x86\deps\include”和“phpdev\vc14\x64\deps\include”用于放置依赖开源库的头文件。配置完成后在MgDev\Oem\php目录下执行如下命令进行PHP库及其扩展的编译,如:libcurl、libjpeg、libpng、libwebp、libxpm、libiconv、mcrypt、zlib、libxml2、libxslt、openssl、freetype
1) 编译32位Release版本:
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86
buildconf.bat
cscript configure.js --with-extra-libs=..\phpdev\vc14\x86\deps\lib --with-extra-includes=..\phpdev\vc14\x86\deps\include --disable-all --enable-cli --enable-cgi --enable-bcmath --enable-calendar --enable-com-dotnet=shared --enable-ctype --with-dom --with-ereg --enable-filter --enable-ftp --enable-hash --with-iconv --enable-json --with-libxml --enable-mbstring=shared --with-mysqlnd --enable-odbc --enable-opcache --with-openssl=shared --enable-phar --enable-session --with-simplexml --enable-tokenizer --with-xsl=shared --without-t1lib --with-curl --enable-session --with-gd=shared --with-wddx --with-xml --enable-xmlreader --enable-xmlwriter --enable-zip --enable-zlib --with-mcrypt=static --without-analyzer
nmake
编译完成后生成的库在Release_TS目录下。
2)编译32位Debug版本:
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86
buildconf.bat
cscript configure.js --with-extra-libs=..\phpdev\vc14\x86\deps\lib --with-extra-includes=..\phpdev\vc14\x86\deps\include --enable-debug --disable-all --enable-cli --enable-cgi --enable-bcmath --enable-calendar --enable-com-dotnet=shared --enable-ctype --with-dom --with-ereg --enable-filter --enable-ftp --enable-hash --with-iconv --enable-json --with-libxml --enable-mbstring=shared --with-mysqlnd --enable-odbc --enable-opcache --with-openssl=shared --enable-phar --enable-session --with-simplexml --enable-tokenizer --with-xsl=shared --without-t1lib --with-curl --enable-session --with-gd=shared --with-wddx --with-xml --enable-xmlreader --enable-xmlwriter --enable-zip --enable-zlib --with-mcrypt=static --without-analyzer
nmake
编译完成后生成的库在Debug_TS目录下。
3)编译64位Release版本:
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86_amd64
buildconf.bat
cscript configure.js --with-extra-libs=..\phpdev\vc14\x64\deps\lib --with-extra-includes=..\phpdev\vc14\x64\deps\include --disable-all --enable-cli --enable-cgi --enable-bcmath --enable-calendar --enable-com-dotnet=shared --enable-ctype --with-dom --with-ereg --enable-filter --enable-ftp --enable-hash --with-iconv --enable-json --with-libxml --enable-mbstring=shared --with-mysqlnd --enable-odbc --enable-opcache --with-openssl=shared --enable-phar --enable-session --with-simplexml --enable-tokenizer --with-xsl=shared --without-t1lib --with-curl --enable-session --with-gd=shared --with-wddx --with-xml --enable-xmlreader --enable-xmlwriter --enable-zip --enable-zlib --with-mcrypt=static --without-analyzer
nmake
编译完成后生成的库在x64\Release_TS目录下。
4)编译64位Debug版本:
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86_amd64
buildconf.bat
cscript configure.js --with-extra-libs=..\phpdev\vc14\x64\deps\lib --with-extra-includes=..\phpdev\vc14\x64\deps\include --enable-debug --disable-all --enable-cli --enable-cgi --enable-bcmath --enable-calendar --enable-com-dotnet=shared --enable-ctype --with-dom --with-ereg --enable-filter --enable-ftp --enable-hash --with-iconv --enable-json --with-libxml --enable-mbstring=shared --with-mysqlnd --enable-odbc --enable-opcache --with-openssl=shared --enable-phar --enable-session --with-simplexml --enable-tokenizer --with-xsl=shared --without-t1lib --with-curl --enable-session --with-gd=shared --with-wddx --with-xml --enable-xmlreader --enable-xmlwriter --enable-zip --enable-zlib --with-mcrypt=static --without-analyzer
nmake
编译完成后生成的库在x64\Debug_TS目录下。
3.3 编译OEM
MapGuide需要的第三方库大部分都包含在oem.sln解决方案中,编译此类第三方库仅需使用Visual Studio 2015打开解决方案进行编译即可,也可以通过执行MgDev目录下的批处理进行编译,如下所示:
1)编译32位Release版本:
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86
setenvironment.bat
build.bat –w=oem
2)编译32位Debug版本:
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86
setenvironment.bat debug
build.bat –w=oem
3)编译64位Release版本:
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86_amd64
setenvironment.bat
build.bat –w=oem
4)编译64位Debug版本:
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86_amd64
setenvironment.bat debug
build.bat –w=oem
4. 编译Mapguide
第三方库编译完成后在MgDev目录下执行如下命令进行MapGuide的编译:
1)编译32位Release版本:
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86
setenvironment.bat
build.bat
build_desktop.bat
2)编译32位Debug版本:
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86
setenvironment.bat debug
build.bat
build_desktop.bat
3)编译64位Release版本:
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86_amd64
setenvironment64.bat
build.bat
build_desktop.bat
4)编译64位Debug版本:
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86_amd64
setenvironment64.bat debug
build.bat
build_desktop.bat
5. 启动Mapguide服务
编译完成后可以启动MapGuide服务以检查MapGuide编译的正确性和完整性。编译完成后会在MgDev\Server\Bin\Debug和MgDev\Server\Bin\Release目录下生成“mgserver.exe”服务可执行文件,在启动MapGuide服务之前可以对服务的配置文件“serverconfig.ini”进行修改,可以在配置文件中修改服务的IP地址、端口号、各类服务的状态、各类服务的属性、日志配置等,配置完成后可以在MgDev\Server\Bin\Debug或MgDev\Server\Bin\Release目录下执行如下命令启动MapGuide服务:
mgserver.exe run
启动MapGuide服务过程中可能遇到的错误及解决方法如下所示:
1)FDO加载失败,导致此问题的原因可能是服务配置中“FdoPath”参数配置不正确,或者是缺少FDO动态库的相关依赖。