OpenDDS 在 Windows 上的编译环境部署指南

2024-03-05 08:52

本文主要是介绍OpenDDS 在 Windows 上的编译环境部署指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 1、OpenDDS
  • 2、编译OpenDDS
    • 2.1、准备工作
    • 2.2、配置环境变量
    • 2.3、编译-TAO_IDL_ACE
    • 2.4、编译-TAO_ACE
    • 2.5、编译-ACE
    • 2.7、生成OpenDDS的解决方案
    • 2.8、编译-DDS_no_test
    • 2.9、编译-DDS

1、OpenDDS

OpenDDS是使用C++语言针对OMG数据分发服务(DDS)的一种开源实现。由OCI公司设计和维护,可从http://www.opendds.org/的OpenDDS社区门户中获得帮助,目前最新的版本是OpenDDS 3.12.1。
尽管本身OpenDDS采用C++语言实现,但也提供JAVA和JMS的开发接口,这意味着JAVA程序开发也可以使用OpenDDS。

2、编译OpenDDS

2.1、准备工作

注:下面加粗的版本是我使用的。

软件:
VS2019/VS2017/VS2015/VS2010 任选一款 (这里选择的VS版本将会影响下面所有依赖库以及OpenDDS的版本)。
cmake 3.28.1 建议选择最新版,有些依赖库的版本会强制要求最小cmake版本,防止重新下载。

依赖:
OpenDDS 3.27.0 网站: github、OpenDDS.org 都可以
strawberry-perl-5.38.0.1-64bit 官网下载 最新即可
ACETAO-7.1.2 网站: github、官网 都可以
googletest-main 网站:github
注意:确保你有C++开发环境

2.2、配置环境变量

1、首先将strawberry-perl-5.38.0.1-64bit软件进行安装,路径默认即可。
2、将你的OpenDDS和ACETAO解压后放到一块,可以是同级也可以和我一样。 我是将OpenDDS直接放到D盘根目录,然后将ACETAO解压后的包放到OpenDDS里面。
在这里插入图片描述

在这里插入图片描述
3、先确定对应的路径 ,若无误,写入到环境变量中,共五个变量。

环境变量路径
DDS_ROOTD:\OpenDDS
LD_LIBRARY_PATH%DDS_ROOT%\lib
MPC_ROOT%ACE_ROOT%\MPC
ACE_ROOTD:\OpenDDS\ACE_wrappers
TAO_ROOTD:\OpenDDS\ACE_wrappers\TAO

4、在path环境变量中,增加下面四个路径。
在这里插入图片描述

5、在%ACE_ROOT%/ace下添加config.h文件,内容为

include "ace/config-win32.h"

2.3、编译-TAO_IDL_ACE

1、使用VS2019打开TAO_IDL_ACE_vs2019.sln项目文件。
在这里插入图片描述

打开应该是下面这样的:
在这里插入图片描述

2、在项目中找到重定目标解决方案点击确定。
在这里插入图片描述

3、在生成中找到生成解决方案并点击。开始编译,大约十几分钟。
在这里插入图片描述
等待13个项目均编译成功,若有失败的项目,那么继续执行第三步骤。直到全部编译完成。
在这里插入图片描述

2.4、编译-TAO_ACE

再到D:/OpenDDS/ACE_wrappers/TAO_ACE_vs2019.sln 路径下使用同样的方式编译
在这里插入图片描述
项目数量为220一定要一样,千万别打开错了。

在这里插入图片描述

编译大约要半小时左右,成功生成220就可以了。

在这里插入图片描述

2.5、编译-ACE

再到D:/OpenDDS/ACE_wrappers/ACE_vs2019.sln路径下的项目工程,同样的方式编译大约40分钟左右。
在这里插入图片描述

总共730个项目,核对一下。
在这里插入图片描述

全部成功后就完成了,若有部分失败,则在生成一次解决方案。
在这里插入图片描述

2.6、编译-googletest
编译google test是因为编译Open DDS时报缺少这个模块,该模块用于测试,可以不编译。这个源码在github上下载一份就可以了。

目录结构如下:
在这里插入图片描述

在CMakeLists.txt 任意位置增加这行代码,因为OpenDDS需要的Debug环境的库是要带后缀d的,而googltest默认不带,所以增加一项。

set(CMAKE_DEBUG_POSTFIX          "d" CACHE STRING "add a postfix, usually d on windows")

在这里插入图片描述

然后打开cmake-gui软件,source code 是源码路径、build 是编译输出路径
在这里插入图片描述

具体需要修改下面几项,自己对照一下
在这里插入图片描述

确保这行的值为 d
在这里插入图片描述
定位到你的OpenDDS的路径上, 需要自己创建build/install路径
在这里插入图片描述

然后以此点击Configure、Generate。
在这里插入图片描述

然后在build路径下找googletest-distribution.sln项目工程。
在这里插入图片描述

打开后 先生成ALL_BUILD项目,然后在生成INSTALL就会将生成的lib以及include自动拷贝至你的OpenDDS路径下
在这里插入图片描述

忽略掉我的bin路径,因为我使用的是动态库。这里你正常应该有include和lib文件夹就足够了。
在这里插入图片描述
在这里插入图片描述

2.7、生成OpenDDS的解决方案

