我正在GNU Radio中构建某个模块。 (我们称之为my-module。)
GNU Radio使用cmake
来构建和安装my-module。
在项目中,我需要使用其他人制作的模块。这可以是it++
和其他gnuradio模块。我将使用gnuradio模块。 (我们称之为other-module
。)
要使用我的gr模块中的其他模块,我需要使用find_package
,pkg_check_modules
和find_library
来说明“我将使用预建模块”
pkg_check_modules(PC_ITPP itpp)
可以成功检测到它
但我很难找到other-module
。当我放pkg_check_modules(PC_OTHER_MODULE other_module)
时,它无法检测到模块。
我很好奇,module
中的pkg_check_modules(<PREFIX> <MODULE>)
代表什么,以及cmake如何以及在哪里找到给定的模块?
当然,我认为它不是内核模块,因为我在内核模块列表中看不到它。然后,他们是cmake模块吗?我不这么认为,因为cmake --help-module-list
没有显示它。
是否有一个特殊文件包含可由cmake引用的模块列表?如果那时,应该在构建和安装步骤中将it++
和其他库模块注册到该文件中,以便被cmake识别为模块吗?
答案 0 :(得分:2)
pkg_check_modules(<PREFIX> <MODULE>)
调用pkg-config,查询<MODULE>
并将结果返回给名称以<PREFIX>_
开头的变量。因此,module是您/ pkg-config正在寻找的软件的名称。
如果找不到你的other_module,请直接尝试使用pkg-config,pkg-config是否知道other_module,使用pkg-config --modversion other_module
来执行此操作。
使用pkg-config --list-all
,您将获得pkg-config已知的所有模块的列表。
如果您的第三方软件不是pkg-config的一部分且CMake没有提供FindOTHER_MODULE.cmake,您可以谷歌搜索它。也许其他人写了那个测试,你可以使用它。或者你必须使用find_includs,find_library et al。
编写自己的测试