之前用 windows 开发,为了统一使用第三方库行为,我习惯 cmake + vcpkg 这套,直接用上 vcpkg.cmake 后在 cmake 中 find_package 就行。
而 linux 已经有自己的包管理器了,我直接 pacman 可以很方便的下载第三方库。但问题是有哪些统一行为能够在 cmake 引入 pacman 下载的内容(头文件+库文件)?
我能想到的是通过 pkg-config 去统一管理,在 cmake 中 find_package(PkgConfig),然后用 pkg-config 的东西去引入。
但当我通过 pacman 下载 boost 时( boost 和 boost-libs ),用 pkg-config 找不到对应的文件(例如我想引入 asio 库,但 pkg-config --list-all | grep asio 找不到相关的内容)。通过 pacman 下载的 boost 似乎没有提供 .pc 文件,导致 pkg-config 不知道这么个东西。
另外我能想到的是,手动的在 cmake 中 find_library 和 find_path 引入库文件和头文件,但这样太麻烦了(例如要使用 ffmpeg ,那我得分别手动搜索 libavformat 、libavcodec 、libavutil 、libswscale 的头文件和库文件),用 find_package 倒是可以很方便解决,但 pacman 下载的依赖似乎没有提供相关的 .cmake 文件?
似乎 pkg-config 不是终极解决方案,所以有什么方案能够统一引入依赖的行为。难道还要继续使用 vcpkg 吗?(确实好用,但看一些人的说法是 linux 上建议使用自带的包管理器)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.