在使用 CMake 作为项目构建工具时,有一些库并没有提供 cmake 文件,往往提供的是 pkg-config 的 .pc 文件,虽然可以在 cmake 中用 include_directories 和 link_directories 来手动指定查找目录,但这样写并不能保证跨平台,甚至同一个库在不同Linux发行版中的位置也不一样,这个时候最好的解决方法就是能够在 cmake 中(优雅地)使用pkg-config提供的信息。
拿FFmpeg举例,这是一个纯C库,并且没有提供cmake配置文件,接下来我们要在 cmake 项目中使用 ffmpeg;
![ad8604cd0239a4f27465a6f9bbe8dc07.png](https://img-blog.csdnimg.cn/img_convert/ad8604cd0239a4f27465a6f9bbe8dc07.png)
接下来我们在 CMakeLists.txt 中的相关位置添加如下语句:
find_package(PkgConfig REQUIRED)
pkg_check_modules(ffmpeg REQUIRED IMPORTED_TARGET libavcodec libavformat libavutil)
target_link_libraries(${PROJECT_NAME} PRIVATE PkgConfig::ffmpeg)
接下来便可以优雅的使用ffmpeg了。