哪些库应该作为依赖项进入 pkg-config 文件?
Which libraries should go to a pkg-config file as a dependencies?
我正在编写一个共享库,它本身依赖于 boost
和 pcl
库。
在为我的库生成 .pc
文件时,我是否应该将所有这些库也作为依赖项添加到 .pc
文件中?
自从我上次研究这些东西以来已经有很长时间了,我有点困惑它是如何在 Linux 上再次起作用的。当我的测试应用程序 links 到我的库时,我必须再次将所有这些 pcl
和 boost
库添加到构建中,即使库已经针对这些 linked库。
但是当我查看 libQtGui.so
的 deps 时,例如,它有数十种各种库 link,但我不需要制作我的应用程序 link 到那些库...只有 -lQtGui
就足够了。
我刚刚使用 CMake 和 link_libraries
添加了 boost
和 pcl
库。
When generating .pc file for my library should I add all these libraries also to the .pc file as dependencies?
这取决于您图书馆的API:
- 如果 public(即可安装)headers 你的库使用 boost/pcl(即有
#inclue <boost/...>
)(换句话说,你使用 PUBLIC
(或 INTERFACE
) 当 link 你的库在 CMake+boost/pcl 中时命名关键字 target_link_libraries
) - 然后 yes 你需要添加'嗯;
- 否则,这取决于你到底有什么 - 即你的 DSO 是否有 boost/pcl 库的
DT_NEEDED
条目(最有可能)或没有(你可以检查它 / ldd <your-lib>.so
)。对于最后一种情况,您还需要将依赖项添加到 *.pc
文件中。
此外,如果来自 boost/pcl 的二进制依赖项(不知道后者是否有任何 DSO),请确保指定 linked 库的确切位置——因为用户可能有多个 (co-existed) boost 安装(可能不兼容)或者可以(稍后)升级到其他(二进制不兼容)版本(而且你不能真的用它做 smth)......重要的是 link编辑到与您相同的(或至少二进制兼容,这很难保证提升)库……
I have just used CMake and link_libraries
to add boost and pcl libs.
请阅读有关 "Modern CMake" 的信息并停止使用 link_libraries
:-) -- 请改用 target_link_libraries
…
我正在编写一个共享库,它本身依赖于 boost
和 pcl
库。
在为我的库生成 .pc
文件时,我是否应该将所有这些库也作为依赖项添加到 .pc
文件中?
自从我上次研究这些东西以来已经有很长时间了,我有点困惑它是如何在 Linux 上再次起作用的。当我的测试应用程序 links 到我的库时,我必须再次将所有这些 pcl
和 boost
库添加到构建中,即使库已经针对这些 linked库。
但是当我查看 libQtGui.so
的 deps 时,例如,它有数十种各种库 link,但我不需要制作我的应用程序 link 到那些库...只有 -lQtGui
就足够了。
我刚刚使用 CMake 和 link_libraries
添加了 boost
和 pcl
库。
When generating .pc file for my library should I add all these libraries also to the .pc file as dependencies?
这取决于您图书馆的API:
- 如果 public(即可安装)headers 你的库使用 boost/pcl(即有
#inclue <boost/...>
)(换句话说,你使用PUBLIC
(或INTERFACE
) 当 link 你的库在 CMake+boost/pcl 中时命名关键字target_link_libraries
) - 然后 yes 你需要添加'嗯; - 否则,这取决于你到底有什么 - 即你的 DSO 是否有 boost/pcl 库的
DT_NEEDED
条目(最有可能)或没有(你可以检查它 /ldd <your-lib>.so
)。对于最后一种情况,您还需要将依赖项添加到*.pc
文件中。
此外,如果来自 boost/pcl 的二进制依赖项(不知道后者是否有任何 DSO),请确保指定 linked 库的确切位置——因为用户可能有多个 (co-existed) boost 安装(可能不兼容)或者可以(稍后)升级到其他(二进制不兼容)版本(而且你不能真的用它做 smth)......重要的是 link编辑到与您相同的(或至少二进制兼容,这很难保证提升)库……
I have just used CMake and
link_libraries
to add boost and pcl libs.
请阅读有关 "Modern CMake" 的信息并停止使用 link_libraries
:-) -- 请改用 target_link_libraries
…