前言:QGIS是一個用Qt框架寫的開源桌面GIS工具。無論從學習GIS還是學習QT的角度它都是一個很好的工具。本文簡介在ubuntu環境下編譯QGIS源代碼的方法。
參考鏈接:
http://gvision.info/using-qtcreator-with-qgis/
http://hub.qgis.org/projects/quantum-gis/repository/revisions/master/entry/INSTALL
環境:Ubuntu 11.10
一、依賴的工具集:
- CMake >= 2.6.2
- Flex
- Bison >= 2.4
二、依賴庫:
- Qt >= 4.4.0
- Proj >= 4.4.x
- GEOS >= 3.0
- Sqlite3 >= 3.0.0
- GDAL/ORG >= 1.4.x
- Qwt >= 5.0
可選依賴庫:
- For GRASS plugin - GRASS >= 6.0.0 (libraries compiled with exceptions support on Linux 32bit)
- for georeferencer - GSL >= 1.8
- for postgis support and SPIT plugin - PostgreSQL >= 8.0.x
- for gps plugin - expat >= 1.95 and gpsbabel
- for mapserver export and PyQGIS - Python >= 2.3 (2.5+ preferred)
- for python support - SIP >= 4.8, PyQt >= must match Qt version
- for qgis mapserver - FastCGI
三、編譯QGIS所需的依賴庫在Ubuntu的 "universe"組件裏,這個組件默認是關閉的,爲了編譯QGIS必須激活:
1、編輯 /etc/apt/sources.list 文件
2、打開所有以 "deb"開頭的行
3、更新sources庫, 在命令行裏輸入:sudo apt-get update
四、安裝第一部分提到的依賴庫
注意:這裏有不同的發行版本, 安裝命令也會相應有些差別, 根據自己的需要選擇 lucid, maverick, natty, oneiric, precise, sid, squeeze, 或是wheezy.
|| Distribution | install command for packages |
| lucid | ``apt-get install bison cmake doxygen flex git-core graphviz grass-dev libexpat1-dev libfcgi-dev libgdal1-dev libgeos-dev libgsl0-dev libpq-dev libproj-dev libqt4-dev libqwt5-qt4-dev libspatialindex-dev libspatialite-dev libsqlite3-dev pkg-config pyqt4-dev-tools python python-dev python-qt4 python-qt4-dev python-sip python-sip-dev txt2tags xauth xfonts-base xvfb`` |
| maverick | ``apt-get install bison cmake doxygen flex git graphviz grass-dev libexpat1-dev libfcgi-dev libgdal1-dev libgeos-dev libgsl0-dev libpq-dev libproj-dev libqt4-dev libqtwebkit-dev libqwt5-qt4-dev libspatialindex-dev libspatialite-dev libsqlite3-dev pkg-config pyqt4-dev-tools python python-dev python-qt4 python-qt4-dev python-sip python-sip-dev txt2tags xauth xfonts-base xvfb`` |
| natty | ``apt-get install bison cmake doxygen flex git graphviz grass-dev libexpat1-dev libfcgi-dev libgdal1-dev libgeos-dev libgsl0-dev libpq-dev libproj-dev libqt4-dev libqtwebkit-dev libqwt5-qt4-dev libspatialindex-dev libspatialite-dev libsqlite3-dev pkg-config pyqt4-dev-tools python python-dev python-qt4 python-qt4-dev python-sip python-sip-dev txt2tags xauth xfonts-base xvfb`` |
| oneiric | ``apt-get install bison cmake doxygen flex git graphviz grass-dev libexpat1-dev libfcgi-dev libgdal1-dev libgeos-dev libgsl0-dev libpq-dev libproj-dev libqt4-dev libqtwebkit-dev libqwt5-qt4-dev libspatialindex-dev libspatialite-dev libsqlite3-dev pkg-config pyqt4-dev-tools python python-dev python-qt4 python-qt4-dev python-sip python-sip-dev txt2tags xauth xfonts-base xvfb`` |
| precise | ``apt-get install bison cmake doxygen flex git graphviz grass-dev libexpat1-dev libfcgi-dev libgdal1-dev libgeos-dev libgsl0-dev libopenscenegraph-dev libosgearth-dev libpq-dev libproj-dev libqt4-dev libqt4-opengl-dev libqtwebkit-dev libqwt5-qt4-dev libspatialindex-dev libspatialite-dev libsqlite3-dev pkg-config pyqt4-dev-tools python python-dev python-qt4 python-qt4-dev python-sip python-sip-dev txt2tags xauth xfonts-base xvfb`` |
| sid | ``apt-get install bison cmake doxygen flex git graphviz grass-dev libexpat1-dev libfcgi-dev libgdal1-dev libgeos-dev libgsl0-dev libopenscenegraph-dev libosgearth-dev libpq-dev libproj-dev libqt4-dev libqt4-opengl-dev libqtwebkit-dev libqwt-dev libspatialindex-dev libspatialite-dev libsqlite3-dev pkg-config pyqt4-dev-tools python python-dev python-qt4 python-qt4-dev python-sip python-sip-dev txt2tags xauth xfonts-base xvfb`` |
| squeeze | ``apt-get install bison cmake doxygen flex git graphviz grass-dev libexpat1-dev libfcgi-dev libgdal1-dev libgeos-dev libgsl0-dev libpq-dev libproj-dev libqt4-dev libqwt5-qt4-dev libspatialindex-dev libspatialite-dev libsqlite3-dev pkg-config pyqt4-dev-tools python python-dev python-qt4 python-qt4-dev python-sip python-sip-dev txt2tags xauth xfonts-base xvfb`` |
| wheezy | ``apt-get install bison cmake doxygen flex git graphviz grass-dev libexpat1-dev libfcgi-dev libgdal1-dev libgeos-dev libgsl0-dev libopenscenegraph-dev libosgearth-dev libpq-dev libproj-dev libqt4-dev libqt4-opengl-dev libqtwebkit-dev libqwt-dev libspatialindex-dev libspatialite-dev libsqlite3-dev pkg-config pyqt4-dev-tools python python-dev python-qt4 python-qt4-dev python-sip python-sip-dev txt2tags xauth xfonts-base xvfb`` |
五、git
git是一個類似與SVN的版本控制工具, qgis的源代碼是用git管理的, 你可以在ubuntu software center 或是用命令行安裝git工具。
在 home文件夾下面創建dev/cpp文件夾, 將QGIS的源代碼放到這個目錄下:
cd ${home}/dev/cpp
git clone git://github.com/qgis/Quantum-GIS.git
推薦的一種得到源代碼的途徑是直接到QGIS的官方網站下載,這裏建議下載 release的穩定版本(筆者經驗,master版本有時候編譯會出問題,當前是版本是1.7.4)。因爲用git從sourceforge上面checkout出來的是不穩定的版本,編譯過程可能出現問題。
六、編譯源代碼(可以選擇兩種編譯方式,如果你的目的還包括改寫qgis源代碼,可以用第二種QtCreator編譯)
(一)命令行編譯
1、創建目錄${home}/apps
mkdir -p ${HOME}/apps
2、創建一個build目錄,並且運行 ccmake
cd Quantum-GIS
mkdir build-master
cd build-master
ccmake ..
當運行ccmake的時候(..是必須的),會出現一個配置菜單,修改CMAKE_INSTALL_PREFIX爲 ${home}/apps.按c開始配置,有時候需要按幾次c纔會出現g,讓你生成make file.
3、build
命令行輸入
make
make install
4、運行
$home/apps/bin/qgis
如果編譯成功,QGIS就會成功運行。
(二)QtCreator編譯
1、重新解壓出來一份源代碼(不要用用過第一種方法編譯的那套代碼)
2、打開QtCreator
File->Open File or Project
找到源代碼的根目錄,裏面應該有CMakeLists.txt.打開。會出現下圖選擇build的目錄
按Next出現下圖設置cmake參數 -DCMAKE_BUILD_TYPE=Debug
點擊Run CMake會自動生成相應的makefiles.然後點擊Finish.
3、設置build環境
點擊Projects->Build Settings->Add Build Step->Custom Process Step,設置如下圖:
默認情況下,QGIS會安裝在/usr/local, 此時需要設置你對該目錄具有讀寫權限。
4、設置運行環境,Run Settings(在Build Settings旁邊)。
覆蓋默認的可執行文件,點擊Add,選擇Custom Executable,
Executable: /usr/local/bin/qgis Arguments : Working directory: $HOME Run in terminal: [no] Debugger: C++ [yes] Qml [no]點擊Rename,設置可執行文件的名字爲Installed QGIS或是其他你喜歡的名字。
設置如下圖:
5、運行和調試, 設置斷點後,點擊Start Debugging按鈕,即可進入調試模式。