在CMake脚本中临时添加pkg-config路径?

15

对于外部库,用户可以通过在CMAKE_FLAGS中添加路径或添加-DMYLIB_ROOT来指定非标准位置。在CMake脚本中,我希望找到库的pkg-config pc文件。由于pc文件不在标准文件夹中,因此无法通过 FindPkgConfigpkg_search_module找到。

我尝试将用户提供的路径添加到PKG_CONFIG_PATH中,但似乎被忽略了:

include(FindPkgConfig)
set(PKG_CONFIG_PATH "${PKG_CONFIG_PATH}:${MYLIB_ROOT}/lib/pkgconfig")
pkg_search_module(PKG_MYLIB mylib)

if(${PKG_MYLIB_FOUND})
...

当我在终端中使用修改后的PKG_CONFIG_PATH设置调用pkg-config时,它可以找到pc文件。我做错了什么?我如何让pkg_search_module正常工作?我想避免直接从CMake调用pkg-config。

2个回答

14

也许下面的内容可以完成这个任务。

set( ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:${MYLIB_ROOT}/lib/pkgconfig" )

你说得对,当使用CMake 3.0或更早版本时,这是正确的方法。但在3.1中,它将自动包含。 - usr1234567

9
这是一个已知问题,CMake的漏洞跟踪器中存在一张票,但由于缺乏开发人员的兴趣而被搁置。我想首先必须提供一个补丁... < p > 编辑:根据漏洞跟踪器,该功能已实现并成为CMake 3.1的一部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接