Difference between revisions of "Installing/Windows Build"

From Sumo
Jump to navigation Jump to search
(Libraries)
Line 2: Line 2:
 
available (this does '''not''' mean "open source") tools. Instructions on how to build SUMO on Windows using an Open Source toolchain are included in our [[Installing/Linux Build|building on Linux]] pages. Please note that you may also [[Downloads|download pre-built Windows binaries]].
 
available (this does '''not''' mean "open source") tools. Instructions on how to build SUMO on Windows using an Open Source toolchain are included in our [[Installing/Linux Build|building on Linux]] pages. Please note that you may also [[Downloads|download pre-built Windows binaries]].
  
Please read the whole document before you start, there are some detours and shortcuts included.
+
*Download [https://www.visualstudio.com/vs/community/ Visual C++ Community Edition]. SUMO is only compatible with Visual Studio 2013 or higher. If you are using Windows 8 or later be sure to download Visual Studio Express for Windows ''Desktop''. Please install all the available Service Packs for Visual Studio as well. Note that with Visual Studio Express 2017 SUMO only can be compiled '''in Release Mode'''.  
 
+
*[http://www.python.org/download/ Download Python for Windows] and install it. Our most preferred version is Python 2.7.x for the 32 bit platform, but you may try Python 3 and / or 64bit as well. Please be aware that the test environment needs Python 2.7
If you do not need the GUI, you can skip everything concerning Fox.
 
If you do not need precise geodata conversion, you can skip everything concerning GDAL, Proj.
 
 
 
*Download [https://www.visualstudio.com/vs/visual-studio-express/ Visual C++ Express Edition]. SUMO is only compatible with Visual Studio 2013 or higher. If you are using Windows 8 or later be sure to download Visual Studio Express for Windows ''Desktop''. Please install all the available Service Packs for Visual Studio as well. Note that with Visual Studio Express 2017 SUMO only can be compiled '''in Release Mode'''.  
 
*[http://www.python.org/download/ Download Python for Windows] and install it. Our most preferred version is Python 2.7.x for the 32 bit platform, but you may try Python 3 and / or 64bit as well.  
 
 
*Download and extract [http://sumo.dlr.de/daily/sumo-src-git.zip sumo-src-git.zip] or a different version (or use a repository checkout, see [[Downloads]])
 
*Download and extract [http://sumo.dlr.de/daily/sumo-src-git.zip sumo-src-git.zip] or a different version (or use a repository checkout, see [[Downloads]])
 
*Note on installation paths: MSVC seems to have difficulties with include and library paths containing spaces (for instance <tt>C:\Program Files</tt>). Thus try to avoid installing SUMO or any of the libraries in such paths.
 
*Note on installation paths: MSVC seems to have difficulties with include and library paths containing spaces (for instance <tt>C:\Program Files</tt>). Thus try to avoid installing SUMO or any of the libraries in such paths.
Line 15: Line 10:
  
 
==Libraries==
 
==Libraries==
There are two ways of telling the SUMO build where to find its libraries. Either via environment variables or by editing a config file. This document only describes the latter (easier) way, for details on the former and also on how to use different versions and additional libraries see [[Installing/Windows_Libraries]].
+
We provide a central location for getting all dependent libraries at https://github.com/DLR-TS/SUMOLibraries. The easiest way is to clone this repository and define an environment variable
*Download the [http://xml.apache.org/xerces-c/ Xerces-C] and [http://www.fox-toolkit.org/ Fox] prebuilt [http://sourceforge.net/projects/sumo/files/dependencies/ binaries, libraries and headers] and extract them.
+
SUMO_LIBRARIES pointing to the resulting directory. They are built with Visual Studio 2017, but may be used with earlier and later versions as well. You may need to install the Visual C++ 2017 Runtime Distributable for running SUMO then (tested with Visual Studio 2013). For details on building your own and also on how to use different versions and additional libraries see [[Installing/Windows_Libraries]]. Now continue with the [[Installing/Windows_CMake|CMake build instructions]].
** For the Win32 build with Visual Studio 2013 you currently need the [http://sourceforge.net/projects/sumo/files/dependencies/xerces-c-3.2.0-win32vc12.zip/download Xerces-C binaries] and the [http://sourceforge.net/projects/sumo/files/dependencies/fox-1.6.54vc12.zip/download Fox toolkit binaries]
 
** For the x64 build with Visual Studio 2013 you currently need the [http://sourceforge.net/projects/sumo/files/dependencies/xerces-c-3.2.0-win64vc12.zip/download Xerces-C binaries] and the [http://sourceforge.net/projects/sumo/files/dependencies/fox-1.6.54_64vc12.zip/download Fox toolkit binaries]
 
** They are built with Visual Studio 2013, but may be used with earlier and later versions as well. You may need to install the Visual C++ 2013 Runtime Distributable for running SUMO then (tested with Visual Studio 2010).
 
** For Visual Studio 2017 you might need the libaries build with 2017 (because of incompatibilities with some Fox headers and sources). You can download them here: https://github.com/DLR-TS/SUMOLibraries
 
*Download the binary packages for PROJ and GDAL provided at http://www.gisinternals.com/release.php
 
**For the Win32 build with Visual Studio you currently need http://download.gisinternals.com/sdk/downloads/release-1800-gdal-2-1-3-mapserver-7-0-4.zip and http://download.gisinternals.com/sdk/downloads/release-1800-gdal-2-1-3-mapserver-7-0-4-libs.zip
 
**For the x64 build with Visual Studio you currently need http://download.gisinternals.com/sdk/downloads/release-1800-x64-gdal-2-1-3-mapserver-7-0-4.zip and http://download.gisinternals.com/sdk/downloads/release-1800-x64-gdal-2-1-3-mapserver-7-0-4-libs.zip
 
**Create a new directory and extract both files into that dir (if you download 64bit as well, create a separate dir and extract them there)
 
*There are also [[Installing/Windows_CMake|CMake build instructions]] available.
 
*Execute <SUMO>\tools\build\pythonPropsMSVC.py
 
*Edit the generated <SUMO>\build\msvc10\config.props and enter the paths of all the directories above. An example may look like this:
 
<pre>
 
<?xml version="1.0" encoding="utf-8"?>
 
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 
  <PropertyGroup Label="UserMacros">
 
    <XERCES>D:\lib\xerces-c-3.2.0-win32</XERCES>
 
    <PROJ_GDAL>D:\lib\release-1800-gdal-2-1-3-mapserver-7-0-4</PROJ_GDAL>
 
    <FOX16>D:\lib\fox-1.6.54</FOX16>
 
    <OSG>$(OSG)</OSG>
 
    <FFMPEG>$(FFMPEG)</FFMPEG>
 
    <PYTHON_LIB>C:\Python27\libs\python27.lib</PYTHON_LIB>
 
    <PYTHON_DEBUG_LIB>C:\Python27\libs\python27.lib</PYTHON_DEBUG_LIB>
 
    <PYTHON_INCLUDE_DIR>C:\Python27\include</PYTHON_INCLUDE_DIR>
 
    <XERCES_64>D:\lib\xerces-c-3.2.0-win64</XERCES_64>
 
    <PROJ_GDAL_64>D:\lib\release-1800-x64-gdal-2-1-3-mapserver-7-0-4</PROJ_GDAL_64>
 
    <FOX16_64>D:\lib\fox-1.6.54_64</FOX16_64>
 
    <OSG_64>$(OSG_64)</OSG_64>
 
    <FFMPEG_64>$(FFMPEG_64)</FFMPEG_64>
 
    <PYTHON_64_LIB></PYTHON_64_LIB>
 
    <PYTHON_64_DEBUG_LIB></PYTHON_64_DEBUG_LIB>
 
    <PYTHON_64_INCLUDE_DIR></PYTHON_64_INCLUDE_DIR>
 
  </PropertyGroup>
 
</Project>
 
</pre>
 
 
*Add all directories containing dlls (XERCES\bin, PROJ_GDAL\bin, FOX16\lib) to your PATH or copy the dlls into a directory which is in your PATH.
 
*Add all directories containing dlls (XERCES\bin, PROJ_GDAL\bin, FOX16\lib) to your PATH or copy the dlls into a directory which is in your PATH.
 
**If you build for 64 bit and for 32 bit be sure that you add both dirs and that you add the 64 bit dir before the 32 bit dir.
 
**If you build for 64 bit and for 32 bit be sure that you add both dirs and that you add the 64 bit dir before the 32 bit dir.
  
==SUMO==
+
==Tests==
 
 
===Configuration===
 
*If you installed all libraries and edited the config.props (or defined the environment variables) correctly there is no need for further configuration and you can skip to the build section.
 
*The Visual Studio build is configured using .props files in the build/msvc10 subdirectory. If you change some settings which should apply to all subprojects, be sure to edit those files (either with a text editor or the property manager of Visual Studio) and not the project configuration (.vcxproj).
 
*Even if you generated the config.props as above, you can still define the places of the includes and libraries via environment variables (just refer to them as in the example above). If you want to disable certain features, set the config entry to the empty string. Everything but Xerces is optional, but without Fox it is not possible to build the GUI related projects.
 
 
 
===Build===
 
*Open the project <SUMO>\build\msvc10\prj.sln and build the [[#Available configurations|configurations]] you need.
 
*For some [[Tools/Emissions|additional emission tools]] you need to open <SUMO>\build\msvc10\tools.sln and build them as well
 
*You will find the results in <SUMO>\bin
 
 
 
===Test===
 
 
*If you plan to extend SUMO yourself, or just want to know whether everything compiled OK, it is strongly recommended to have a look at [[Developer/Tests]]. This tool makes it easier to check whether some existing functionality was broken by the extensions.
 
*If you plan to extend SUMO yourself, or just want to know whether everything compiled OK, it is strongly recommended to have a look at [[Developer/Tests]]. This tool makes it easier to check whether some existing functionality was broken by the extensions.
  
Line 76: Line 25:
 
If Visual Studio reports a failed pre-build event you can safely ignore this, unless you are building from the [[FAQ#How_do_I_access_the_code_repository.3F|source code repository]]. In this case you should probably install Python. Even if python is installed the file associations may be broken which causes the generation of src/version.h via tools/build/version.py to fail. Either repair your file associations or undefine HAVE_VERSION_H in src/windows_config.h.
 
If Visual Studio reports a failed pre-build event you can safely ignore this, unless you are building from the [[FAQ#How_do_I_access_the_code_repository.3F|source code repository]]. In this case you should probably install Python. Even if python is installed the file associations may be broken which causes the generation of src/version.h via tools/build/version.py to fail. Either repair your file associations or undefine HAVE_VERSION_H in src/windows_config.h.
  
If you did install Python correctly, double check that it passes [http://stackoverflow.com/questions/2640971/windows-is-not-passing-command-line-arguments-to-python-programs-executed-from-t command line arguments]. For a quick fix, you can also execute the following three commands manually:
+
If you did install Python correctly, double check that it passes [http://stackoverflow.com/questions/2640971/windows-is-not-passing-command-line-arguments-to-python-programs-executed-from-t command line arguments]. For a quick fix, you can also execute the following commands manually:
 
  tools\build\version.py
 
  tools\build\version.py
 
  tools\build\typemap.py
 
  tools\build\typemap.py
tools\build\typemap.py poly
 
  
 
===Execution cannot proceed because MSVCR120.dll/MSVCR140.dll was not found===
 
===Execution cannot proceed because MSVCR120.dll/MSVCR140.dll was not found===
Line 92: Line 40:
  
 
== Available configurations ==
 
== Available configurations ==
The release build is used for the distribution of sumo. The Fastbuild is suitable for frequent recompilation and the Debug build allows all debugging features. Keep in mind that [[Developer/Tests|Texttest]] usually picks up the release build.
+
The release build is used for the distribution of sumo. The Debug build allows all debugging features. Keep in mind that [[Developer/Tests|Texttest]] usually picks up the release build.
  
 
* Release:  All optimizations, assertions disabled, no debugging symbols, links against external release libs
 
* Release:  All optimizations, assertions disabled, no debugging symbols, links against external release libs
* Fastbuild: Fewer optimizations, assertions disabled, debugging symbols included, links against external release libs
 
 
* Debug: No optimizations, assertions enabled, debugging symbols included, links against external debug libs
 
* Debug: No optimizations, assertions enabled, debugging symbols included, links against external debug libs
  
Left clicking over Solution/Properties/Configuration Manager allow to change between configurations, as well as between 32 and 64 bits compilation:
+
Left clicking over Solution/Properties/Configuration Manager allow to change between configurations:
  
 
<gallery widths="450px" heights="280px" perrow="5">
 
<gallery widths="450px" heights="280px" perrow="5">
Line 104: Line 51:
 
</gallery>
 
</gallery>
  
Naming Conventions: 64bit executables have the same name as their 32bit counterpart. The Debug build additionally carries the suffix 'D' whereas the Fastbuild uses the 'F' suffix.
+
To switch to a different platform (e.g. 32bit instead of 64 bit) please run cmake again with a different generator.
 +
 
 +
Naming Conventions: 64bit executables have the same name as their 32bit counterpart. The Debug build additionally carries the suffix 'D'.

Revision as of 12:04, 28 May 2018

This document describes how to build SUMO under MS-Windows using only freely available (this does not mean "open source") tools. Instructions on how to build SUMO on Windows using an Open Source toolchain are included in our building on Linux pages. Please note that you may also download pre-built Windows binaries.

  • Download Visual C++ Community Edition. SUMO is only compatible with Visual Studio 2013 or higher. If you are using Windows 8 or later be sure to download Visual Studio Express for Windows Desktop. Please install all the available Service Packs for Visual Studio as well. Note that with Visual Studio Express 2017 SUMO only can be compiled in Release Mode.
  • Download Python for Windows and install it. Our most preferred version is Python 2.7.x for the 32 bit platform, but you may try Python 3 and / or 64bit as well. Please be aware that the test environment needs Python 2.7
  • Download and extract sumo-src-git.zip or a different version (or use a repository checkout, see Downloads)
  • Note on installation paths: MSVC seems to have difficulties with include and library paths containing spaces (for instance C:\Program Files). Thus try to avoid installing SUMO or any of the libraries in such paths.
Note:
Please note that for compiling a repository checkout Python has to be installed on your system.

Libraries

We provide a central location for getting all dependent libraries at https://github.com/DLR-TS/SUMOLibraries. The easiest way is to clone this repository and define an environment variable SUMO_LIBRARIES pointing to the resulting directory. They are built with Visual Studio 2017, but may be used with earlier and later versions as well. You may need to install the Visual C++ 2017 Runtime Distributable for running SUMO then (tested with Visual Studio 2013). For details on building your own and also on how to use different versions and additional libraries see Installing/Windows_Libraries. Now continue with the CMake build instructions.

  • Add all directories containing dlls (XERCES\bin, PROJ_GDAL\bin, FOX16\lib) to your PATH or copy the dlls into a directory which is in your PATH.
    • If you build for 64 bit and for 32 bit be sure that you add both dirs and that you add the 64 bit dir before the 32 bit dir.

Tests

  • If you plan to extend SUMO yourself, or just want to know whether everything compiled OK, it is strongly recommended to have a look at Developer/Tests. This tool makes it easier to check whether some existing functionality was broken by the extensions.

Troubleshooting

Linker reports something similar to "LINK : fatal error LNK1104: cannot open file 'C:\Program.obj'"

You probably have installed a library to a path containing white spaces in its name. In such a case, the according environment variable should be embedded in quotes (").
Example: set FOX="D:\my libs\fox-1.6.36".

Failure on pre-build event (missing version.h or *typemap.h)

If Visual Studio reports a failed pre-build event you can safely ignore this, unless you are building from the source code repository. In this case you should probably install Python. Even if python is installed the file associations may be broken which causes the generation of src/version.h via tools/build/version.py to fail. Either repair your file associations or undefine HAVE_VERSION_H in src/windows_config.h.

If you did install Python correctly, double check that it passes command line arguments. For a quick fix, you can also execute the following commands manually:

tools\build\version.py
tools\build\typemap.py

Execution cannot proceed because MSVCR120.dll/MSVCR140.dll was not found

Install Microsoft Visual C++ Redistributable Packages for Visual Studio 2012 (for MSVCR120.dll) or Microsoft Visual C++ Redistributable Packages for Visual Studio 2015 (for MSVCR140.dll). You can check if all dependences are correct using Dependencies

In debug mode, execution cannot proceed because MSVCR120D.dll/MSVCR140D.dll was not found

Your version of Visual Studio doesn't support Debugging, only can be compiled in release mode.

Available configurations

The release build is used for the distribution of sumo. The Debug build allows all debugging features. Keep in mind that Texttest usually picks up the release build.

  • Release: All optimizations, assertions disabled, no debugging symbols, links against external release libs
  • Debug: No optimizations, assertions enabled, debugging symbols included, links against external debug libs

Left clicking over Solution/Properties/Configuration Manager allow to change between configurations:

To switch to a different platform (e.g. 32bit instead of 64 bit) please run cmake again with a different generator.

Naming Conventions: 64bit executables have the same name as their 32bit counterpart. The Debug build additionally carries the suffix 'D'.