mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-23 00:02:38 -05:00
216 lines
6.6 KiB
Plaintext
216 lines
6.6 KiB
Plaintext
|
|
==Building with Microsoft Visual Studio==
|
|
|
|
This section describes how to build QGIS using Visual Studio on Windows. This
|
|
is currently also how the binary QGIS packages are made (earlier versions used
|
|
MinGW).
|
|
|
|
This section describes the setup required to allow Visual Studio to be used to
|
|
build QGIS.
|
|
|
|
===Visual C++ Community Edition===
|
|
|
|
The free (as in free beer) Community installer is available under:
|
|
|
|
http://download.microsoft.com/download/D/2/3/D23F4D0F-BA2D-4600-8725-6CCECEA05196/vs_community_ENU.exe
|
|
|
|
===Other tools and dependencies===
|
|
|
|
Download and install following packages:
|
|
|
|
|| Tool | Website |
|
|
| CMake | https://cmake.org/files/v3.7/cmake-3.7.2-win64-x64.msi |
|
|
| GNU flex, GNU bison and GIT | http://cygwin.com/setup-x86.exe (32bit) or http://cygwin.com/setup-x86_64.exe (64bit) |
|
|
| OSGeo4W | http://download.osgeo.org/osgeo4w/osgeo4w-setup-x86.exe (32bit) or http://download.osgeo.org/osgeo4w/osgeo4w-setup-x86_64.exe (64bit) |
|
|
| ninja | https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-win.zip |
|
|
|
|
OSGeo4W does not only provide ready packages for the current QGIS release and
|
|
nightly builds of master, but also offers most of the dependencies needs to
|
|
build it.
|
|
|
|
For the QGIS build you need to install following packages from cygwin:
|
|
- bison
|
|
- flex
|
|
- git
|
|
-
|
|
|
|
and from OSGeo4W (select //Advanced Installation//):
|
|
|
|
- expat
|
|
- fcgi
|
|
- gdal
|
|
- grass
|
|
- gsl-devel
|
|
- iconv
|
|
- libzip-devel
|
|
- libspatialindex-devel
|
|
- pyqt5
|
|
- python3-devel
|
|
- python3-qscintilla
|
|
- python3-nose2
|
|
- python3-future
|
|
- python3-pyyaml
|
|
- python3-mock
|
|
- python3-six
|
|
- qca-qt5-devel
|
|
- qca-qt5-libs
|
|
- qscintilla-qt5
|
|
- qt5-devel
|
|
- qt5-libs-debug
|
|
- qtwebkit-qt5-devel
|
|
- qtwebkit-qt5-libs-debug
|
|
- qwt-devel-qt5
|
|
- sip-qt5
|
|
- spatialite
|
|
- oci
|
|
- qtkeychain
|
|
- libzip
|
|
-
|
|
|
|
|
|
|
|
This will also select packages the above packages depend on.
|
|
|
|
If you install other packages, this might cause issues. Particularly, make sure
|
|
**not** to install the msinttypes package. It installs a stdint.h file in
|
|
OSGeo4W[64]\include, that conflicts with Visual Studio own stdint.h, which for
|
|
example breaks the build of the virtuallayer provider.
|
|
|
|
Earlier versions of this document also covered how to build all above
|
|
dependencies. If you're interested in that, check the history of this page in the Wiki
|
|
or the SVN repository.
|
|
|
|
|
|
=== Setting up the Visual Studio project with CMake ===
|
|
|
|
/!\ Consider this section as example. It tends to outdate, when OSGeo4W and
|
|
SDKs move on. ``ms-windows/osgeo4w/package-nightly.cmd`` is used for the
|
|
nightly builds and constantly updated and hence might contain necessary
|
|
updates that are not yet reflected here.
|
|
|
|
To start a command prompt with an environment that both has the VC++ and the OSGeo4W
|
|
variables create the following batch file (assuming the above packages were
|
|
installed in the default locations):
|
|
|
|
```
|
|
@echo off
|
|
set OSGEO4W_ROOT=C:\OSGeo4W
|
|
call "%OSGEO4W_ROOT%\bin\o4w_env.bat"
|
|
call "%OSGEO4W_ROOT%\bin\py3_env.bat"
|
|
call "%OSGEO4W_ROOT%\bin\qt5_env.bat"
|
|
|
|
set O4W_ROOT=%OSGEO4W_ROOT:\=/%
|
|
set LIB_DIR=%O4W_ROOT%
|
|
|
|
call "C:\Program Files\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
|
|
path %path%;C:\Program Files\Microsoft Visual Studio 14.0\VC\bin
|
|
|
|
path %PATH%;C:\Program Files\CMake\bin;c:\cygwin\bin
|
|
|
|
@set GRASS_PREFIX=c:/OSGeo4W/apps/grass/grass-7.2.1
|
|
@set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%\include
|
|
@set LIB=%LIB%;%OSGEO4W_ROOT%\lib;%OSGEO4W_ROOT%\lib
|
|
|
|
set LIB=%LIB%;%OSGEO4W_ROOT%\apps\Qt5\lib;%OSGEO4W_ROOT%\lib
|
|
set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%\apps\Qt5\include;%OSGEO4W_ROOT%\include
|
|
|
|
@cmd
|
|
```
|
|
|
|
Start the batch file and on the command prompt checkout the QGIS source from
|
|
git to the source directory ``QGIS``:
|
|
|
|
|
|
```
|
|
git clone git://github.com/qgis/QGIS.git
|
|
```
|
|
|
|
Create a 'build' directory somewhere. This will be where all the build output
|
|
will be generated.
|
|
|
|
Now run ``cmake-gui`` (still from ``cmd``) and in the //Where is the source code://
|
|
box, browse to the top level QGIS directory.
|
|
|
|
In the //Where to build the binaries:// box, browse to the 'build' directory you
|
|
created.
|
|
|
|
If the path to bison and flex contains blanks, you need to use the short name
|
|
for the directory (i.e. ``C:\Program Files`` should be rewritten to
|
|
``C:\Progra~n``, where ``n`` is the number as shown in `dir /x C:\``).
|
|
|
|
Verify that the 'BINDINGS_GLOBAL_INSTALL' option is not checked, so that python
|
|
bindings are placed into the output directory when you run the INSTALL target.
|
|
|
|
Hit ``Configure`` to start the configuration and select ``Visual Studio 9 2008``
|
|
and keep ``native compilers`` and click ``Finish``.
|
|
|
|
The configuration should complete without any further questions and allow you to
|
|
click ``Generate``.
|
|
|
|
Now close ``cmake-gui`` and continue on the command prompt by starting
|
|
``vcexpress``. Use File / Open / Project/Solutions and open the
|
|
qgis-x.y.z.sln File in your project directory.
|
|
|
|
Change ``Solution Configuration`` from ``Debug`` to ``RelWithDebInfo`` (Release
|
|
with Debug Info) or ``Release`` before you build QGIS using the ALL_BUILD
|
|
target (otherwise you need debug libraries that are not included).
|
|
|
|
After the build completed you should install QGIS using the INSTALL target.
|
|
|
|
Install QGIS by building the INSTALL project. By default this will install to
|
|
c:\Program Files\qgis<version> (this can be changed by changing the
|
|
CMAKE_INSTALL_PREFIX variable in cmake-gui).
|
|
|
|
You will also either need to add all the dependency DLLs to the QGIS install
|
|
directory or add their respective directories to your PATH.
|
|
|
|
=== Packaging ===
|
|
|
|
To create a standalone installer there is a perl script named 'creatensis.pl'
|
|
in 'qgis/ms-windows/osgeo4w'. It downloads all required packages from OSGeo4W
|
|
and repackages them into an installer using NSIS.
|
|
|
|
|
|
The script can be run on both Windows and Linux.
|
|
|
|
On Debian/Ubuntu you can just install the 'nsis' package.
|
|
|
|
NSIS for Windows can be downloaded at:
|
|
|
|
http://nsis.sourceforge.net
|
|
|
|
And Perl for Windows (including other requirements like 'wget', 'unzip', 'tar'
|
|
and 'bzip2') is available at:
|
|
|
|
http://cygwin.com
|
|
|
|
=== Packaging your own build of QGIS ===
|
|
|
|
Assuming you have completed the above packaging step, if you want to include
|
|
your own hand built QGIS executables, you need to copy them in from your
|
|
windows installation into the ms-windows file tree created by the creatensis
|
|
script.
|
|
|
|
```
|
|
cd ms-windows/
|
|
rm -rf osgeo4w/unpacked/apps/qgis/*
|
|
cp -r /tmp/qgis1.7.0/* osgeo4w/unpacked/apps/qgis/
|
|
```
|
|
|
|
Now create a package.
|
|
|
|
```
|
|
./quickpackage.sh
|
|
```
|
|
|
|
After this you should now have a nsis installer containing your own build
|
|
of QGIS and all dependencies needed to run it on a windows machine.
|
|
|
|
|
|
=== Osgeo4w packaging ===
|
|
|
|
The actual packaging process is currently not documented, for now please take a
|
|
look at:
|
|
|
|
//ms-windows/osgeo4w/package.cmd//
|