Windows7(32bit)でQGIS(2.8.1)をコンパイル
コンパイラは「VisualStudio 2010」
参考にしたサイトは定番の以下のサイト
QGISをソースからコンパイルする方法(Windows8.1 32bit環境)
Building QGIS from source – step by step
こちらも参考にしました
CMAKEをセットアップ
CNAKE2.8のダウンロードサイトからcmake-2.8.6-win32-x86.zipをダウンロードしてC:\CMakeにインストール
Flex、Bisonをインストール
Cygwinをインストールして、Flex、Bisonのパッケージをインストール
Flexのバージョンは2.5.39
Bisonのバージョンは3.0.4
※Cygwinはダウンロードするサイトによってパッケージのバージョンが違うかも
Gitをインストール
Gitの1.9.2をダウンロードサイトからダウンロードしてC:\Gitにインストール
Subversionをインストール
Subversionの1.8.11をC:\Subversionにインストール
※使わないかも
OSGeo4Wをインストール
OSGeo4Wをインストールして以下のパッケージとQGISをインストール
※QGISをインストールするのはコンパイルエラーになったモジュールを補うため。(プラグインなどは必ずしも正しくコンパイルされるとは限らないので)
expat
fcgi
gdal
grass
gsl-devel
iconv
pyqt4
qt4-devel
qwt5-devel-qt4
sip
spatialite
libspatialindex-devel
python-qscintilla
qwtは念のためにqwt5だけではなくqwtもインストールする
インストールされたパッケージ
avce00 | 2.0.0-1 |
curl | 7.15.1-2 |
expat | 2.0.1-1 |
fcgi | 2.4.0-1 |
fftw | 3.2-1 |
freetype-mingw | 2.3.7-1 |
freexl | 1.0.0e-1 |
gdal | 1.11.2-1 |
gdal-python | 1.11.2-1 |
gdal110dll | 1.10.1-1 |
gdal15dll | 1.5.4-1 |
gdal18dll | 1.8.1-0 |
gdal19dll | 1.9.2-1 |
geos | 3.4.2-1 |
gpsbabel | 1.4.4-1 |
gpsbabelfe | 1.4.4-1 |
grass6 | 6.4.4-1 |
gs | 9.07-3 |
gsl-devel | 1.12-1 |
gsl-libs | 1.12-1 |
hdf4 | 4.2.0r3-4 |
hdf5 | 1.8.11-1 |
iconv | 1.9.1-1 |
laszip | 2.2.0-1 |
libcairo | 1.10.2-1 |
libgeotiff | 1.3.0-3 |
libintl | 0.14.4-2 |
libjpeg | 6b-5 |
libjpeg12 | 6b-3 |
libmysql | 5.0.18-1 |
libpng | 1.2.34-1 |
libpq | 8.3.10-3 |
libspatialindex | 1.7.0-1 |
libspatialindex-devel | 1.7.0-2 |
libtiff | 4.0.2-2 |
libxml2 | 2.9.1-1 |
msvcrt | 1.0.1-12 |
msys | 1.0.18-7 |
msys-grass | 1-5 |
netcdf | 3.6.1-1 |
ogdi | 3.2.0b1-4 |
openjpeg | 2.0.0-1 |
openssl | 1.0.1g-1 |
pdcurses | 3.3-1 |
proj | 4.8.0-0 |
proj-datumgrid | 1.5-1 |
proj-hpgn | 1.0-1 |
psycopg2 | 2.4-1 |
pygments | 1.4-3 |
pyopengl | 3.0.1-1 |
pyqt4 | 4.11.3-1 |
pyspatialite | 3.0.1-1 |
python | 2.7.4-2 |
python-core | 2.7.4-3 |
python-dateutil | 2.2-1 |
python-help | 2.7.4-1 |
python-jinja2 | 2-2.7.2-1 |
python-markupsafe | 0.23-1 |
python-numpy | 2.7-1.7.0-1 |
python-pil | pil-1.1.7-1 |
python-qscintilla | 2.8.4-1 |
python-tcltk | 2.7.4-1 |
python-testsuite | 2.7.4-1 |
python-tools | 2.7.4-1 |
python-win32 | 2.16-1 |
pytz | 2014.2-1 |
qgis | 2.8.1-1 |
qgis-common | 2.8.1-1 |
qscintilla | 2.8.4-1 |
qt4-devel | 4.8.6-1 |
qt4-libs | 4.8.6-1 |
qwt-devel-qt4 | 6.0.2-1 |
qwt-libs-qt4 | 6.0.2-1 |
qwt5-devel-qt4 | 4-5.2.1-1 |
qwt5-libs-qt4 | 4-5.2.1-1 |
setup | 1.0.7-10 |
shell | 1.0.0-13 |
sip | 4.16.5-1 |
six | 1.6.1-1 |
spatialite | 4.1.1-1 |
spatialite3dll | 3.0.1-0 |
sqlite3 | 3.7.17-1 |
szip | 2.1-1 |
tcltk | 8.5.6-1 |
wxpython | 2.8.12.1-1 |
xerces-c | 2.7.0-1 |
xerces-c-vc9 | 3.1.1-2 |
zlib | 1.2.3-1 |
tat2tagのセットアップ
PhytonがインストールされているC:\OSGEO4W\binにパスを通す
txt2tags.pyをダウンロードしてC:\OSGEO4W\binにコピー
txt2tags-2.3.exeをダウンロードしてC:\txt2tagsにインストール
作業ディレクトリの用意
ディレクトリC:\qgis\2.8.1_01を作成。
ディレクトリC:\qgis\2.8.1_01\build-x86を作成。
C:\qgis\2.8.1_01をカレントにして以下のコマンドでQGISのソース等をダウンロード
※QGISのGITHUBのアドレスhttps://github.com/qgis/QGIS
git clone git://github.com/qgis/qgis.git
C:\qgis\2.8.1_01\qgisにソースがダウンロードされる。
C:\qgis\2.8.1_01\qgisをカレントにして以下のコマンドでカレントのバージョンをリリースバージョんと同様の2.8.1に設定
現段階でのGISHUBのリポジトリの最新は2.8.2
git checkout ddccf8ee73eab92188a9055c472c58c86e3dc3b1
C:\qgis\2.8.1_01\init.batを以下の内容で作成
set VERSION=2.8.1 set PACKAGE=qgis2.8.1 set PACKAGENAME=qgis2.8.1 set ARCH=x86 if "%VERSION%"=="" goto usage if "%PACKAGE%"=="" goto usage if "%PACKAGENAME%"=="" goto usage if "%ARCH%"=="" goto usage echo "set BUILDDIR" pause set BUILDDIR=C:\qgis\2.8.1_01\build-x86 echo "set OSGEO4W_ROOT" pause set OSGEO4W_ROOT=C:\OSGeo4W echo "exec o4w_env.bat" pause call "C:\OSGeo4W\bin\o4w_env.bat" echo "set O4W_ROOT" pause set O4W_ROOT=%OSGEO4W_ROOT:\=/% echo "set LIB_DIR" pause set LIB_DIR=%O4W_ROOT% echo "set PF86" pause set PF86=%PROGRAMFILES% echo "set GRASS_VERSION" pause set GRASS_VERSION=6.4.4 echo "exec vcvarsall.bat" pause call "%PF86%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86 echo "exec SetEnv.Cmd" pause call "c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /x86 /Release color @echo on echo "set path" pause path %path%;%PF86%\Microsoft Visual Studio 10.0\VC\bin echo "set CMAKE_OPT" pause set CMAKE_OPT=^ -G "Visual Studio 10" ^ -D SIP_BINARY_PATH=%O4W_ROOT%/bin/sip.exe ^ -D QWT_LIBRARY=%O4W_ROOT%/lib/qwt5.lib echo %CMAKE_OPT% echo "set PYTHONPATH" pause set PYTHONPATH= path C:\CMake\bin;%PATH%;c:\cygwin\bin REM PROMPT qgis%VERSION%$g echo "set BUILDCONF" pause set BUILDCONF=RelWithDebInfo echo "set SRCDIR" pause set SRCDIR=C:\qgis\2.8.1_01\qgis echo %SRCDIR% echo "cd BUILDDIR" pause if "%BUILDDIR:~1,1%"==":" %BUILDDIR:~0,2% cd %BUILDDIR% echo %BUILDDIR% if errorlevel 1 goto error echo %CD% if errorlevel 1 goto error echo "check log" pause if errorlevel 1 goto error if not exist build.log goto build echo "del build.tmp" pause REM REM try renaming the logfile to see if it's locked REM if exist build.tmp del build.tmp if exist build.tmp (echo could not remove build.tmp & goto error) echo "ren build.log" pause ren build.log build.tmp if exist build.log goto locked if not exist build.tmp goto locked echo "ren build.tmp" pause ren build.tmp build.log if exist build.tmp goto locked if not exist build.log goto locked goto build :locked echo Logfile locked if exist build.tmp del build.tmp goto error :build echo "build" if errorlevel 1 goto error echo BEGIN: %DATE% %TIME% if errorlevel 1 goto error set >buildenv.log echo "check qgsversion.h" if exist qgsversion.h del qgsversion.h if errorlevel 1 goto error echo "check CMakeCache.txt" if exist CMakeCache.txt goto skipcmake if errorlevel 1 goto error echo CMAKE: %DATE% %TIME% if errorlevel 1 goto error echo "set LIB" pause set LIB=%LIB%;%OSGEO4W_ROOT%\lib echo %LIB% echo "set INCLUDE" pause set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%\include echo %INCLUDE% echo "set GRASS_PREFIX" pause set GRASS_PREFIX=%O4W_ROOT%/apps/grass/grass-%GRASS_VERSION% echo %GRASS_PREFIX% echo "cmake" pause cmake %CMAKE_OPT% ^ -D PEDANTIC=TRUE ^ -D WITH_QSPATIALITE=TRUE ^ -D WITH_SERVER=FALSE ^ -D SERVER_SKIP_ECW=TRUE ^ -D WITH_GLOBE=FALSE ^ -D WITH_TOUCH=FALSE ^ -D WITH_ORACLE=FALSE ^ -D WITH_GRASS=TRUE ^ -D WITH_CUSTOM_WIDGETS=TRUE ^ -D CMAKE_CXX_FLAGS_RELEASE="/MD /MP /O2 /Ob2 /D NDEBUG" ^ -D CMAKE_BUILD_TYPE=%BUILDCONF% ^ -D CMAKE_CONFIGURATION_TYPES=%BUILDCONF% ^ -D GEOS_LIBRARY=%O4W_ROOT%/lib/geos_c.lib ^ -D SQLITE3_LIBRARY=%O4W_ROOT%/lib/sqlite3_i.lib ^ -D SPATIALITE_LIBRARY=%O4W_ROOT%/lib/spatialite_i.lib ^ -D PYTHON_EXECUTABLE=%O4W_ROOT%/bin/python.exe ^ -D PYTHON_INCLUDE_PATH=%O4W_ROOT%/apps/Python27/include ^ -D PYTHON_LIBRARY=%O4W_ROOT%/apps/Python27/libs/python27.lib ^ -D QT_BINARY_DIR=%O4W_ROOT%/bin ^ -D QT_LIBRARY_DIR=%O4W_ROOT%/lib ^ -D QT_HEADERS_DIR=%O4W_ROOT%/include/qt4 ^ -D QWT_INCLUDE_DIR=%O4W_ROOT%/include/qwt ^ -D CMAKE_INSTALL_PREFIX=c:/qgis/%PACKAGENAME% ^ -D FCGI_INCLUDE_DIR=%O4W_ROOT%/include ^ -D FCGI_LIBRARY=%O4W_ROOT%/lib/libfcgi.lib ^ -D WITH_INTERNAL_JINJA2=FALSE ^ -D WITH_INTERNAL_MARKUPSAFE=FALSE ^ -D WITH_INTERNAL_PYGMENTS=FALSE ^ -D WITH_INTERNAL_DATEUTIL=FALSE ^ -D WITH_INTERNAL_PYTZ=FALSE ^ -D WITH_INTERNAL_SIX=FALSE ^ %SRCDIR% if errorlevel 1 (echo cmake failed & goto error) call "C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" :skipcmake if exist noclean (echo skip clean & goto skipclean) echo CLEAN: %DATE% %TIME% :skipclean echo ALL_BUILD: %DATE% %TIME% goto end :usage echo usage: %0 version package packagename arch echo sample: %0 2.0.1 3 qgis x86 exit :error echo BUILD ERROR %ERRORLEVEL%: %DATE% %TIME% for %%i in ("" "-common" "-server" "-devel" "-grass-plugin" "-globe-plugin" "-oracle-provider") do ( if exist %ARCH%\release\qgis\%PACKAGENAME%%%i\%PACKAGENAME%%%i-%VERSION%-%PACKAGE%.tar.bz2 del %ARCH%\release\qgis\%PACKAGENAME%%%i\%PACKAGENAME%%%i-%VERSION%-%PACKAGE%.tar.bz2 ) :end echo FINISHED: %DATE% %TIME%
vc2010が起動したらqgis2.8.1.slnを開いてコンパイルする。
いくつかのプロジェクトはコンパイルエラーになった。
processing-59-stageinstallのように複数の*.uiが入っているプロジェクトは*.uiからui_*への変換でエラーになることがある。この場合はソリューションエクスプローラ上で*.uiを右クリックしてひとつひとつコンパイルした後に同プロジェクトをビルドすれば、ビルドが通る可能性がある。
いくつかのPython系のプラグイン関係のプロジェクトビルドを通らなかった。
pyplugin-installerプロジェクトで原因を調べてみると、同プロジェクトに設定されているカスタムビルドの以下のコマンドでエラーが発生していた。
C:\qgis\2.8.1.2\qgis\scripts\pyuic4-wrapper.bat C:/OSGeo4W/bin/pyuic4.bat C:/qgis/2.8.1.2/build-x86/output/bin/RelWithDebInfo C:/qgis/2.8.1.2/build-x86/output/python C:/qgis/2.8.1.2/qgis/python/pyplugin_installer/qgsplugininstallerfetchingbase.ui -o C:/qgis/2.8.1.2/build-x86/python/pyplugin_installer/ui_qgsplugininstallerfetchingbase.py
pyuic4-wrapper.bat
set PYUIC4=%1 set PATH=%2;%PATH% set PYTHONPATH=%3;%PYTHONPATH% %PYUIC4% %4 %5 %6 %7 %8 %9
pyuic4.bat
@"C:\OSGeo4W\bin\python.exe" "C:\OSGeo4W\apps\Python27\lib\site-packages\PyQt4\uic\pyuic.py" %1 %2 %3 %4 %5 %6 %7 %8 %9
どうやらpython.exeでエラーが発生しているようなのpython.exeを単独で実行してみると「 ImportError: No module named site」が出力される。
よって以下の環境変数を設定ひて再度、実行すると
SET PYTHONHOME=C:\OSgeo4w\apps\Python27
ビルドエラーとなるプロジェクトは以下の2つに減った。
synccrsdb
qgis_regression1141
インストール
インストール先のディテクトリ「C:\qgis\qgis2.8.1」を作成
※インストール先はCMAKEにパラメータ「CMAKE_INSTALL_PREFIX」で指定したディレクトリ
プロジェクト「INSTALL」を実行してインストール
起動バッチの作成
OSGEO4WにあるQGIS起動バッチを参考に以下のバッチを作成して実行
@echo off call C:\OSGeo4W\bin\o4w_env.bat call C:\OSGeo4W\apps\grass\grass-6.4.4\etc\env.bat @echo off path C:\OSGeo4W\bin;C:\qgis\qgis2.8.1\bin;C:\OSGeo4W\apps\grass\grass-6.4.4\lib;%PATH% set QGIS_PREFIX_PATH=C:\qgis\qgis2.8.1 set GDAL_FILENAME_IS_UTF8=YES rem Set VSI cache to be used as buffer, see #6448 set VSI_CACHE=TRUE set VSI_CACHE_SIZE=1000000 set QT_PLUGIN_PATH=C:\qgis\qgis2.8.1\qtplugins;C:\OSGeo4W\apps\qt4\plugins start "QGIS" /B "C:\qgis\qgis2.8.1\bin\qgis.exe %*
以上
業務連絡
\\gyan2014\share\project\qgisに今回のリソースがあります。