我创建了一个使用 libsndfile 源代码库中的自动工具的 Eclipse CDT 项目。它在 Eclipse 中构建良好。如何修改这个项目以将其用作 REDHAWK 组件,就像使用 dsp 库和其他库一样?
谢谢!
我创建了一个使用 libsndfile 源代码库中的自动工具的 Eclipse CDT 项目。它在 Eclipse 中构建良好。如何修改这个项目以将其用作 REDHAWK 组件,就像使用 dsp 库和其他库一样?
谢谢!
有多种方法可以添加共享库以使用 REDHAWK。最简单的方法是在 GPP 上安装库,然后按照 REDHAWK文档中“包含外部库”部分中概述的步骤进行操作。
您询问的 dsplib 中采用的方法略有不同。这将创建一个 REDHAWK 软件包库依赖项,该依赖项安装在 SDRROOT 中并在运行时与您的组件一起部署。以下是在 REDHAWK 中获取预先存在的 c++ 项目的步骤。这个答案不包括构建库或将其导入 eclipse 的过程,因为有很多关于这些主题的帖子:
将库导入您的 IDE。
构建您的共享库,以便您拥有一个共享对象(.so 文件)
将 .spd.xml 文件添加到您的库中,例如在此处找到的那个。
编辑这个 .spd.xml 文件:
4a。更新 localfile 标记以指向特定 .so 文件的位置。
4b。确保实现 id 标记的值是您的库的唯一修订号
如果 .project 文件不存在,请添加一个 .project 文件,例如在此处找到的文件。打开您的 .project 文件并确保包含以下性质:
<nature>gov.redhawk.ide.natures.sca.project</nature>
<nature>gov.redhawk.ide.natures.sca.component</nature>
您现在应该能够将您的软件包库拖到 SDR 根目录。
以下是更新您正在构建的各个组件以使用新库的步骤:
编辑 cpp 实现文件夹中的组件 Makefile.am。编辑 _CXXFLAGS 以添加头文件的路径,编辑 _LDADD 以添加库,并编辑 _LDFLAGS 以包含库的路径。有关agc 组件如何修改这些变量以包含 dsp 库的信息,请参见此示例。
编辑 .spd.xml 文件以包含软件包依赖项。在 implementation 部分下添加对您的库的运行时依赖项,例如在此处找到的那个。具体来说-您的依赖项部分应如下所示:
<dependency type="runtime_requirements">
<softpkgref>
<localfile name="XXXX"/>
<implref refid="YYYY"/>
</softpkgref>
</dependency>
XXXX 是您在 SDRROOT 中安装的库 .spd.xml 文件相对于 dom 目录的路径(它应该以 /components 开头) YYYY 是您在上面 4b 中定义的具体实现值。
我无法添加评论,因此我为提供“答案”而道歉。
对我来说,Youssef 的描述非常适合使用共享库构建组件。但是,为了在运行时加载共享库,我需要在 makefile.am _LDFLAGS 中添加以下内容:
-Xlinker -rpath -Xlinker ../../dsp/Release
其中“/dsp/Release”是您创建的任何共享库的相对路径。