cmake 'pkg_check_modules' 中的 'module' 代表什么?

Jeo*_*eon 0 cmake

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

GNU Radio 用于cmake构建和安装一个 my-module。

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

要在我的 gr 模块中使用其他模块,我需要使用find_package,pkg_check_modulesfind_library告诉“我将使用预先构建的模块”
并且pkg_check_modules(PC_ITPP itpp)可以成功检测到它++。
但我很难找到other-module. 正如我所说pkg_check_modules(PC_OTHER_MODULE other_module),它无法检测到模块。

我很好奇的是,moduleinpkg_check_modules(<PREFIX> <MODULE>)代表什么以及 cmake 如何以及在哪里找到给定模块?

当然,我认为它不是内核模块,因为我在内核模块列表中没有看到它++。那么,它们是 cmake 模块吗?我也不这么认为,因为cmake --help-module-list没有显示它++。

是否有一个特殊文件包含可以被 cmake 引用的模块列表?那么,是否应该it++在构建和安装步骤中在该文件中注册模块和其他库,以便 cmake 将其识别为模块?

usr*_*567 5

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配置已知的所有模块的列表。

如果你的第 3 方软件不是 pkg-config 的一部分,并且没有 CMake 提供的 FindOTHER_MODULE.cmake,你可以谷歌搜索。也许其他人完全编写了该测试,您可以使用它。或者您必须使用 find_includs、find_library 等编写自己的测试。