【问题标题】:Add temporarily path to pkg-config within CMake script?在 CMake 脚本中添加到 pkg-config 的临时路径?
【发布时间】:2013-12-25 05:11:35
【问题描述】:

对于外部库,用户可以通过添加CMAKE_FLAGS 的路径或添加-DMYLIB_ROOT 来指定非标准位置。在 CMake 脚本中,我想找到库的 pkg-config pc 文件。因为pc文件不在标准文件夹中,所以用FindPkgConfigpkg_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。

【问题讨论】:

    标签: cmake pkg-config


    【解决方案1】:

    也许下面的就行了

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

    【讨论】:

    • 你是对的,这就是使用 CMake 3.0 或更早版本时要走的路。在 3.1 中,它将自动包含在内。
    【解决方案2】:

    这是一个已知问题和ticket exists in CMake's bugtracker,但由于缺乏开发人员的兴趣而被搁置。我想必须先提供一个补丁...

    编辑:根据 bugtracker 的说法,该功能已经实现并且是 CMake 3.1 的一部分。

    【讨论】:

      猜你喜欢
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-07
      • 2013-02-25
      • 1970-01-01
      相关资源
      最近更新 更多