本文档描述了如何仅使用免费可用(这并不意味着“开源”)的工具在 Windows 下构建 SUMO。关于如何使用开源工具链在 Windows 下构建 SUMO 的说明包含在我们的 在 Linux 上构建 页面中。请注意,您也可以 下载预构建的 Windows 二进制文件。
先决条件#
- 安装 Visual Studio Community、Professional 或 Enterprise 2017 或更高版本
- 适用于 Windows 的 CMake
- Python 3.X
- SUMO 源代码(解压后的 src zip 包或 git 克隆,参见 获取源代码)
- 安装的库(Xerces-C、Proj、Fox),最好通过克隆 https://github.com/DLR-TS/SUMOLibraries/ 来安装
- 确保
SUMO_LIBRARIES环境变量指向您克隆的目录,以防您没有将库放在与 SUMO 仓库相同的目录中 - 请注意,如果您没有管理员权限,仍然可以仅为您自己配置环境变量
- 确保
推荐的 Windows 设置#
- 下载 Visual Studio Community Edition
- 启动安装程序并选择:
- Python 开发(包括原生工具)
- 使用 C++ 的桌面开发
- 启动安装程序并选择:

- 克隆 https://github.com/eclipse-sumo/sumo 或打开您现有的本地 SUMO 文件夹
- 转到团队资源管理器
- 选择“管理连接”,然后“本地 Git”->克隆 https://github.com/DLR-TS/SUMOLibraries
- 现在请耐心等待,直到 CMake 开始配置
- 如果没有自动开始,或者您想重新配置,请选择 项目->生成缓存(如果此选项不存在,您可能需要稍等片刻,直到 Visual Studio 完成所有准备工作)
- 选择 生成->生成全部(在早期版本中为 CMake->生成全部)
- 设置 SUMO_HOME 环境变量
- 安装 Texttest https://sourceforge.net/projects/texttest/files/latest/download
可以使用 Visual Studio 中的 项目 -> CMake 设置 轻松修改、加载和保存 CMake 设置。

