vsomeip For Windows

vsomeip For Windows

Tags
Automotive
SOC
AUTOSAR
SOME/IP
Published
Published May 9, 2022
Author
wapeasy

背景介绍:

someip是在车机领域使用最广泛的一种中间件协议,其中vsomeip做为最出名的开源方案,被广泛的使用,但是其使用方法中只简单的给出了linux平台的编译方法,并没有给出win平台的使用方法,查看编译脚本发现,其实已经集成了win平的编译,只是没有给出教程,所以本篇应运而生。
 

调查:

查看CMakeLists.txt
if (WIN32 AND NOT CYGWIN) set (DEF_INSTALL_CMAKE_DIR CMake) else () set (DEF_INSTALL_CMAKE_DIR lib/cmake/${VSOMEIP_NAME}) endif ()
通过以上发现有关于win平台的判断,但是需要注意的是判断中将 cygwin给排除了,所以为了顺利编译还是使用win平台的vs套件进行编译,防止一些意外发生。
# Threads find_package(Threads REQUIRED) # Boost find_package( Boost 1.55 COMPONENTS system thread filesystem REQUIRED ) include_directories( ${Boost_INCLUDE_DIR} ) if(Boost_FOUND) if(Boost_LIBRARY_DIR) MESSAGE( STATUS "Boost_LIBRARY_DIR not empty using it: ${Boost_LIBRARY_DIR}" ) else() if(BOOST_LIBRARYDIR) MESSAGE( STATUS "Boost_LIBRARY_DIR empty but BOOST_LIBRARYDIR is set setting Boost_LIBRARY_DIR to: ${BOOST_LIBRARYDIR}" ) set(Boost_LIBRARY_DIR ${BOOST_LIBRARYDIR}) endif() endif() else() MESSAGE( STATUS "Boost was not found!") endif()
通过以上可以看出,编译vsomeip还需要Threads库和boost库,Threads库应该在vs套件中已经集成,Boost库需要自己准备

准备:

需要提前准备Boost库,并且版本不能低与1.55
Boost源码地址:
我们选择的Boost版本是1.69.0,因为sourceforge上下载量最高👾,并且这里我们遵循了编译库的基本原则,永远不要用最新版本,不要问为什么,千万别用!!!
boost_1_69_0.7z 07-Apr-2021 21:13 78.29 MB boost_1_69_0.7z.asc 07-Apr-2021 21:13 821 bytes boost_1_69_0.7z.json 07-Apr-2021 21:13 158 bytes boost_1_69_0.7z.json.asc 07-Apr-2021 21:13 821 bytes boost_1_69_0.tar.bz2 07-Apr-2021 21:13 90.67 MB boost_1_69_0.tar.bz2.asc 07-Apr-2021 21:13 821 bytes boost_1_69_0.tar.bz2.json 07-Apr-2021 21:13 111 bytes boost_1_69_0.tar.bz2.json.asc 07-Apr-2021 21:13 821 bytes boost_1_69_0.tar.gz 07-Apr-2021 21:13 106.54 MB boost_1_69_0.tar.gz.asc 07-Apr-2021 21:13 821 bytes boost_1_69_0.tar.gz.json 07-Apr-2021 21:13 162 bytes boost_1_69_0.tar.gz.json.asc 07-Apr-2021 21:13 821 bytes boost_1_69_0.zip 07-Apr-2021 21:13 156.75 MB boost_1_69_0.zip.asc 07-Apr-2021 21:12 821 bytes boost_1_69_0.zip.json 07-Apr-2021 21:12 159 bytes boost_1_69_0.zip.json.asc 07-Apr-2021 21:12 821 bytes
我们选择boost_1_69_0.7z这个包
解压后使用vs套件自带的命令行窗口VS2015 x64 x86兼容工具
notion image
执行bootstrap.bat
notion image
会编译得到b2.exe
执行:
b2.exe --toolset=msvc-14.0 install --prefix="C:\Project\Boost" link=shared runtime-link=shared threading=multi -j6
耐心的等待中...👾
编译Boost过程如果遇到vcruntime140d.dll等dll找不到的情况,可以去C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\debug_nonredist\x86\Microsoft.VC140.DebugCRT\拷贝过来
当编译完成后Boost的库会在C:\Project\Boost这个路径,我们编译vsomeip的时候会用到

编译:

需要注意vsomeip的最新tag版本是3.1.20.3
同样使用vs套件自带的命令行窗口VS2015 x64 x86兼容工具
执行:
git clone https://github.com/wapeasy/vsomeip-for-windows.git mkdir build cd build
在编译之前,需要改造一下原版的Cmakelist.txt,添加下面的路径,让生成makefile时可以找到boost的库文件
set(BOOST_ROOT "C:/Project/Boost")
注意:在find_package( Boost 1.55 COMPONENTS system thread filesystem REQUIRED )之前追加
在build路径执行:
cmake -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX="C:/Project/vsomeip3" ../
生成完makefile后,再执行
namke nmake install
耐心的等待中...👾,如果你足够的幸运你会得到:
notion image
至此,vsomeip的win平台库已经编译完成,
以上编译的库已经同步发布在GitHub:
 
后续让我们来实现: