我着手一个小项目,其中已经编写了 CMakeLists.txt 并尝试在
Ubuntu MATE 20.04
上构建它。通过 apt
安装库后,我遇到了丢失的 glib-2.0
:
Make Error at /snap/cmake/1334/share/cmake-3.27/Modules/FindPkgConfig.cmake:607 (message):
A required package was not found
Call Stack (most recent call first):
/snap/cmake/1334/share/cmake-3.27/Modules/FindPkgConfig.cmake:829 (_pkg_check_modules_internal)
CMakeLists.txt:9 (pkg_check_modules)
首先我检查它是否安装了
apt search libglib2.0 | grep installed
(常规和开发版,以防万一):
libglib2.0-0/focal-updates,focal-security,now 2.64.6-1~ubuntu20.04.6 amd64 [installed]
libglib2.0-bin/focal-updates,focal-security,now 2.64.6-1~ubuntu20.04.6 amd64 [installed]
libglib2.0-cil/focal,now 2.12.40-3 amd64 [installed]
libglib2.0-cil-dev/focal,now 2.12.40-3 amd64 [installed]
libglib2.0-data/focal-updates,focal-updates,focal-security,focal-security,now 2.64.6-1~ubuntu20.04.6 all [installed]
libglib2.0-dev/focal-updates,focal-security,now 2.64.6-1~ubuntu20.04.6 amd64 [installed]
libglib2.0-dev-bin/focal-updates,focal-security,now 2.64.6-1~ubuntu20.04.6 amd64 [installed]
libglib2.0-doc/focal-updates,focal-updates,focal-security,focal-security,now 2.64.6-1~ubuntu20.04.6 all [installed]
libglib2.0-tests/focal-updates,focal-security,now 2.64.6-1~ubuntu20.04.6 amd64 [installed]
pkg-config
显示为 pkg-config --list-all | grep glib
:
gio-unix-2.0 GIO unix specific APIs - unix specific headers for glib I/O library
glib-2.0 GLib - C Utility Library
dbus-c++-glib-1 libdbus-c++-glib - Native C++ bindings for D-Bus (Glib Mainloop)
dbus-glib-1 dbus-glib - GLib integration for the free desktop message bus
gio-2.0 GIO - glib I/O library
glib-sharp-2.0 GLib - GLib
并且
CMakeLists.txt
有线路可以找到它(我猜这就是它失败的地方):
include(FindPkgConfig)
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)
我尝试询问 ChatGPT,它建议在执行 CMake 时将完整路径传递给
GLIB_LIBRARY
变量:
cmake -DGLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libglib-2.0.so
正如你可能猜到的,这并没有带我去任何地方。
我很确定需要在
CMakeLists.txt
中完成一些配置,所以我将查看 CMake 文档。
将不胜感激任何线索/想法。
我决定尝试注释掉一些与 CMake 相关的文件行。在 toolchain 文件
linux-x86_64.cmake
中,我删除了这一行:
set(ENV{PKG_CONFIG_LIBDIR} "${CMAKE_SYSROOT}/usr/lib/pkgconfig:${CMAKE_SYSROOT}/usr/share/pkgconfig")
我猜它搞乱了
pkg-config
的行为。