Gtk4 Compiling is Not Working as Expected

Hello ,
I am trying to learn gtk4 with C . I installed it via MSYS2 . it works fine when I compile it with the command line on windows 10 with this command

gcc main.c  -IC:/msys64/mingw64/bin/../include/gtk-4.0 -IC:/msys64/mingw64/bin/../include/pango-1.0 -IC:/msys64/mingw64/bin/../include/gdk-pixbuf-2.0 -IC:/msys64/mingw64/bin/../include/cairo -IC:/msys64/mingw64/bin/../include/graphene-1.0 -IC:/msys64/mingw64/bin/../lib/graphene-1.0/include -mfpmath=sse -msse -msse2 -IC:/msys64/mingw64/bin/../include -IC:/msys64/mingw64/bin/../include/harfbuzz -IC:/msys64/mingw64/bin/../include/freetype2 -IC:/msys64/mingw64/bin/../include/glib-2.0 -IC:/msys64/mingw64/bin/../lib/glib-2.0/include -IC:/msys64/mingw64/bin/../include/webp -DLIBDEFLATE_DLL -IC:/msys64/mingw64/bin/../include/pixman-1 -IC:/msys64/mingw64/bin/../include/libpng16 -IC:/msys64/mingw64/bin/../include/fribidi -LC:/msys64/mingw64/bin/../lib -lgtk-4 -lpangowin32-1.0 -lharfbuzz -lpangocairo-1.0 -lpango-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lcairo -lgraphene-1.0 -lgio-2.0 -lglib-2.0 -lintl -lgobject-2.0

but does not work with

gcc -Wall $( pkg-config --cflags gtk4 ) -o executable.exe main.c  $( pkg-config --libs gtk4 )

it gives

gcc: error: unrecognized command-line option '--cflags'
gcc: error: unrecognized command-line option '--libs'; did you mean '--libs='?

although pkg-config works fine in the command line

pkg-config --modversion gtk4

4.12.1
pkg-config --cflags gtk4

-IC:/msys64/mingw64/bin/../include/gtk-4.0 -IC:/msys64/mingw64/bin/../include/pango-1.0 -IC:/msys64/mingw64/bin/../include/gdk-pixbuf-2.0 -IC:/msys64/mingw64/bin/../include/cairo -IC:/msys64/mingw64/bin/../include/graphene-1.0 -IC:/msys64/mingw64/bin/../lib/graphene-1.0/include -mfpmath=sse -msse -msse2 -IC:/msys64/mingw64/bin/../include -IC:/msys64/mingw64/bin/../include/harfbuzz -IC:/msys64/mingw64/bin/../include/freetype2 -IC:/msys64/mingw64/bin/../include/glib-2.0 -IC:/msys64/mingw64/bin/../lib/glib-2.0/include -IC:/msys64/mingw64/bin/../include/webp -DLIBDEFLATE_DLL -IC:/msys64/mingw64/bin/../include/pixman-1 -IC:/msys64/mingw64/bin/../include/libpng16 -IC:/msys64/mingw64/bin/../include/fribidi
pkg-config --libs gtk4

-LC:/msys64/mingw64/bin/../lib -lgtk-4 -lpangowin32-1.0 -lharfbuzz -lpangocairo-1.0 -lpango-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lcairo -lgraphene-1.0 -lgio-2.0 -lglib-2.0 -lintl -lgobject-2.0

also if its applicable to help with Clion
my Cmake is

cmake_minimum_required(VERSION 3.26)
project(untitled2 C)

set(CMAKE_C_STANDARD 11)

set(SOURCE_FILES main.c)

# use this to find the brew package.
find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK4 REQUIRED gtk4)

include_directories(${GTK4_INCLUDE_DIRS})
link_directories(${GTK4_LIBRARY_DIRS})

add_definitions(${GTK4_CFLAGS_OTHER})

add_executable(${PROJECT_NAME} ${SOURCE_FILES})

target_link_libraries(${PROJECT_NAME} ${GTK4_LIBRARIES})

but I get

fatal error: gtk/gtk.h: No such file or directory

when I try to compile it

I’d try pkg_check_modules(GTK4 REQUIRED IMPORTED TARGET gtk4) and then instead of adding all the separate variables, just do target_link_libraries(${PROJECT_NAME} PkgConfig::GTK4)

Imported targets are so much nicer to work with if you have to stick to CMake

Sorry I am just a new learner . Do you mean that cmake file should look like this ?

cmake_minimum_required(VERSION 3.26)
project(untitled2 C)

set(CMAKE_C_STANDARD 11)

set(SOURCE_FILES main.c)

pkg_check_modules(GTK4 REQUIRED IMPORTED TARGET gtk4)



add_executable(${PROJECT_NAME} ${SOURCE_FILES})

target_link_libraries(${PROJECT_NAME} PkgConfig::GTK4)

if yes I am still getting

fatal error: gtk/gtk.h: No such file or directory

Does your build have a "--verbose" build option, to see what commands are actually being run ?

Hello guys

I am not sure where to type

--verbose

but I changed cmake to this

cmake_minimum_required(VERSION 3.26)
project(untitled2 C)
set(CMAKE_C_STANDARD 23)
# the `pkg_check_modules` function is created with this call
find_package(PkgConfig REQUIRED)

# these calls create special `PkgConfig::<MODULE>` variables
pkg_check_modules(MY_PKG REQUIRED IMPORTED_TARGET GTK4)


add_executable(untitled2 main.c)

target_link_libraries(untitled2 PUBLIC  PkgConfig::MY_PKG )

then build it and now working fine

This topic was automatically closed 45 days after the last reply. New replies are no longer allowed.