Gnuradio OOT 看不到资源?

Gnuradio OOT not seeing sources?

当尝试为 Gnuradio 编写 OOT 块时,我 运行 cmake ../,然后 make。 make 过程成功构建了一些 objects,但是当它到达步骤时:

Linking CXX executable test-XXXXXXXX

有问题:

libgnuradio-XXXXXXXX.so: undefined reference to 'YYYYYYYY'

YYYYYYYY 是在 .cc 文件中定义的函数,我使用 header 添加到块的 _impl.cc 中。尽管与 _impl.cc 文件位于同一源目录中,但显然未找到此源。

Cmake 明确警告不要对生成的 Makefile 进行任何修改,而且它是一个相当复杂的 makefile,所以我会犹豫是否要弄乱它。是否有另一种方法可以指示 make 在链接时包含该附加源?

最好的办法是查看 OOT 文件夹顶部的 CMakeLists.txt。您很可能看到 link 问题并且不满足包依赖性。 cmake find_package 实用程序可用于确定系统上是否存在依赖项。如果您查看主 OOT 文件夹下的 cmake/Modules 目录,应该有几个示例。 Cmake 附带许多模块,因此您需要的可能已经存在。

通过向主 CMakeLists.txt 文件添加一些 find_package 逻辑,然后删除构建目录并重新创建并执行 "cmake ../",依赖性问题应该很明显。换句话说,无论 libgnuradio-*.so 认为缺少什么,都必须属于您系统上未安装的软件包。使用find_package会确认,然后答案就是安装

查看其他一些 CMakeLists.txt 文件,例如,在 gr-digital 中,以获得 find_package 个示例。