windows环境源码编译SUMO调用c++接口libsumo和libtraci

前言

本人通过 源码编译 得到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++联立方便快捷

### 如何在 Ubuntu 上用 C++ 进行 SUMO 开发与配置 #### 准备工作环境 为了能够在Ubuntu上使用C++进行SUMO开发,首先需要安装所有必需的工具库。对于基于Ubuntu 18的操作系统,可以通过以下命令来完成这些依赖项的安装: ```bash sudo apt-get update && sudo apt-get install -y cmake python3 g++ libxerces-c-dev libfox-1.6-dev libgdal-dev libproj-dev libgl2ps-dev swig ``` 接着获取SUMO源代码并设置环境变量`SUMO_HOME`指向克隆下来的仓库位置[^1]。 ```bash git clone --recursive https://github.com/eclipse/sumo.git export SUMO_HOME="$PWD/sumo" ``` 创建用于构建SUMO项目的目录结构,并通过CMake生成项目文件以及编译过程中的目标文件: ```bash mkdir -p $SUMO_HOME/build/cmake-build && cd $_ cmake ../../src/ make -j$(nproc) ``` 以上操作完成后,即完成了SUMO的基础安装流程,这一步骤确保了后续能够顺利调用SUMO的相关API接口来进行应用层面上的功能扩展或定制化需求实现。 #### 配置Qt Creator IDE (可选) 如果计划采用图形界面集成开发环境IDE辅助编程,则推荐按照如下方式配置Qt Creator支持ARM架构下的QT版本。进入菜单栏依次点击 `Tools -> Options -> Kits -> Compilers -> Add -> GCC -> C++`, 接着重命名为易于识别的名字比如 "aarch64-poky-linux-g++", 并正确填写交叉编译器路径 `/opt/fsl-imx-xwayland/4.14-sumo/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-g++`. 此外还需注意qmake等相关组件也需要做相应的适配处理[^2]. #### 使用C++编写程序链接至SUMO API 当一切准备就绪之后就可以着手于实际的应用开发当中去了,在这里给出一段简单的例子展示怎样利用g++编译器将自定义的C++源码SUMO静态库打包在一起形成最终可以独立运行的应用程序: 假设有一个名为test.cpp 的文件包含了想要执行的主要逻辑,那么只需要一条指令就能搞定整个编译链路: ```cpp // test.cpp 示例代码片段 #include <iostream> extern "C" { #include "traci/TraCIConstants.h" } int main(){ std::cout << TRACICONSTANTS_VERSION; } ``` ```bash g++ -o test -std=c++11 -I$SUMO_HOME/src test.cpp -L$SUMO_HOME/bin -lsumocpp ``` 上述命令指定了标准为c++11的同时引入了必要的头文件搜索路径(-I参数),同时也告知链接阶段去哪里寻找所需的动态链接库(.so/.dll) (-L 参数),最后加上-l选项告诉链接器要加载哪个具体的.so/dll 文件.
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值