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

相关文章

centos7基于keepalived+nginx部署k8s1.26.0高可用集群

《centos7基于keepalived+nginx部署k8s1.26.0高可用集群》Kubernetes是一个开源的容器编排平台,用于自动化地部署、扩展和管理容器化应用程序,在生产环境中,为了确保集... 目录一、初始化(所有节点都执行)二、安装containerd(所有节点都执行)三、安装docker-

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(

使用JavaScript将PDF页面中的标注扁平化的操作指南

《使用JavaScript将PDF页面中的标注扁平化的操作指南》扁平化(flatten)操作可以将标注作为矢量图形包含在PDF页面的内容中,使其不可编辑,DynamsoftDocumentViewer... 目录使用Dynamsoft Document Viewer打开一个PDF文件并启用标注添加功能扁平化

Jenkins中自动化部署Spring Boot项目的全过程

《Jenkins中自动化部署SpringBoot项目的全过程》:本文主要介绍如何使用Jenkins从Git仓库拉取SpringBoot项目并进行自动化部署,通过配置Jenkins任务,实现项目的... 目录准备工作启动 Jenkins配置 Jenkins创建及配置任务源码管理构建触发器构建构建后操作构建任务

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能

如何安装 Ubuntu 24.04 LTS 桌面版或服务器? Ubuntu安装指南

《如何安装Ubuntu24.04LTS桌面版或服务器?Ubuntu安装指南》对于我们程序员来说,有一个好用的操作系统、好的编程环境也是很重要,如何安装Ubuntu24.04LTS桌面... Ubuntu 24.04 LTS,代号 Noble NumBAT,于 2024 年 4 月 25 日正式发布,引入了众

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

windows端python版本管理工具pyenv-win安装使用

《windows端python版本管理工具pyenv-win安装使用》:本文主要介绍如何通过git方式下载和配置pyenv-win,包括下载、克隆仓库、配置环境变量等步骤,同时还详细介绍了如何使用... 目录pyenv-win 下载配置环境变量使用 pyenv-win 管理 python 版本一、安装 和