在上一篇文章中,给出了如何通过下载OpenDDS和arm交叉编译器来编译安装OpenDDS库,OpenDDS在arm-linux平台下交叉编译方法。
本篇文章主要解决,当OpenDDS库已经交叉编译完成,如何将自己写的基于ACE和OpenDDS库的源代码通过cmake交叉编译为二进制代码。主要操作是以下步骤:
1)定位OpenDDS的source directory,根据上一篇文章的提示,在交叉编译过程中会将OpenDDS的源代码分别拷贝到host端和target端,target断中的OpenDDS的源代码才会被交叉编译成库文件。
2)当定位到OpenDDS的源路径后,即 …/OpenDDS/build/target/, 通过source setenv.sh来设置这个环境变量和系统变量。这一步的目的主要是设置系统变量$PAH,使得他可以调用…/ace/bin/下的一些运行脚本,用于描画IDL语言。
3)当定位到OpenDDS的源路径后,即 …/OpenDDS/build/target/, 还需要修改./cmake/config.cmake,这里修改的主要目的是修改几个路径,当然要用绝对路径,只有这样在通过cmake生成makefile,才能找到相应的ace库文件,和tao库文件。
set(OPENDDS_ACE "/Your Directory/opendds/build/target/ACE_wrappers")
set(OPENDDS_TAO "/Your Directory/opendds/build/target/ACE_wrappers/TAO")
set(OPENDDS_PREFIX "/Your Installation Directory/sysroot")
4)进入到自己应用的源文件路径里面,通过CMakeLists生成makefile。CMakelists的写法可以借助OpenDDS提供的Messenger样例中的内容。具体操作如下:
mkdir build
cd build
cmake -DCMAKE_PREFIX_PATH=${Your Directory}/opendds/build/target/cmake ..
make
经过了以上四个步骤,就可以将自己写的基于dds的应用通过cmake的方式生成出makefile,并且进行编译。