使用 Visual Studio 编辑 CMake 设置
可选但仍推荐的步骤#
- 安装 Notepad++
- 安装 TortoiseGit
- 安装 Git 命令行工具(如果您安装了 TortoiseGit,这是必须的)
- 如果您决定使用 Visual Studio 自带的 Python
- 测试启动一个 python 脚本并添加关联
- 将 Python 添加到路径(还包括 Scripts 目录),通常在
C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64中找到 - 按照 https://docs.microsoft.com/en-us/visualstudio/python/tutorial-working-with-python-in-visual-studio-step-05-installing-packages?view=vs-2019 的说明安装 pyautogui、scipy、rtree、pyproj、lxml
- 否则,使用
pip install -r tools\requirements.txt -r tools\req_dev.txt,如果您没有管理员权限,可能需要加上--user选项
- (30 天后)设置一个 Microsoft 帐户(如果您还没有)并注册您的 Visual Studio
更多说明#
如果您需要不同的 Python 版本或想使用多个 Python 进行测试,您可以直接从 Visual Studio 安装它们,或者 下载适用于 Windows 的 Python 并进行安装。大多数 SUMO 工具应该同时兼容 Python 2 和 3。请确保按照上述说明安装推荐的 Python 模块,并且 PATH 环境变量包含所需 Python 解释器所在的目录。
如果您想在调试模式下构建 SUMO,则需要 Python 调试二进制文件。Visual Studio 自带的 Python 解释器默认不安装这些库(至少在 Visual Studio Community 2022 的情况下);您需要在上述 Python 和 C++ 开发堆栈 之外额外安装 Data Science stack。更准确地说,您需要的组件称为 Python native development tools,请确保选中正确的复选框。
如果您想克隆/检出特定的 SUMO 版本,当然可以从命令行进行(如果您已安装命令行工具),使用 git clone --recursive https://github.com/eclipse-sumo/sumo 或下载并解压源代码包,请参阅 下载。
库 的命令是:git clone --recursive https://github.com/DLR-TS/SUMOLibraries。如果您没有将库放在与 SUMO 相同的文件夹中,则需要将 SUMO_LIBRARIES 环境变量设置为该目录。
如果 Visual Studio 第一次尝试失败,很可能是因为 SUMOLibraries 尚未克隆或位于不寻常的位置。错误通常是由于找不到 Xerces 导致的。请尝试:
- 选择 项目->"生成缓存" 重试(在早期的 Visual Studio 版本中是 CMake->生成)或参见 下文。
调整设置#
如果您需要修改设置,可以通过在您喜欢的文本编辑器中打开 CMakeCache.txt 或通过 项目->CMake-Cache 菜单进行编辑。以下内容可能有用:
- 如果找不到库,请将
SUMO_LIBRARIES:PATH设置为类似C:/Users/tests/source/repos/SUMOLibraries的路径,然后重试 - 如果找到了错误的 Python 解释器或库,请编辑 PYTHON_* 变量
- 如果您想禁用 GUI (Fox) 的构建或 Proj 的使用,请将相应的库条目设置为空字符串
- 为了在图形应用程序 sumo-gui 和 netedit 的 Release 构建中启用控制台输出,请设置 CONSOLE_RELEASE=1
要进行调试构建,您不应在缓存文件中更改 CMAKE_BUILD_TYPE。您应该在 GUI 中选择不同的配置。
库#
我们在 https://github.com/DLR-TS/SUMOLibraries 提供了一个获取所有依赖库的中心位置。最简单的方法是克隆此存储库并定义一个指向结果目录的环境变量 SUMO_LIBRARIES。它们是使用 Visual Studio 2019 构建的,但也可以用于早期和后期版本。您可能需要安装 Visual C++ 2019 Redistributable 才能运行 SUMO(已使用 Visual Studio 2019 测试)。
有关构建您自己的库以及如何使用不同版本和附加库的详细信息,请参阅 Installing/Windows_Libraries。您可能需要编辑您的 CMakeCache.txt 以使用自制的库。
vcpkg 支持#
如果您无法使用 SUMOLibraries 或想从源代码构建(可能是针对不同的平台,或者因为您想启用或禁用库中的某些功能),您也可以尝试针对 vcpkg 进行构建。设置遵循以下基本步骤:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg install arrow gdal xerces-c gettext fmt eigen3
除非您确定所有构建都将使用 vcpkg 库,否则不应调用 ./vcpkg integrate install,因为如果您以后决定针对 SUMOLibraries 构建,它可能会搞乱您的环境。相反,您应该将 -DCMAKE_TOOLCHAIN_FILE=<vcpkg-root>/scripts/buildsystems/vcpkg.cmake 添加到您的 cmake 选项中。
不幸的是,FOX 工具包仍然缺失于 vcpkg,因此您无法仅使用 vcpkg 构建任何 GUI 应用程序。
安装 Python 包#
为了从命令行或在 netedit 中使用 SUMO Python 工具,建议安装一系列 Python 包。从您的 SUMO 目录中,您可以使用 pip 安装它们:
pip install -r tools\requirements.txt
手动 CMake 配置#
方法 1:通过 CMake GUI#
- 启动 CMake GUI
- 选择源路径(例如 D:\projects\sumo)
- 选择构建路径(例如 D:\projects\sumo\cmake-build)
- 它可以与源路径相同,但我们建议将它们分开
- 必要时将创建构建目录
- 按下 "Configure" 按钮开始配置
- 选择编译器(默认即可)
- 选择平台
x64
- 点击 "Generate" 创建 Visual Studio 解决方案
- 使用文件资源管理器或点击 "Open Project" 打开生成的解决方案(.sln 文件)(例如 D:\projects\sumo\cmake-build\SUMO.sln)
- 构建您想要的配置
- 二进制文件将出现在 D:\projects\sumo\bin
可视化指南:
在 CMake GUI 中选择解决方案(Visual Studio、Eclipse 等)
库已成功配置
生成的解决方案
方法 2:通过 CMake 命令行#
- 转到源路径(例如
cd D:\projects\sumo) - 创建一个构建目录(例如
mkdir cmake-build && cd cmake-build) - 使用正确的 Visual Studio 版本运行 CMake(例如
cmake .. -G "Visual Studio 16 2019 Win64")- 要查看所有可能的生成器列表,请运行
cmake --help
- 要查看所有可能的生成器列表,请运行
- 打开解决方案 D:\projects\sumo\cmake-build\SUMO.sln
- 或者使用
cmake --build . --config Release从命令行构建
- 或者使用
测试#
如果您计划自己扩展 SUMO,或者只是想知道是否所有内容都编译成功,强烈建议查看 Developer/Tests。该工具使检查现有功能是否因扩展而损坏变得更加容易。
CLang#
如果您想在 Windows 下使用 CLang 进行编译,只需在 CMake 的 "Optional Toolset" (-T) 中添加 "ClangCL"。
故障排除#
- 关于安装路径的说明:MSVC 似乎难以处理包含空格的 include 和 library 路径(例如
C:\Program Files)。因此,请尽量避免将 SUMO 或任何库安装在此类路径中。 - 找不到 Python
- 确保没有安装两个不同的 Python 版本
- 可以手动指定 Python 库(例如
<PythonFolder\>\\libs\\python<version\>.lib)
CMake 缓存中的 Python 库字段
同时存在两个不同的 Python 版本
链接器报告类似 "LINK : fatal error LNK1104: cannot open file 'C:\Program.obj'" 的错误#
您可能将库安装到了名称中包含空格的路径中。在这种情况下,相应的环境变量应该用引号 (") 括起来。
示例:set FOX="D:\my libs\fox-1.6.36"
预构建事件失败(缺少 version.h 或 *typemap.h)#
如果 Visual Studio 报告预构建事件失败,您可以安全地忽略此问题,除非您是从源代码仓库构建的。在这种情况下,您可能需要安装 Python。即使安装了 Python,文件关联也可能已损坏,这会导致通过 tools/build_config/version.py 脚本生成 src/version.h 失败。要么修复您的文件关联,要么在 src/config.h.cmake 中取消定义 HAVE_VERSION_H。
如果您正确安装了 Python,请仔细检查它是否传递了命令行参数。作为快速修复,您也可以手动执行以下命令:
tools\build\version.py
tools\build\typemap.py
无法执行程序,因为找不到 MSVCR120.dll/MSVCR140.dll#
安装 Microsoft Visual C++ Redistributable Packages for Visual Studio(对于 MSVCR120.dll,请使用 Visual Studio 2013 版本)。您可以使用 Dependencies 检查所有依赖项是否正确。

在调试模式下,无法执行程序,因为找不到 MSVCR120D.dll/MSVCR140D.dll#
您的 Visual Studio 版本不支持调试,您只能在发布模式下编译。
如何构建 JuPedSim 然后使用 JuPedSim 构建 SUMO#
在本节中,您将学习如何构建最新版本的行人模拟器 JuPedSim,以及如何使用此最新版本的 JuPedSim 编译 SUMO,以防 SUMO 自带的 JuPedSim 发布版本不能满足您的需求。您可以参考 JuPedSim 的构建过程此处;下文提出了类似的过程。首先,克隆 JuPedSim 仓库:
git clone https://github.com/PedestrianDynamics/jupedsim.git
在仓库目录之外,但在同一级别,创建两个目录 jupedsim-build 和 jupedsim-install(例如),然后输入:
cd jupedsim-build
cmake -DCMAKE_INSTALL_PREFIX=../jupedsim-install ..
cmake --build . --config Release
cmake --install . --config Release
您也可以将配置更改为 Debug,并像往常一样在 CMake 中启用多线程。现在要将最新版本的 JuPedSim 集成到 SUMO 中,请遵循 Windows 的标准构建过程:由于 JuPedSim 安装文件夹与 SUMO 处于同一级别,它将被自动找到。或者,您可以在调用 CMake 时设置 JUPEDSIM_CUSTOMDIR 来通知 CMake JuPedSim 的安装位置。
有关在 SUMO 内部使用 JuPedSim 的更多说明,请参阅此页面。
