I want to compile the simplest GTK program. I can compile it using the command line:
gcc $(pkg-config --cflags --libs gtk+-3.0) main.c -o main.o
However, if I use Make it doesnt work:
CFLAGS=-g -Wall -Wextra $(pkg-config --cflags)
LDFLAGS=$(pkg-config --libs gtk+-3.0)
CC=gcc
SOURCES=$(wildcard *.c)
EXECUTABLES=$(patsubst %.c,%,$(SOURCES))
all: $(EXECUTABLES)
It tells me this:
gcc -g -Wall -Wextra -c -o main.o main.c
main.c:1:21: fatal error: gtk/gtk.h: No such file or directory
#include <gtk/gtk.h>
^
compilation terminated.
<builtin>: recipe for target 'main.o' failed
make: *** [main.o] Error 1
Where do I stick $(pkg-config --cflags --libs gtk+-3.0) in the Makefile to make it compile?
Thanks very much in advance for your kind help.
There are two issues.
First, your
CFLAGS
line is wrong: you forgot to saygtk+-3.0
in thepkg-config
part, sopkg-config
will spit out an error instead:Second, and more important,
$(...)
is intercepted by make itself for variable substitution. In fact, you've seen this already:is all done by make.
There are two things you can do.
First, you can use
`...`
instead, which does the same thing ($(...)
is newer shell syntax).Second, since you seem to be using GNU make, you can use the
shell
substitution command, which was shown in the answer Basile Starynkevitch linked above:to address the indicated error:
"main.c:1:21: fatal error: gtk/gtk.h: No such file or directory"
the error message is saying that it cannot find the gtk/gtk.h file
correct by adding the proper path to the gcc compile statement:
correct by adding the path and library name to the gcc link statement:
It would also be very worth while to look into the pkg-config file to see exactly what it contains/performs