1、生成 DDS_no_tests.sln解决方案
在这里插入图片描述
2、生成DDS.sln解决方案
在这里插入图片描述

参数介绍:
java: -features java=1
qt: -features qt=1

不同于上述的方式还有一种官方命令:
configure --java --qt=D:\xx\5.45.\msvc2019_64

这种方式相比上面那种会多生成一个环境变量的脚本。

:: OpenDDS configure script: configure --qt=D:\Qt\5.15.2\msvc2019_64 --java
set "ACE_ROOT=D:\OpenDDS\ACE_wrappers"
set "CIAO_ROOT=unused"
set "DANCE_ROOT=unused"
set "DDS_ROOT=D:\OpenDDS"
set "JAVA_HOME=C:\Program Files\Java\jdk1.8.0_162"
set "JAVA_PLATFORM=win32"
set "MPC_ROOT=D:\OpenDDS\ACE_wrappers\MPC"
set "PATH=%PATH%;D:\Qt\5.15.2\msvc2019_64\bin;D:\OpenDDS\ACE_wrappers\bin;D:\OpenDDS\bin;D:\OpenDDS\ACE_wrappers\lib;D:\OpenDDS\lib"
set "QT5_BINDIR=D:\Qt\5.15.2\msvc2019_64\bin"
set "QT5_INCDIR=D:\Qt\5.15.2\msvc2019_64\include"
set "QT5_LIBDIR=D:\Qt\5.15.2\msvc2019_64\bin"
set "QT5_SUFFIX="
set "QTDIR=D:\Qt\5.15.2\msvc2019_64"
set "TAO_ROOT=D:\OpenDDS\ACE_wrappers\TAO"

所以,如果你需要用到Qt、Java需要自己配置这个环境变量,否则OpenDDS工程将不能正常编译。

注:下面的第9章节和第10章节只需要编译一个就好。如果你没有执行第7章节,那么只能编译第9章节。

2.8、编译-DDS_no_test

用同样的方式编译DDS,这里我们编译DDS_no_test。无测试 编译更快。依赖更少。
在这里插入图片描述

编译成功后如下
在这里插入图片描述

2.9、编译-DDS

编译DDS时可能会遇到 TryConstruct.cpp 文件有非法字符,将其转为utf8-bom格式即可。
在这里插入图片描述

如果你在之前编译googletest时选择的是动态库,那么在UnitTestsx项目的预处理器中需要加入GTEST_LINKED_AS_SHARED_LIBRARY 宏来指定加载的为动态库。
在这里插入图片描述
带有测试的DDS解决方案相比较大,有355个子工程。编译等待半小时左右。
在这里插入图片描述

这篇关于OpenDDS 在 Windows 上的编译环境部署指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/775949

相关文章

windows和Linux安装Jmeter与简单使用方式

《windows和Linux安装Jmeter与简单使用方式》:本文主要介绍windows和Linux安装Jmeter与简单使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows和linux安装Jmeter与简单使用一、下载安装包二、JDK安装1.windows设

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Python Pandas高效处理Excel数据完整指南

《PythonPandas高效处理Excel数据完整指南》在数据驱动的时代,Excel仍是大量企业存储核心数据的工具,Python的Pandas库凭借其向量化计算、内存优化和丰富的数据处理接口,成为... 目录一、环境搭建与数据读取1.1 基础环境配置1.2 数据高效载入技巧二、数据清洗核心战术2.1 缺失

Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题

《Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题》:本文主要介绍Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录一、前言二、系统架构检测三、卸载旧版 Go四、下载并安装正确版本五、配置环境变量六、验证安装七、常见

Python使用Reflex构建现代Web应用的完全指南

《Python使用Reflex构建现代Web应用的完全指南》这篇文章为大家深入介绍了Reflex框架的设计理念,技术特性,项目结构,核心API,实际开发流程以及与其他框架的对比和部署建议,感兴趣的小伙... 目录什么是 ReFlex?为什么选择 Reflex?安装与环境配置构建你的第一个应用核心概念解析组件

Spring Boot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)

《SpringBoot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)》:本文主要介绍SpringBoot拦截器Interceptor与过滤器Filter深度解析... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实

MyBatis分页插件PageHelper深度解析与实践指南

《MyBatis分页插件PageHelper深度解析与实践指南》在数据库操作中,分页查询是最常见的需求之一,传统的分页方式通常有两种内存分页和SQL分页,MyBatis作为优秀的ORM框架,本身并未提... 目录1. 为什么需要分页插件?2. PageHelper简介3. PageHelper集成与配置3.

Java实现视频格式转换的完整指南

《Java实现视频格式转换的完整指南》在Java中实现视频格式的转换,通常需要借助第三方工具或库,因为视频的编解码操作复杂且性能需求较高,以下是实现视频格式转换的常用方法和步骤,需要的朋友可以参考下... 目录核心思路方法一:通过调用 FFmpeg 命令步骤示例代码说明优点方法二:使用 Jaffree(FF

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

Python日期和时间完全指南与实战

《Python日期和时间完全指南与实战》在软件开发领域,‌日期时间处理‌是贯穿系统设计全生命周期的重要基础能力,本文将深入解析Python日期时间的‌七大核心模块‌,通过‌企业级代码案例‌揭示最佳实践... 目录一、背景与核心价值二、核心模块详解与实战2.1 datetime模块四剑客2.2 时区处理黄金法