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

相关文章

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署