尝试为Gnuradio编写OOT块时,我运行cmake ../
,然后make
。 make过程成功构建了一些对象,但是当它到达步骤时:
Linking CXX executable test-XXXXXXXX
存在问题:
libgnuradio-XXXXXXXX.so: undefined reference to 'YYYYYYYY'
YYYYYYYY
是.cc
文件中定义的函数,我使用标题将其添加到块的_impl.cc
。尽管与_impl.cc
文件位于同一源目录中,但显然找不到此源。
Cmake明确警告不要对生成的Makefile进行任何修改,无论如何它都是一个相当复杂的makefile,所以我会犹豫是否要尝试搞乱它。还有另一种方法可以指导make在链接时包含其他来源吗?
答案 0 :(得分:0)
最好的办法是查看OOT文件夹顶部的CMakeLists.txt。您很可能看到链接问题并且不满足包依赖性。 cmake find_package实用程序可用于确定系统上是否有可用的依赖项。如果你看一下主OOT文件夹下的cmake / Modules目录,应该有几个例子。 Cmake附带了许多模块,因此您可能需要它。
通过向主CMakeLists.txt文件添加一些find_package逻辑,然后吹掉构建目录并再次进行并执行" cmake ../" ;,依赖性问题应该是显而易见的。换句话说,无论libgnuradio - *。所以认为缺少必须属于系统上未安装的软件包。使用find_package将确认它,然后答案是安装它。
对于find_package示例,请查看gr-digital中的其他一些CMakeLists.txt文件。