在 CMake 脚本中添加到 pkg-config 的临时路径?
Posted
技术标签:
【中文标题】在 CMake 脚本中添加到 pkg-config 的临时路径?【英文标题】:Add temporarily path to pkg-config within CMake script? 【发布时间】:2013-12-25 05:11:35 【问题描述】:对于外部库,用户可以通过添加CMAKE_FLAGS
的路径或添加-DMYLIB_ROOT
来指定非标准位置。在 CMake 脚本中,我想找到库的 pkg-config pc 文件。因为pc文件不在标准文件夹中,所以用FindPkgConfig
的pkg_search_module
的pkg-config找不到。
我尝试将用户给定的路径添加到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 并设置修改后的PKG_CONFIG_PATH
时,它会找到 pc 文件。我究竟做错了什么?我怎样才能让pkg_search_module
工作?我想避免直接从 CMake 调用 pkg-config。
【问题讨论】:
【参考方案1】:也许下面的就行了
set( ENVPKG_CONFIG_PATH "$ENVPKG_CONFIG_PATH:$MYLIB_ROOT/lib/pkgconfig" )
【讨论】:
你是对的,这就是使用 CMake 3.0 或更早版本时要走的路。在 3.1 中,它将自动包含在内。【参考方案2】:这是一个已知问题和ticket exists in CMake's bugtracker,但由于缺乏开发人员的兴趣而被搁置。我想必须先提供一个补丁...
编辑:根据 bugtracker 的说法,该功能已经实现并且是 CMake 3.1 的一部分。
【讨论】:
以上是关于在 CMake 脚本中添加到 pkg-config 的临时路径?的主要内容,如果未能解决你的问题,请参考以下文章
从`cmake`使用`pkg-config`的正确方法是啥?
从 CMake / PkgConfig 为 pkg-config 提供选项 --define-variable