前言
本人通过 源码编译 得到sumo版本为1.18
环境:Windows 10
尝试了官方的源码编译步骤,建议使用命令行进行编译。
注意点
源码编译并不支持MinGW进行编译,只能使用Visual Studio的编译器进行编译
整个方法是参考github一位大佬 环境变量设置也基本一致 给出链接传送门
cmake .. -G "Visual Studio 16 2019 Win64"
上面这一句改成Visual Studio对应的版本,指定Visual Studio的编译器
问题及解决:
创建了一个test文件夹,将官方的例子test.cpp放在该文件夹下,再把test放在下载的源码sumo-main文件夹中(和src文件夹同级即可),编译运行。避免一些libsumo和libtraci头文件错误把
编译成功后,libsumo并不支持gui显示,但换成libtraci支持gui显示
步骤:
1.build SUMO
编译后会在源码bin文件夹目录下,生成dll之类的文件,但博主这生成的并不全,就把下面sumo-1.18-extra.zip下载下来,解压后并把sumo-1.18-extra的bin文件夹内容复制源码sumo-main对应的bin文件夹中
2.C:\project\sumo-main\test\build
本人的test.cpp(放在test目录下了)内容如下:
#include <iostream>
// #define HAVE_LIBSUMOGUI
// #include <libsumo/libsumo.h>
#include <libsumo/libtraci.h>
// using namespace libsumo;
using namespace libtraci;
int main(int argc, char* argv[]) {
int step = 0;
//Simulation::start({"sumo-gui", "-c", "C:/project/sumo-main/test/data/exa.sumocfg"});
libtraci::Simulation::start({"sumo-gui", "-c", "C:/project/sumo-main/test/data/exa.sumocfg"});
while (step<50000)
{
Simulation::step();
step++;
}
Simulation::close();
}
代码中给出的是调用libtraci,能够显示出gui界面。所注释掉的是采用libsumo不能显示gui。
3.编写CMakeLists.txt文件:
cmake_minimum_required(VERSION 3.15)
project(test CXX)
if (NOT "$ENV{SUMO_HOME}" STREQUAL "")
SET(sumo_home "$ENV{SUMO_HOME}" CACHE INTERNAL "Copied from environment variable")
endif()
include_directories("${sumo_home}/src")
link_directories("${sumo_home}/bin")
set(SUMO_DIR "${sumo_home}/cmake-build")
find_package(SUMO CONFIG REQUIRED)
add_executable(test test.cpp)
# target_link_libraries(test PUBLIC SUMO::libsumocpp)
target_link_libraries(test PUBLIC SUMO::libtracicpp)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
4.打开cmd,cd进入到test文件夹中的build文件夹中,输入以下命令
cd build
cmake --build . --config Release
cd Realease
test.exe
5.运行成功,则会有gui显示
总结
相比之下,还是Linux下sumo和c++联立方便快捷