【问题标题】:Is there a C/C++ APIfor pkg-config?是否有用于 pkg-config 的 C/C++ API?
【发布时间】:2021-12-04 22:22:41
【问题描述】:

我有一个奇怪的用例。我有一个 C++ 程序,它编译一个库对象并在运行时动态加载它。它编译的库依赖于第三方依赖,到目前为止,我一直在通过手动硬编码路径并在切换计算机时更改它来解决这个问题。

有没有办法从 C++ 调用 pkg-config 来询问它是否安装了库以及安装在哪里?我知道我可以从 bash 会话中调用它并解析输出,但这不是我想要的,如果可能的话,我想直接调用它而不是调用 shell。

【问题讨论】:

  • pkg-config 只会在安装了给定库的 development 包时提供信息。这在非开发者系统上不太可能。
  • 这个项目是为研究而设计的,因此假设软件包已安装是合理的,问题更多在于它的安装位置因系统而异。
  • 你能把你的程序包装在一个包中,并为你正在使用的库添加一个依赖项吗?这将以一种优雅的方式解决你的问题,你会让包系统担心依赖和版本兼容性。
  • si 生成的库是使用运行时信息创建的,这就是它如此复杂的原因。这取决于用户输入。即使程序本身是打包好的,也不代表程序生成的库会打包。
  • popen("pkg-config ...")。目前还不清楚 - 你会在没有 pkg​​-config 的系统上做什么?

标签: c++ bash pkg-config


【解决方案1】:

是否有用于 pkg-config 的 C/C++ API?

是的,有一个 C api。 https://github.com/pkgconf/pkgconf/blob/master/libpkgconf/libpkgconf.h ,应该与 libpkgconf.so 共享库一起安装。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 2011-04-27
    • 2014-09-25
    • 1970-01-01
    • 2012-08-21
    相关资源
    最近更新 更多