Я пытался настроить GTK4.0 в своем проекте C, но я еще не нашел ничего, что работало бы, кроме, возможно, жесткого включения каждого каталога в установленной мной версии gtk, но я, понятно, хочу иметь более элегантное решение. .
Извините, если проблема проста, мне действительно нужно это сделать... Вот текущий файл CMakeLists:
cmake_minimum_required(VERSION 3.12)
project(ProjectCESGI C)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_FLAGS "-Wall")
find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK REQUIRED gtk-4.0)
include_directories(${GTK4_INCLUDE_DIRS})
link_directories(${GTK4_LIBRARY_DIRS})
add_definitions(${GTK4_CFLAGS_OTHER})
target_link_libraries(gtk_test ${GTK4_LIBRARIES})
link_directories(C:/gtk-build/gtk/x64/release/lib)
link_libraries(gtk)
add_executable(ProjectCESGI main.c)
target_link_libraries(ProjectCESGI gtk)
Если вам нужно что-то еще, дайте мне знать.
Я попытался найти выход из ненайденных заголовков, но остановился на полпути, поняв, насколько нелепым был этот процесс. Я также пытался найти пакет, который должен каким-то образом помочь мне установить библиотеку PkgConfig, но это тоже не работает.
Первый параметр, переданный в pkg_check_modules
, обозначает префикс для всех переменных, созданных этим вызовом. Поскольку вы передаете здесь GTK
, вызов создаст такие переменные, как GTK_INCLUDE_DIRS
. Если вы хотите использовать GTK4_INCLUDE_DIRS
, вместо этого передайте GTK4
в качестве первого параметра.
Это должно работать:
cmake_minimum_required(VERSION 3.18)
project(ProjectCESGI LANGUAGES C)
find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK4 REQUIRED IMPORTED_TARGET gtk4)
add_executable(ProjectCESGI main.c)
target_link_libraries(ProjectCESGI PRIVATE PkgConfig::GTK4)
Всегда лучше использовать импортированную цель, когда она доступна, и pkg_check_modules
может создать ее для вас с помощью опции IMPORTED_TARGET
. Когда вы связываетесь с импортированной целью через target_link_libraries
, CMake знает, как настроить соответствующие каталоги включения, каталоги ссылок, определения компиляции и т. д. для использования библиотеки.
Внимательно изучите документацию, если в вашей сборке возникают проблемы с поиском GTK4. Ваша сборка действительно не должна быть более сложной, чем эта.
Оно работает! Я не могу отблагодарить вас за это! Хотя мне и пришлось заменить "gtk-4.0" просто на "gtk4", но, наконец, это работает, как задумано... Еще раз спасибо!
Не могли бы вы предоставить пример/минимальный код воспроизведения и шаги для воспроизведения проблемы? Позвольте мне помочь вам, попробовав это с моей стороны