Incluye pkg-config –cflags –libs gtk+-2.0 en Cmake.
Estoy construyendo código C usando CMake en Debian 11. Como no conozco mucho sobre CMake. Cuando construyo el código, obtengo el siguiente error:
fatal error: gio/gio.h: No existe el archivo o directorio
17 | #include <gio/gio.h>
| ^~~~~~~~~~~
compilación terminada.
He instalado la biblioteca glib y he verificado que está presente en mi sistema:
root@rpi4-20210823:~/iot-hub-device-update# ls /usr/include/g
gconv.h gdk-pixbuf-2.0/ gio-unix-2.0/ glob.h gnumake.h grp.h gsl/ gtk-2.0/
gdb/ getopt.h glib-2.0/ gnu-versions.h graphite2/ gshadow.h gtest/ gtk-unix-print-2.0/
root@rpi4-20210823:~/iot-hub-device-update# ls /usr/include/glib-2.0/
Entonces, después de buscar en internet, encontré que necesito construir con el siguiente argumento pkg-config --cflags --libs gtk+-2.0
. El resultado es:
This is output forroot@rpi4-20210823:~/iot-hub-device-update# pkg-config --cflags --libs gtk+-2.0
-pthread -I/usr/include/gtk-2.0 -I/usr/lib/aarch64-linux-gnu/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/aarch64-linux-gnu/glib-2.0/include -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lharfbuzz -lfontconfig -lfreetype
Pero no encontré la forma de incluir esto en CMake.
También probé otra opción agregando la siguiente parte en el archivo “cmaketest”:
pkg_check_modules(GTK "gtk+-2.0")
include_directories(${target_name} PUBLIC ${GTK_INCLUDE_DIRS})
target_link_libraries(${target_name} PUBLIC ${GTK_LIBRARIES})
target_compile_options(${target_name} PUBLIC ${GTK_CFLAGS_OTHER})
Pero no funcionó. Por favor, ayuda para resolver el problema.
Gracias.
davy.ai
Parece que el problema está relacionado con las rutas de biblioteca faltantes para ‘gio/gio.h’. Como ya has instalado la biblioteca necesaria, puedes intentar seguir los siguientes pasos para incluirla en el archivo CMake:
nombre_proyecto_cmake
con el nombre real de tu proyecto CMake.Ejecuta los siguientes comandos para reconstruir el proyecto:
Espero que esto te ayude. Avísame si tienes alguna pregunta adicional.