mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-24 00:47:57 -05:00
293 lines
14 KiB
Plaintext
293 lines
14 KiB
Plaintext
|
|
= Building on GNU/Linux =
|
|
|
|
== Building QGIS with Qt 4.x ==
|
|
|
|
**Requires:** Ubuntu / Debian derived distro
|
|
|
|
/!\ **Note:** Refer to the section ''Building Debian packages'' for building
|
|
debian packages. Unless you plan to develop on QGIS, that is probably the
|
|
easiest option to compile and install QGIS.
|
|
|
|
These notes are for Ubuntu - other versions and Debian derived distros may
|
|
require slight variations in package names.
|
|
|
|
These notes are for if you want to build QGIS from source. One of the major
|
|
aims here is to show how this can be done using binary packages for ***all***
|
|
dependencies - building only the core QGIS stuff from source. I prefer this
|
|
approach because it means we can leave the business of managing system packages
|
|
to apt and only concern ourselves with coding QGIS!
|
|
|
|
This document assumes you have made a fresh install and have a 'clean' system.
|
|
These instructions should work fine if this is a system that has already been
|
|
in use for a while, you may need to just skip those steps which are irrelevant
|
|
to you.
|
|
|
|
== Prepare apt ==
|
|
|
|
The packages QGIS depends on to build are available in the "universe" component
|
|
of Ubuntu. This is not activated by default, so you need to activate it:
|
|
|
|
+ Edit your /etc/apt/sources.list file.
|
|
+ Uncomment all the lines starting with "deb"
|
|
+
|
|
|
|
Also you will need to be running Ubuntu 'precise' or higher in order for
|
|
all dependencies to be met.
|
|
|
|
Now update your local sources database:
|
|
|
|
```
|
|
sudo apt-get update
|
|
```
|
|
|
|
== Install build dependencies ==
|
|
|
|
|| Distribution | install command for packages |
|
|
| wheezy | ``apt-get install bison cmake doxygen flex gdal-bin git graphviz grass-dev libexpat1-dev libfcgi-dev libgdal1-dev libgeos-dev libgsl0-dev libopenscenegraph-dev libosgearth-dev libpq-dev libproj-dev libqca2-dev libqca2-plugin-ossl libqscintilla2-dev libqt4-dev libqt4-opengl-dev libqt4-sql-sqlite libqtwebkit-dev libqwt-dev libspatialindex-dev libspatialite-dev libsqlite3-dev lighttpd locales pkg-config poppler-utils pyqt4-dev-tools python python-dev python-gdal python-mock python-nose2 python-psycopg2 python-qscintilla2 python-qt4 python-qt4-dev python-qt4-sql python-sip python-sip-dev python-yaml qt4-doc-html spawn-fcgi txt2tags xauth xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable xvfb cmake-curses-gui`` |
|
|
| jessie | ``apt-get install bison cmake dh-python doxygen flex gdal-bin git graphviz grass-dev libexpat1-dev libfcgi-dev libgdal-dev libgeos-dev libgsl0-dev libopenscenegraph-dev libosgearth-dev libpq-dev libproj-dev libqca2-dev libqca2-plugin-ossl libqscintilla2-dev libqt4-dev libqt4-opengl-dev libqt4-sql-sqlite libqtwebkit-dev libqwt-dev libspatialindex-dev libspatialite-dev libsqlite3-dev lighttpd locales pkg-config poppler-utils pyqt4-dev-tools pyqt4.qsci-dev python-all python-all-dev python-gdal python-mock python-nose2 python-psycopg2 python-pyspatialite python-qscintilla2 python-qt4 python-qt4-dev python-qt4-sql python-sip python-sip-dev python-yaml qt4-doc-html spawn-fcgi txt2tags xauth xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable xvfb cmake-curses-gui`` |
|
|
| stretch | ``apt-get install bison cmake dh-python doxygen flex gdal-bin git graphviz grass-dev libexpat1-dev libfcgi-dev libgdal-dev libgeos-dev libgsl-dev libopenscenegraph-dev libosgearth-dev libpq-dev libproj-dev libqca2-dev libqca2-plugin-ossl libqscintilla2-dev libqt4-dev libqt4-opengl-dev libqt4-sql-sqlite libqtwebkit-dev libqwt-dev libspatialindex-dev libspatialite-dev libsqlite3-dev lighttpd locales pkg-config poppler-utils pyqt4-dev-tools pyqt4.qsci-dev python-all python-all-dev python-future python-gdal python-mock python-nose2 python-psycopg2 python-pyspatialite python-qscintilla2 python-qt4 python-qt4-dev python-qt4-sql python-sip python-sip-dev python-yaml qt4-doc-html spawn-fcgi txt2tags xauth xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable xvfb cmake-curses-gui`` |
|
|
| precise | ``apt-get install bison cmake doxygen flex gdal-bin git graphviz grass-dev libexpat1-dev libfcgi-dev libgdal-dev libgeos-dev libgsl0-dev libopenscenegraph-dev libosgearth-dev libpq-dev libproj-dev libqca2-dev libqca2-plugin-ossl libqscintilla2-dev libqt4-dev libqt4-opengl-dev libqt4-sql-sqlite libqtwebkit-dev libqwt5-qt4-dev libspatialindex-dev libspatialite-dev libsqlite3-dev lighttpd locales pkg-config poppler-utils pyqt4-dev-tools python python-gdal python-mock python-psycopg2 python-qscintilla2 python-qt4 python-qt4-dev python-qt4-sql python-sip python-sip-dev python-yaml qt4-doc-html spawn-fcgi txt2tags xauth xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable xvfb cmake-curses-gui`` |
|
|
| trusty | ``apt-get install bison cmake dh-python doxygen flex gdal-bin git graphviz grass-dev libexpat1-dev libfcgi-dev libgdal-dev libgeos-dev libgsl0-dev libopenscenegraph-dev libosgearth-dev libpq-dev libproj-dev libqca2-dev libqca2-plugin-ossl libqscintilla2-dev libqt4-dev libqt4-opengl-dev libqt4-sql-sqlite libqtwebkit-dev libqwt5-qt4-dev libspatialindex-dev libspatialite-dev libsqlite3-dev lighttpd locales pkg-config poppler-utils pyqt4-dev-tools python-all python-all-dev python-gdal python-mock python-nose2 python-psycopg2 python-pyspatialite python-qscintilla2 python-qt4 python-qt4-dev python-qt4-sql python-sip python-sip-dev python-yaml qt4-doc-html spawn-fcgi txt2tags xauth xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable xvfb cmake-curses-gui`` |
|
|
| wily | ``apt-get install bison cmake cmake dh-python doxygen flex gdal-bin git graphviz grass-dev libexpat1-dev libfcgi-dev libgdal-dev libgeos-dev libgsl0-dev libopenscenegraph-dev libosgearth-dev libpq-dev libproj-dev libqca2-dev libqca2-plugin-ossl libqscintilla2-dev libqt4-dev libqt4-opengl-dev libqt4-sql-sqlite libqtwebkit-dev libqwt5-qt4-dev libspatialindex-dev libspatialite-dev libsqlite3-dev lighttpd locales pkg-config poppler-utils pyqt4-dev-tools pyqt4.qsci-dev python-all python-all-dev python-future python-gdal python-mock python-nose2 python-psycopg2 python-pyspatialite python-qscintilla2 python-qt4 python-qt4-dev python-qt4-sql python-sip python-sip-dev python-yaml qt4-doc-html spawn-fcgi txt2tags xauth xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable xvfb cmake-curses-gui`` |
|
|
| xenial | ``apt-get install bison cmake dh-python doxygen flex gdal-bin git graphviz grass-dev libexpat1-dev libfcgi-dev libgdal-dev libgeos-dev libgsl-dev libopenscenegraph-dev libosgearth-dev libpq-dev libproj-dev libqca2-dev libqca2-plugin-ossl libqscintilla2-dev libqt4-dev libqt4-opengl-dev libqt4-sql-sqlite libqtwebkit-dev libqwt5-qt4-dev libspatialindex-dev libspatialite-dev libsqlite3-dev lighttpd locales pkg-config poppler-utils pyqt4-dev-tools pyqt4.qsci-dev python-all python-all-dev python-future python-gdal python-mock python-nose2 python-psycopg2 python-pyspatialite python-qscintilla2 python-qt4 python-qt4-dev python-qt4-sql python-sip python-sip-dev python-yaml qt4-doc-html spawn-fcgi txt2tags xauth xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable xvfb cmake-curses-gui`` |
|
|
| sid | ``apt-get install bison cmake dh-python doxygen flex gdal-bin git graphviz grass-dev libexpat1-dev libfcgi-dev libgdal-dev libgeos-dev libgsl-dev libopenscenegraph-dev libosgearth-dev libpq-dev libproj-dev libqca2-dev libqca2-plugin-ossl libqscintilla2-dev libqt4-dev libqt4-opengl-dev libqt4-sql-sqlite libqtwebkit-dev libqwt5-qt4-dev libspatialindex-dev libspatialite-dev libsqlite3-dev lighttpd locales pkg-config poppler-utils pyqt4-dev-tools pyqt4.qsci-dev python-all python-all-dev python-future python-gdal python-mock python-nose2 python-psycopg2 python-pyspatialite python-qscintilla2 python-qt4 python-qt4-dev python-qt4-sql python-sip python-sip-dev python-yaml qt4-doc-html spawn-fcgi txt2tags xauth xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable xvfb cmake-curses-gui`` |
|
|
|
|
(extracted from the control.in file in ``debian/``)
|
|
|
|
|
|
== Setup ccache (Optional) ==
|
|
|
|
You should also setup ccache to speed up compile times:
|
|
|
|
```
|
|
cd /usr/local/bin
|
|
sudo ln -s /usr/bin/ccache gcc
|
|
sudo ln -s /usr/bin/ccache g++
|
|
```
|
|
|
|
== Prepare your development environment ==
|
|
|
|
As a convention I do all my development work in $HOME/dev/<language>, so in
|
|
this case we will create a work environment for C++ development work like
|
|
this:
|
|
|
|
```
|
|
mkdir -p ${HOME}/dev/cpp
|
|
cd ${HOME}/dev/cpp
|
|
```
|
|
|
|
This directory path will be assumed for all instructions that follow.
|
|
|
|
|
|
== Check out the QGIS Source Code ==
|
|
|
|
There are two ways the source can be checked out. Use the anonymous method
|
|
if you do not have edit privileges for the QGIS source repository, or use
|
|
the developer checkout if you have permissions to commit source code
|
|
changes.
|
|
|
|
1. Anonymous Checkout
|
|
|
|
```
|
|
cd ${HOME}/dev/cpp
|
|
git clone git://github.com/qgis/QGIS.git
|
|
```
|
|
|
|
2. Developer Checkout
|
|
|
|
```
|
|
cd ${HOME}/dev/cpp
|
|
git clone git@github.com:qgis/QGIS.git
|
|
```
|
|
|
|
== Starting the compile ==
|
|
|
|
I compile my development version of QGIS into my ~/apps directory to avoid
|
|
conflicts with Ubuntu packages that may be under /usr. This way for example
|
|
you can use the binary packages of QGIS on your system along side with your
|
|
development version. I suggest you do something similar:
|
|
|
|
```
|
|
mkdir -p ${HOME}/apps
|
|
```
|
|
|
|
Now we create a build directory and run ccmake:
|
|
|
|
```
|
|
cd QGIS
|
|
mkdir build-master
|
|
cd build-master
|
|
ccmake ..
|
|
```
|
|
|
|
When you run ccmake (note the .. is required!), a menu will appear where
|
|
you can configure various aspects of the build. If you want QGIS to have
|
|
debugging capabilities then set CMAKE_BUILD_TYPE to Debug. If you do not have
|
|
root access or do not want to overwrite existing QGIS installs (by your
|
|
packagemanager for example), set the CMAKE_INSTALL_PREFIX to somewhere you
|
|
have write access to (I usually use ${HOME}/apps). Now press
|
|
'c' to configure, 'e' to dismiss any error messages that may appear.
|
|
and 'g' to generate the make files. Note that sometimes 'c' needs to
|
|
be pressed several times before the 'g' option becomes available.
|
|
After the 'g' generation is complete, press 'q' to exit the ccmake
|
|
interactive dialog.
|
|
|
|
Now on with the build:
|
|
|
|
```
|
|
make
|
|
make install
|
|
```
|
|
|
|
It may take a little while to build depending on your platform.
|
|
|
|
After that you can try to run QGIS:
|
|
|
|
```
|
|
$HOME/apps/bin/qgis
|
|
```
|
|
|
|
If all has worked properly the QGIS application should start up and appear
|
|
on your screen. If you get the error message "error while loading shared libraries",
|
|
execute this command in your shell.
|
|
|
|
```
|
|
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${HOME}/apps/lib/
|
|
```
|
|
|
|
|
|
== Building Debian packages ==
|
|
|
|
Instead of creating a personal installation as in the previous step you can
|
|
also create debian package. This is done from the QGIS root directory, where
|
|
you'll find a debian directory.
|
|
|
|
First you need to install the debian packaging tools once:
|
|
|
|
```
|
|
apt-get install build-essential
|
|
```
|
|
|
|
First you need to create an changelog entry for your distribution. For example
|
|
for Ubuntu Precise:
|
|
|
|
```
|
|
dch -l ~precise --force-distribution --distribution precise "precise build"
|
|
```
|
|
|
|
The QGIS packages will be created with:
|
|
|
|
```
|
|
dpkg-buildpackage -us -uc -b
|
|
```
|
|
|
|
/!\ **Note:** Install ``devscripts`` to get ``dch``.
|
|
|
|
/!\ **Note:** If ``dpkg-buildpackage`` complains about unmet build dependencies
|
|
you can install them using ``apt-get`` and re-run the command.
|
|
|
|
/!\ **Note:** If you have ``libqgis1-dev`` installed, you need to remove it first
|
|
using ``dpkg -r libqgis1-dev``. Otherwise ``dpkg-buildpackage`` will complain about a
|
|
build conflict.
|
|
|
|
/!\ **Note:** By default tests are run in the process of building and their
|
|
results are uploaded to http://dash.orfeo-toolbox.org/index.php?project=QGIS.
|
|
You can turn the tests off using DEB_BUILD_OPTIONS=nocheck in front of the
|
|
build command. The upload of results can be avoided with DEB_TEST_TARGET=test.
|
|
|
|
The packages are created in the parent directory (ie. one level up).
|
|
Install them using dpkg. E.g.:
|
|
|
|
```
|
|
sudo debi
|
|
```
|
|
|
|
== Building QGIS with Qt 5.x ==
|
|
|
|
/!\ **Warning:** Qt 5 is not officially supported. Building against Qt 5
|
|
libraries seems to work quite well already but be prepared that you are one
|
|
of very few with this setup. We strongly recommend using QGIS with Qt 4 for
|
|
production work.
|
|
|
|
Python bindings in particular are not expected to be compatible. When Qt 5
|
|
is enabled, the build system automatically activates Python 3 and PyQt5 as well.
|
|
There are no plugins and not even the python code shipped along the QGIS source
|
|
code is compatible with PyQt5.
|
|
|
|
You have been warned.
|
|
|
|
== On Debian Linux ==
|
|
|
|
We assume that you have the source code of QGIS ready and created a new
|
|
subdirectory called `build` or `build-qt5` in it.
|
|
|
|
=== Install build dependencies ===
|
|
|
|
```
|
|
apt-get install git build-essential cmake flex bison pyqt5-dev qttools5-dev qtpositioning5-dev libqt5svg5-dev libqt5webkit5-dev libqt5gui5 libqt5scripttools5 qtscript5-dev libqca-qt5-2-dev grass-dev libgeos-dev libgdal-dev libqt5xmlpatterns5-dev libqt5scintilla2-dev pyqt5.qsci-dev python3-pyqt5.qsci libgsl-dev txt2tags libproj-dev libqwt-qt5-dev libspatialindex-dev pyqt5-dev-tools qttools5-dev-tools qt5-default python3-future python3-pyqt5.qtsql python3-psycopg2
|
|
```
|
|
|
|
Make sure that your build directory is completely empty when you enter the
|
|
following command. Do never try to "re-use" an existing Qt4 build directory.
|
|
If you want to use `ccmake` or other interactive tools, run the following
|
|
command in the empty build directory once before starting to use the
|
|
interactive tools.
|
|
|
|
```
|
|
cmake -DENABLE_QT5=ON -DPORT_PLUGINS=ON
|
|
```
|
|
|
|
If everything went ok you can finally start to compile. (As usual append a -jX where X is the number of available cores option to make to speed up your build process)
|
|
|
|
```
|
|
make
|
|
```
|
|
|
|
== On Fedora Linux ==
|
|
|
|
We assume that you have the source code of QGIS ready and created a
|
|
new subdirectory called `build` or `build-qt5` in it.
|
|
|
|
=== Install build dependencies ===
|
|
|
|
```
|
|
dnf install qt5-qtwebkit-devel qt5-qtlocation-devel qt5-qttools-static
|
|
qt5-qtscript-devel qca-qt5-devel python3-qt5-devel python3-qscintilla-qt5-devel
|
|
qscintilla-qt5-devel python3-qscintilla-devel python3-qscintilla-qt5
|
|
clang flex bison geos-devel gdal-devel sqlite-devel libspatialite-devel
|
|
qt5-qtsvg-devel qt5-qtxmlpatterns-devel spatialindex-devel expat-devel proj-devel
|
|
qwt-devel gsl-devel postgresql-devel
|
|
```
|
|
|
|
Make sure that your build directory is completely empty when you enter the
|
|
following command. Do never try to "re-use" an existing Qt4 build directory.
|
|
If you want to use `ccmake` or other interactive tools, run the following
|
|
command in the empty build directory once before starting to use the interactive
|
|
tools.
|
|
|
|
```
|
|
cmake -DENABLE_QT5=ON -DWITH_QWTPOLAR=OFF ..
|
|
```
|
|
|
|
If everything went ok you can finally start to compile. (As usual append a -jX
|
|
where X is the number of available cores option to make to speed up your build
|
|
process)
|
|
|
|
```
|
|
make
|
|
```
|
|
|
|
Run from the build directory
|
|
|
|
```
|
|
./output/bin/qgis
|
|
```
|
|
|
|
Or install to your system
|
|
|
|
|
|
```
|
|
make install
|
|
```
|