使用vcpkg安装taglib后,CMake中find_package无法找到该库
通过vcpkg清单模式安装taglib后,无法使用find_package(Taglib)(已尝试taglib、Taglib、TagLib等多种大小写写法),触发如下CMake错误:
CMake Error at vcpkg/scripts/buildsystems/vcpkg.cmake:853 (_find_package):
Could not find a package configuration file provided by "Taglib" with any
of the following names:TaglibConfig.cmake taglib-config.cmakeAdd the installation prefix of "Taglib" to CMAKE_PREFIX_PATH or set
"Taglib_DIR" to a directory containing one of the above files. If "Taglib"
provides a separate development package or SDK, be sure it has been
installed.
Call Stack (most recent call first):
CMakeLists.txt:40 (find_package)
检查发现无taglib相关变量导出,Taglib_DIR值为Taglib_DIR-NOTFOUND。此前遇到类似问题可通过重建/重装、执行引导脚本解决,但此次无效。在./vcpkg/buildtrees/taglib/src/v1.13-5298fc2c7f.clean/下找到taglib-config.cmake,在./vcpkg/buildtrees/taglib/x64-linux-rel/下找到非cmake格式的taglib-config文件,但其他vcpkg安装的包通常会在vcpkg_installed/x64-linux/share/<package>下存放配置文件(如immer的ImmerConfig.cmake),taglib却没有该目录结构。已加载vcpkg工具链文件,求排查方向。
采用PkgConfig替代find_package来引入taglib,修改CMakeLists.txt如下:
find_package(PkgConfig) pkg_check_modules(TAGLIB REQUIRED IMPORTED_TARGET taglib) target_link_libraries(thetarget PRIVATE PkgConfig::TAGLIB)
内容的提问来源于stack exchange,提问作者altschuler

