CMake运行时pkg-config无法找到glib-2.0问题求助
解决Ubuntu MATE 20.04上CMake找不到已安装glib-2.0的问题
问题根源
核心问题是Snap版本的CMake运行在沙箱环境中,无法默认访问系统的pkg-config配置目录——尽管系统已通过apt安装glib-2.0开发包,且本地终端的pkg-config命令能正常识别,但Snap版CMake调用的pkg-config无法读取到系统的.pc配置文件。
解决方案
方案1:替换为系统apt版本的CMake(推荐)
Snap版CMake的沙箱隔离是主要诱因,改用Ubuntu官方仓库的CMake可彻底避免这类环境路径问题:
# 卸载Snap版CMake sudo snap remove cmake # 更新仓库并安装系统版CMake sudo apt update sudo apt install cmake
安装完成后重新执行cmake ..即可正常识别glib-2.0。
方案2:为Snap版CMake指定pkg-config路径
若必须保留Snap版CMake,需手动指定系统pkg-config配置文件的路径,让CMake能找到glib-2.0的.pc文件:
cmake -DPKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig ..
该路径是Ubuntu 20.04 x86_64系统中glib-2.0.pc文件的默认存放位置。
方案3:补充CMakeLists.txt的路径检查(可选)
你的CMakeLists.txt写法本身无问题,可补充显式的路径检查确保pkg-config定位正常:
include(FindPkgConfig) # 强制指定pkg-config路径(适配环境变量未正确设置的场景) set(PKG_CONFIG_PATH "/usr/lib/x86_64-linux-gnu/pkgconfig" CACHE STRING "pkg-config path") pkg_check_modules (GLIB REQUIRED IMPORTED_TARGET glib-2.0) pkg_check_modules (DBUS REQUIRED IMPORTED_TARGET dbus-1) pkg_check_modules (SQLITE3 REQUIRED IMPORTED_TARGET sqlite3) pkg_check_modules (JSON-C REQUIRED IMPORTED_TARGET json-c)
此方案仅作辅助,优先推荐前两种环境层面的解决方法。
内容的提问来源于stack exchange,提问作者BeaverShallBurn
相关产品推荐
相关产品推荐

