什么'模块'在cmake' pkg_check_modules'代表?

时间:2015-03-31 13:34:35

标签: cmake

我正在GNU Radio中构建某个模块。 (我们称之为my-module。)

GNU Radio使用cmake来构建和安装my-module。

在项目中,我需要使用其他人制作的模块。这可以是it++和其他gnuradio模块。我将使用gnuradio模块。 (我们称之为other-module。)

要使用我的gr模块中的其他模块,我需要使用find_packagepkg_check_modulesfind_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识别为模块吗?

1 个答案:

答案 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。

编写自己的测试