基于Windows编译vsomeip

<请不要转载,仅用于个人学习>

vsoemip源码

1. 安装依赖boost相关文件

vsomeip实现依赖于boost,这里选择的是boost_1.76.0版本。
boost源码及二进制文件下载地址
这个安装的时候需要2170M左右的空间,安装后结果如下:
在这里插入图片描述

lib64-msvc-14.2下是boost库。

2. 编译vsoemip

2.1 下载vsomeip源码

https://github.com/COVESA/vsomeip,下载最新版本;
打开VS的command,依据电脑选择32/64位;

2.2 安装VS编译工具链

请留意vsoemip支持的VS工具链的版本(当前最高支持到v142),否则做一下工具链确认或切换,步骤如下:
工具 -> 单个组件 -> SDK、库和框架 -> 可以看到已经安装的一些组件版本;
若是没有所需版本,就选一个v142或更低的版本(ATL x86和x64)进行安装;

2.3 执行编译

进入到代码目录,新建build目录并进入,执行如下指令:
cmake -G “Visual Studio 17 2022” … -DBOOST_ROOT=D:\Projects\boost\boost_1_76_0 -DBoost_USE_STATIC_LIBS=ON
编译完成之后,我们可以看到build下的VS工程文件,如下所示:
[图片]

打开项目后,对ALL_BUILD执行重新生成,至正常编译结束算是完成。

2.4 运行example实例

以response-sample.exe为例,将其与vsomeip3的dll文件及JSON配置文件放在一起(也可将dll库路径设置到环境变量中),当前目录启动cmd,进行如下执行(可以写到bat里双击执行):

#设置环境变量
@ECHO OFF
SETLOCAL
#添加boost和vsomeip库路径
set PATH=%PATH%;D:\Projects\vsomeip\vsomeip-master\build\Debug;D:\Projects\boost\boost_1_76_0\lib64-msvc-14.2
set VSOMEIP_CONFIGURATION=D:\Projects\vsomeip\vsomeip-master\build\examples\Debug\response.json
set VSOMEIP_APPLICATION_NAME=response-sample
#查看环境变量
#set VSOMEIP_CONFIGURATION
#启动程序
response-sample.exe

正常启动过程如下:
在这里插入图片描述

response.json文件(unicast是自己电脑的ip地址):

      
{
    "unicast" : "192.168.3.78",
    "logging" :
    {
        "level" : "trace",
        "console" : "true",
        "file" : { "enable" : "false", "path" : "/tmp/vsomeip.log" },
        "dlt" : "false"
    },
    "applications" :
    [
        {
            "name" : "response-sample",
            "id" : "0x1277"
        },
        {
            "name" : "request-sample",
            "id" : "0x1344"
        }
    ],
    "services" :
    [
        {
            "service" : "0x1234",
            "instance" : "0x5678",
            "unreliable" : "30509",
            "multicast" :
            {
                "address" : "224.224.224.245",
                "port" : "30490"
            },
            "events" :
            [
                {
                    "event" : "0x0777",
                    "is_field" : "true",
                    "update-cycle" : 2000
                },
                {
                    "event" : "0x0778",
                    "is_field" : "true",
                    "update-cycle" : 0
                },
                {
                    "event" : "0x0779",
                    "is_field" : "true"
                }
            ],
            "eventgroups" :
            [
                {
                    "eventgroup" : "0x4455",
                    "events" : [ "0x777", "0x778" ]
                },
                {
                    "eventgroup" : "0x4465",
                    "events" : [ "0x778", "0x779" ],
                    "is_multicast" : "true"
                },
                {
                    "eventgroup" : "0x4555",
                    "events" : [ "0x777", "0x779" ]
                }
            ]
        }
    ],
    "routing" : "response-sample",
    "service-discovery" :
    {
        "enable" : "true",
        "multicast" : "224.224.224.245",
        "port" : "30490",
        "protocol" : "udp",
        "initial_delay_min" : "10",
        "initial_delay_max" : "100",
        "repetitions_base_delay" : "200",
        "repetitions_max" : "3",
        "ttl" : "3",
        "cyclic_offer_delay" : "2000",
        "request_response_delay" : "1500"
    }
}    

3. BOOST的Windows编译

boost资源地址
方法一:
在上方下载地址中,对应版本binaries/下选择下载二进制文件直接进行安装就可以了。
方法二:
下载源码,解压,进入源码目录,按如下步骤操作:

3.1 执行脚本生成b2

vc142 指定VS工具链版本(但是这个这样指定似乎没用,因为从下面的报错中可以看出,它默认依然去用了143的工具,但是打包及命名还是142,这个原因待查)
bootstrap.bat vc142

3.2 编译生成库

当前源码位置:D:\Projects\boost\boost_1_76_0
b2.exe --help 可以查看指令及参数的使用说明;
库名称相关的几个配置,如下:

link= static : 静态库。 生成的库文件名称以 “lib”开头
link= shared : 动态库。生成的库文件名称无“lib”开头 

threading= mult : 支持多线程。 生成的库文件名称中包含 “-mt” 

variant=release  生成的库文件名称不包含 “-gd”
variant= debug  生成的库文件名称包含 “-gd” 

runtime-link= static  生成的库文件名称包含 “-s”
runtime-link= shared  生成的库文件名称不包含 “-s”
b2.exe stage --stagedir="D:\Projects\boost\boost_1_76_0\lib64-msvc-14_2" --toolset=msvc-14.2 address-model=64 link=static runtime-link=shared threading=multi --with-system #仅编译system库,全部编译修改为--build-type=complete

在执行把b2指令集时,会出现如下报错,是因为下图位置缺少vcvarsall.bat文件,我们在VS安装目录下找到这个文件将其拷贝过来,就可以正常编译了。
在这里插入图片描述

最终我们可以看到库已生成:
文件生成

到此我们发现让vsomeip去做依赖的时候报错了,是因为编译的文件不完整,后来查看官方方法一文件夹下boost_1_79_0-64bitlog.txt,重新修改编译指令b2.exe -j4 --without-mpi --build-dir=D:\Projects\boost\boost_1_76_0\bin.v2 --stage-libdir=lib64-msvc-14.2 --build-type=complete toolset=msvc-14.2 address-model=64 architecture=x86 stage重新进行编译(这里编译到最后,发现skiped 30个文件,是python/zlib/*之类的在本地没有编过,但是当前生成的库文件是可以满足vsoemip编译依赖需求的,特殊的几个库没编译过的原因待查);
在这里插入图片描述

我们基于指令编译得到的库去编vsoemip,到vsomeip/build下执行cmake -G "Visual Studio 17 2022" .. -DBOOST_ROOT="D:\Projects\boost\boost_1_76_0" -DBOOST_LIBRARYDIR="D:\Projects\boost\boost_1_76_0\lib" -DBOOST_INCLUDEDIR="D:\Projects\boost\boost_1_76_0\include" -DBoost_USE_STATIC_LIBS=ON,build下便生成vsomeip编译相关文件,点击vsoemip的vsomeip.sln打开工程,编译vsomeip。

基于Linux编译vsomeip - test

安装googletes

sudo apt-get install googletes

编译MakeFile脚本

cmake -DGTEST_ROOT=/usr/src/googletest/ -DENABLE_SESSION_HANDLING_CONFIG=1  ..

GTEST_ROOT指定gtest安装位置,ENABLE_SESSION_HANDLING_CONFIG使能E2E依赖。
test编译参考

<请不要转载,请仅用于个人学习>

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值