Windows环境下CMake通过PkgConfig无法检测到已安装的glib-2.0
Windows下CMake无法检测Conan安装的glib的解决方法
核心原因
Windows环境默认没有pkg-config工具,且Conan安装的glib包默认存放在本地缓存中,CMake的pkg_search_module无法自动识别其路径。以下是几种可行的解决方式:
方法1:使用Conan CMake工具链自动配置(推荐)
这种方式无需手动调整路径,让Conan全权处理依赖配置:
- 在项目根目录创建
conanfile.txt:
[requires] glib/2.78.3 [generators] CMakeDeps CMakeToolchain
- 打开终端进入项目目录,执行安装命令:
conan install . --output-folder=build --build=missing
- 用CMake构建时指定工具链文件:
cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=build/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release cmake --build build
完成后CMake会自动识别Conan安装的glib,无需修改原有pkg_search_module语句(或直接改用find_package)。
方法2:手动配置pkg-config路径
若坚持使用pkg_search_module,需让pkg-config找到glib的.pc文件:
- 定位Conan中glib的缓存路径,格式为:
C:\Users\<你的用户名>\.conan2\packages\glib\2.78.3\<编译配置>\res\lib\pkgconfig
(<编译配置>为你的编译器标识,比如msvc-193-x86_64) - 临时设置环境变量(终端内生效):
set PKG_CONFIG_PATH=C:\Users\<你的用户名>\.conan2\packages\glib\2.78.3\msvc-193-x86_64\res\lib\pkgconfig
- 确保已安装
pkg-config工具,可通过Chocolatey安装:
choco install pkgconfiglite
- 重新运行CMake,
pkg_search_module(GLIB REQUIRED glib-2.0)即可正常检测到包。
方法3:改用CMake的find_package
- 按方法1创建
conanfile.txt并执行conan install,生成CMakeDeps配置文件 - 修改CMakeLists.txt,替换
pkg_search_module语句:
find_package(glib-2.0 REQUIRED)
- 链接库时使用Conan生成的目标:
target_link_libraries(你的项目名 PRIVATE glib-2.0::glib-2.0)
这种方式更适配CMake生态,无需依赖pkg-config工具。
额外检查项
- 执行
conan list glib/2.78.3确认包已成功安装 - 使用Visual Studio时,需打开对应的Developer Command Prompt执行命令,避免环境变量不匹配
- 检查CMakeLists.txt中
pkg_search_module的包名是否为glib-2.0(注意不要写成glib)
内容的提问来源于stack exchange,提问作者Jonathon Quick
相关产品推荐
相关产品推荐

