OpenDDS环境搭建-Windows 10
安装环境:windows 10 64位
已安装 :Visual Stdio 2017、Visual Stdio 2019
需安装:Perl、ACE+TAO、OpenDDS
到这个网站下载微软的软件很方便:https://msdn.itellyou.cn/
ActivePerl 下载地址 https://www.activestate.com/products/perl/downloads/
ACE+TAO 下载地址 https://download.dre.vanderbilt.edu/previous_versions/
OpenDDS 下载地址 https://opendds.org/
官方文档:
http://download.objectcomputing.com/OpenDDS/OpenDDS-latest.pdf
对应版本:
ActivePerl-5.28.msi
ACE+TAO-6.5.12.zip
OpenDDS-3.14.zip
这些版本对应很重要,我做的时候有一次最后编译OpenDDS的时候提示ACE+TAO的版本太低了,导致重新编译。(已编译过多种版本)
第0步:安装Visual Studio 2017,并安装Windows SDK
(版本号的对应,对后续工程编译很重要)
本人不了解VS,看网上基本上都选了C++桌面开发和Windows通用开发,还有右侧的SDK。
第一步:安装Perl
ActivePerl的安装一路默认即可,这里就不赘述
perl下载地址:https://www.activestate.com/activeperl/downloads
1 选择windows下64位对应安装包
2 解压
3 直接安装(安装时默认勾选添加到环境变量,不用取消)
4 验证Perl:
命令行输入: perl –v
打印perl版本信息表明安装成功
第二步:安装ACE+TAO
安装前的准备工作:
下载地址:http://download.dre.vanderbilt.edu/
选择 第三行 full 版本 进行下载,然后解压完成后会在指定目录下生成 ACE_wrappers 文件夹,该文件夹即我们需要的。
0.解压安装包.
1.设置环境变量
1)系统变量
ACE_ROOT F:\J18-ZaiJian\ACE_wrappers
TAO_ROOT %ACE_ROOT%\TAO
MPC_ROOT %ACE_ROOT%\MPC
DDS_ROOT F:\J18-ZaiJian\OpenDDS-3.14
LD_LIBRARY_PATH %DDS_ROOT%\lib
PERL5LIB %DDS_ROOT%\bin\PerlDDS
2)Path变量
在Path中添加:中添加:
%ACE_ROOT%\lib
%ACE_ROOT%\bin
%DDS_ROOT%\lib
%DDS_ROOT%\bin
3)可以检查下环境变量是否全部设置好了.
命令行执行:%DDS_ROOT%\setenv.cmd
//设置并显示所有的环境变量配置
环境变量设置为下面路径大体如下:
:: OpenDDS configure script: configure
set ACE_ROOT=F:\J18-ZaiJian\ACE_wrappers
set MPC_ROOT=F:\J18-ZaiJian\ACE_wrappers\MPC
set PATH=%PATH%;F:\J18-ZaiJian\ACE_wrappers\bin;F:\J18-ZaiJian\OpenDDS-3.14\bin;F:\J18-ZaiJian\ACE_wrappers\lib;F:\J18-ZaiJian\OpenDDS-3.14\lib
set TAO_ROOT=F:\J18-ZaiJian\ACE_wrappers\TAO
set DANCE_ROOT=unused
set CIAO_ROOT=unused
set DDS_ROOT=F:\J18-ZaiJian\OpenDDS-3.14
第三步:安装ACE+TAO
为什么要安装ACE+TAO?------------------------------------------
ACE 全称 ADAPTIVE Communication Environment(自适应的网络通讯环境),是一个面向对象、非常优秀的用来构建高性能、跨平台的网络应用开发的工具包,
它实现了通信软件的基本设计模式。TAO是基于ACE的对CORBA的一种实现。
简单的说:OpenDDS基于ACE+TAO。
0.打开VS2017的开发人员命令提示符,大致在菜单的如下位置:
a)顺便了解:工程文件 和 VS版本 对应关系;
b)再次确定是否已经完成设置环境变量(系统变量):
ACE_ROOT 值 F:\J18-ZaiJian\ACE_wrappers
TAO_ROOT 值 %ACE_ROOT%\TAO
Path中添加: %ACE_ROOT%\lib; %ACE_ROOT%\bin
在F:\J18-ZaiJian\ACE_wrappers\ace,新建一个文件config.h,并添加内容:
#include "ace/config-win32.h"
1.编译ACE
进入到%ACE_ROOT%目录下,可以看到有几个类似于ACE_vs2017.sln的文件,因为我们安装的是VS2017,所以我们执行的目标文件是:ACE_vs2017.sln
打开VS2017的开发人员命令提示符执行:
msbuild ACE_vs2017.sln /p:Configuration=Debug;Platform=x64 /m:2
参数:
Configuration=Debug代表Debug编译,Configuration=Release代表Release编译;
Platform=x64代表强制编译为64位版本;
/m:2 代表使用两个线程并行编译,这个数越大编译的越快.我建议这个数比CPU核数少一个比较好。当然如果超过CPU核数是没有意义
**
两种方法编译ACE( 编译时长大概为半个小时或更久 )
**
法1:如下图ACE_wrappers目录下会有许多VS工程目录,由VS打开对应版本的.sln文件(双击文件),开始编译;
法2:利用 VS命令行进行编译
命令:msbuild ACE_vs2017.sln /p:Configuration=Debug /p:platform=x64 /maxcpucount:8 > build_ace_debug.log
注意 替换命令中 ACE_vs2017.sln 选项;编译过程无任何提示,完成后会在目录下生成 build_ace_debug.log 日志文件,一般不会产生错误。
2.编译TAO( 编译时长大概为一个小时或更久 )
继续使用刚才命令行,切换到 F:\J18-ZaiJian\ACE_wrappers\TAO 目录下,可以看到有几个类似于TAO_ACE_vs2017.sln的文件,编译方法同上,下面是使用命令行编译TAO的方法:
命令:msbuild TAO_ACE_vs2017.sln /p:Configuration=Debug /p:platform=x64 /maxcpucount:8 > build_tao_debug.log
编译过程无任何提示,完成后会在目录下生成 build_tao_debug.log 日志文件,一般不会产生错误。
精简命令:msbuild TAO_ACE_vs2017.sln /p:Configuration=Debug;Platform=x64 /m:2
这里面的Configuration、Platform必须和编译ACE_vs2017.sln的一致。
**
第四步:安装OpenDDS
**
下载地址:http://opendds.org/
1.下载最新版本
解压到 F:\J18-ZaiJian\OpenDDS-3.14
2.再次确认已经添加环境变量(系统变量)
添加 DDS_ROOT 值 F:\J18-ZaiJian\OpenDDS-3.14
Path 中添加 %DDS_ROOT%\lib;%DDS_ROOT%\bin
3.使用vs开发者命令行(上面使用的命令行工具),切换到F:\J18-ZaiJian\OpenDDS-3.14文件夹,
命令:cd %dds_root%
//此命令也可换成cd F:\J18-ZaiJian\OpenDDS-3.14
命令:perl configure
4.这里也许会出现错误,提示VS版本不对,按照提示找到对应文件(configure.sh文件)对应行修改即可[工程文件与VS版本对应见上表]
1)找到如下内容:
$opts{'compiler_version'} = $platforminfo{'win32'}->{'cl_versions'}->{$ver};
2)因为我们使用的是vs2017,所以将该内容替换成:
$opts{'compiler_version'} = "vs2017";
5.修改完成以后,仍然使用VS2017的开发人员命令提示符,进入%DDS_ROOT%目录,再次执行:
命令: perl configure
执行后成功之后会在当前目录下生成了DDS_no_tests.sln(即VS工程文件)和setenv.cmd两个文件.
6.在命令行执行setenv.cmd设置环境变量。
./setenv.cmd
7.两种方式进行最后一步编译:
a)第一种,继续输入命令 进行编译:
msbuild DDS_no_tests.sln /p:Configuration=Debug /p:platform=x64 /maxcpucount:8 > build_dds_debug.log
编译时长大概一个小时或更久,完成后会在目录下生成 build_dds_debug.log 日志文件,一般不会产生错误。
b)第二种,双击DDS_no_tests.sln直接用vs2017打开进行编译。
注意vs编译前,记得配置一下vs2017.
PS:上述这个图只是举个例子,不是本项目。用来帮助理解提示我的VS2017傻瓜操作:
在1处右键打开属性,配置属性 > VC++目录 > 常规 > 包含目录中添加
F:\J18-ZaiJian\OpenDDS-3.14
F:\J18-ZaiJian\ACE_wrappers
F:\J18-ZaiJian\ACE_wrappers\TAO
在5处选择Debug或Release;
在6处选择平台位数;
在7处执行解决方案目标;
在8处生成解决方案或重新生成解决方案,即开始编译。
8.[特别注意]当时为了编译能够成功,我做了如下的傻瓜操作,希望能给你帮助.
1)双击DDS_no_tests.sln即可用vs2017打开,会发现
vs2017对应的解决方案DDS_no_tests.sln有31个项目.
2)点击每一个项目名称,右键打开属性,配置属性 > VC++目录 > 常规 > 包含目录中添加
F:\J18-ZaiJian\OpenDDS-3.14
F:\J18-ZaiJian\ACE_wrappers
F:\J18-ZaiJian\ACE_wrappers\TAO
3)vs2017点击项目(p)\重定向项目\选择windows SDK版本:10.0.17763.0\确认\
4)vs2017点击生成(B)\生成解决方案
5)命令执行验证一下vs2017编译怎么样了:
命令:msbuild DDS_no_tests.sln /p:Configuration=Debug;Platform=x64 /m:2
## 9.验证
切换到 %DDS_ROOT%\example\DCPS\Messenger_Imr 目录
运行:
perl run_test.pl
如果提示 test PASSED 则表示成功,
OPenDDS环境至此搭建完成。