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

相关文章

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

python项目环境切换的几种实现方式

《python项目环境切换的几种实现方式》本文主要介绍了python项目环境切换的几种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 如何在不同python项目中,安装不同的依赖2. 如何切换到不同项目的工作空间3.创建项目

Python + Streamlit项目部署方案超详细教程(非Docker版)

《Python+Streamlit项目部署方案超详细教程(非Docker版)》Streamlit是一款强大的Python框架,专为机器学习及数据可视化打造,:本文主要介绍Python+St... 目录一、针对 Alibaba Cloud linux/Centos 系统的完整部署方案1. 服务器基础配置(阿里

Java 队列Queue从原理到实战指南

《Java队列Queue从原理到实战指南》本文介绍了Java中队列(Queue)的底层实现、常见方法及其区别,通过LinkedList和ArrayDeque的实现,以及循环队列的概念,展示了如何高效... 目录一、队列的认识队列的底层与集合框架常见的队列方法插入元素方法对比(add和offer)移除元素方法

Spring Boot基于 JWT 优化 Spring Security 无状态登录实战指南

《SpringBoot基于JWT优化SpringSecurity无状态登录实战指南》本文介绍如何使用JWT优化SpringSecurity实现无状态登录,提高接口安全性,并通过实际操作步骤... 目录Spring Boot 实战:基于 JWT 优化 Spring Security 无状态登录一、先搞懂:为什

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js

Nginx概念、架构、配置与虚拟主机实战操作指南

《Nginx概念、架构、配置与虚拟主机实战操作指南》Nginx是一个高性能的HTTP服务器、反向代理服务器、负载均衡器和IMAP/POP3/SMTP代理服务器,它支持高并发连接,资源占用低,功能全面且... 目录Nginx 深度解析:概念、架构、配置与虚拟主机实战一、Nginx 的概念二、Nginx 的特点

C#实现插入与删除Word文档目录的完整指南

《C#实现插入与删除Word文档目录的完整指南》在日常的办公自动化或文档处理场景中,Word文档的目录扮演着至关重要的角色,本文将深入探讨如何利用强大的第三方库Spire.Docfor.NET,在C#... 目录Spire.Doc for .NET 库:Word 文档处理利器自动化生成:C# 插入 Word

Python列表去重的9种方法终极指南

《Python列表去重的9种方法终极指南》在Python开发中,列表去重是一个常见需求,尤其当需要保留元素原始顺序时,本文为大家详细介绍了Python列表去重的9种方法,感兴趣的小伙伴可以了解下... 目录第一章:python列表去重保持顺序方法概述使用字典去重(Python 3.7+)使用集合辅助遍历性能