簡體   English   中英

在 Cmake 中包含 pkg-config --cflags --libs gtk+-2.0

[英]Include pkg-config --cflags --libs gtk+-2.0 in Cmake

我正在 debian11 上使用 cmake 構建 c 代碼。 因為我不太了解 cmake。 當我構建代碼時,我出錯了

 fatal error: gio/gio.h: No such file or directory
   17 | #include <gio/gio.h>
      |          ^~~~~~~~~~~
compilation terminated.

我安裝了 glib 庫並檢查了哪些存在於我的系統中

oot@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/

所以在網上搜索后發現需要使用以下參數pkg-config --cflags --libs gtk+-2.0 Output 是

This is output for ```root@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```

但是我沒有找到將這個包含在 cmake 中的方法。

Aslo 通過在 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})

但是沒用過請幫忙解決問題

謝謝

始終使用可用的導入目標 CMake 的 PkgConfig 支持創建導入的目標。 因此,您應該使用它們。 這是一個簡單的例子:

cmake_minimum_required(VERSION 3.21)
project(example)

find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK REQUIRED IMPORTED_TARGET "gtk+-2.0")

add_executable(main main.cpp)
target_link_libraries(main PRIVATE PkgConfig::GTK)

這是我用於測試的main.cpp

#include <gio/gio.h>

int main () { return 0; }

這是我在終端看到的:

alex@Alex-Desktop:~/test$ cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=Release
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")
-- Checking for module 'gtk+-2.0'
--   Found gtk+-2.0, version 2.24.32
-- Configuring done
-- Generating done
-- Build files have been written to: /home/alex/test/build
alex@Alex-Desktop:~/test$ cmake --build build --verbose
[1/2] /usr/bin/c++  -isystem /usr/include/gtk-2.0 -isystem /usr/lib/x86_64-linux-gnu/gtk-2.0/include -isystem /usr/include/pango-1.0 -isystem /usr/include/atk-1.0 -isystem /usr/include/gdk-pixbuf-2.0 -isystem /usr/include/libmount -isystem /usr/include/blkid -isystem /usr/include/fribidi -isystem /usr/include/cairo -isystem /usr/include/pixman-1 -isystem /usr/include/harfbuzz -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -isystem /usr/include/uuid -isystem /usr/include/freetype2 -isystem /usr/include/libpng16 -O3 -DNDEBUG -pthread -MD -MT CMakeFiles/main.dir/main.cpp.o -MF CMakeFiles/main.dir/main.cpp.o.d -o CMakeFiles/main.dir/main.cpp.o -c /home/alex/test/main.cpp
[2/2] : && /usr/bin/c++ -O3 -DNDEBUG  CMakeFiles/main.dir/main.cpp.o -o main  /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so  /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so  /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so  /usr/lib/x86_64-linux-gnu/libatk-1.0.so  /usr/lib/x86_64-linux-gnu/libcairo.so  /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so  /usr/lib/x86_64-linux-gnu/libgio-2.0.so  /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so  /usr/lib/x86_64-linux-gnu/libpango-1.0.so  /usr/lib/x86_64-linux-gnu/libgobject-2.0.so  /usr/lib/x86_64-linux-gnu/libglib-2.0.so  /usr/lib/x86_64-linux-gnu/libharfbuzz.so  /usr/lib/x86_64-linux-gnu/libfontconfig.so  /usr/lib/x86_64-linux-gnu/libfreetype.so && :

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM