mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-25 00:58:06 -05:00
Merge pull request #4990 from imiara/master
Updated instructions on building QGIS master under MSVC 2015
This commit is contained in:
commit
cab6a4b648
145
doc/msvc.t2t
145
doc/msvc.t2t
@ -1,9 +1,8 @@
|
||||
|
||||
==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 how to build QGIS using Visual Studio (MSVC) 2015 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.
|
||||
@ -24,10 +23,10 @@ Download and install following packages:
|
||||
| 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.
|
||||
|
||||
cygwin:
|
||||
You should install cygwin to c:\cygwin (and not c:\cygwin64, which is the default for the x64)
|
||||
otherwise you would need to edit some batch files.
|
||||
|
||||
For the QGIS build you need to install following packages from cygwin:
|
||||
- bison
|
||||
- flex
|
||||
@ -41,16 +40,18 @@ and from OSGeo4W (select //Advanced Installation//):
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
|
||||
ninja:
|
||||
copy ninja.exe to d:\OSGeo4W64\bin\
|
||||
|
||||
=== Setting up the Visual Studio project with CMake ===
|
||||
|
||||
/!\ Consider this section as example. It tends to outdate, when OSGeo4W and
|
||||
@ -64,75 +65,113 @@ installed in the default locations):
|
||||
|
||||
```
|
||||
@echo off
|
||||
set OSGEO4W_ROOT=C:\OSGeo4W
|
||||
|
||||
set OSGEO4W_ROOT=D:\OSGeo4W64
|
||||
call "%OSGEO4W_ROOT%\bin\o4w_env.bat"
|
||||
call "%OSGEO4W_ROOT%\bin\py3_env.bat"
|
||||
call "%OSGEO4W_ROOT%\bin\qt5_env.bat"
|
||||
call "%OSGEO4W_ROOT%\bin\py3_env.bat"
|
||||
|
||||
set O4W_ROOT=%OSGEO4W_ROOT:\=/%
|
||||
set LIB_DIR=%O4W_ROOT%
|
||||
set VS140COMNTOOLS=%PROGRAMFILES(x86)%\Microsoft Visual Studio 14.0\Common7\Tools\
|
||||
call "%PROGRAMFILES(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
|
||||
|
||||
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
|
||||
set INCLUDE=%INCLUDE%;%PROGRAMFILES(x86)%\Microsoft SDKs\Windows\v7.1A\include
|
||||
set LIB=%LIB%;%PROGRAMFILES(x86)%\Microsoft SDKs\Windows\v7.1A\lib
|
||||
|
||||
path %PATH%;C:\Program Files\CMake\bin;c:\cygwin\bin
|
||||
path %PATH%;%PROGRAMFILES%\CMake\bin;c:\cygwin\bin
|
||||
|
||||
@set GRASS_PREFIX=c:/OSGeo4W/apps/grass/grass-7.2.1
|
||||
@set GRASS_PREFIX="%OSGEO4W_ROOT%\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
|
||||
Save the batch file as ``d:\OSGeo4W64\OSGeo4W-dev.bat`` and run it.
|
||||
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.
|
||||
Using package-nightly.cmd to create the MSVC solution file:
|
||||
We will be using the file ms-windows/osgeo4w/package-nightly.cmd to create an MSVC solution file.
|
||||
There are a few options for a solution file, following are the options: ninja, native MSVC.
|
||||
The advantage of using native MSVC solution is that you can find the root of build problems much easily.
|
||||
Currently the package-nightly.cmd file creates a ninja solution.
|
||||
In order to modify it to create an MSVC solution instead, edit it and replace the following line:
|
||||
|
||||
``cmake -G Ninja ^``
|
||||
with
|
||||
``cmake -G "Visual Studio 14 2015 Win64" ^``
|
||||
|
||||
Currently, package-nightly.cmd will also build QGIS. if you want it only to create the solution file,
|
||||
then following the line:
|
||||
``if errorlevel 1 (echo cmake failed & goto error)``
|
||||
add the following line:
|
||||
``goto end``
|
||||
|
||||
Running package-nightly.cmd:
|
||||
Run the batch file OSGeo4W-dev.bat you created before. On the command prompt run:
|
||||
```
|
||||
package-nightly.cmd 2.99.0 1 qgis-dev x86_64
|
||||
```
|
||||
|
||||
Compiling QGIS with MSVC:
|
||||
We will need to run MSVC with all the environment variables set, thus we will run it as follows:
|
||||
Run the batch file OSGeo4W-dev.bat you created before. On the command prompt run: ``devenv``
|
||||
From MSVC, open the solution file
|
||||
``d:\OSGeo4W64\QGIS\ms-windows\osgeo4w\build-qgis-dev-x86_64\qgis2.99.0.sln``
|
||||
Try to build the solution [go grab a cup of tea, it may take a while].
|
||||
If it fails, run it again and again until there are [hopefully] no errors.
|
||||
|
||||
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.
|
||||
Running QGIS from within MSVC:
|
||||
Edit the properties of the project ALL_BUILD:
|
||||
Debugging -> Command -> D:\OSGeo4W64\QGIS\ms-windows\osgeo4w\build-qgis-dev-x86_64\output\bin\RelWithDebInfo\qgis.exe
|
||||
Run.
|
||||
Ignore the "These projects are out of date" message, it appeares even if no files were was changed.
|
||||
|
||||
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.
|
||||
Old alternative method that might still work using cmake-gui:
|
||||
Create a 'build' directory somewhere. This will be where all the build output
|
||||
will be generated.
|
||||
|
||||
Hit ``Configure`` to start the configuration and select ``Visual Studio 9 2008``
|
||||
and keep ``native compilers`` and click ``Finish``.
|
||||
Now run ``cmake-gui`` (still from ``cmd``) and in the //Where is the source code://
|
||||
box, browse to the top level QGIS directory.
|
||||
|
||||
The configuration should complete without any further questions and allow you to
|
||||
click ``Generate``.
|
||||
In the //Where to build the binaries:// box, browse to the 'build' directory you
|
||||
created.
|
||||
|
||||
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.
|
||||
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:\``).
|
||||
|
||||
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).
|
||||
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.
|
||||
|
||||
After the build completed you should install QGIS using the INSTALL target.
|
||||
Hit ``Configure`` to start the configuration and select ``Visual Studio 9 2008``
|
||||
and keep ``native compilers`` and click ``Finish``.
|
||||
|
||||
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.
|
||||
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 ===
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user