How to use pkg-config in Make

There are two issues.

First, your CFLAGS line is wrong: you forgot to say gtk+-3.0 in the pkg-config part, so pkg-config will spit out an error instead:

CFLAGS=-g -Wall -Wextra $(pkg-config --cflags gtk+-3.0)

Second, and more important, $(...) is intercepted by make itself for variable substitution. In fact, you’ve seen this already:

SOURCES=$(wildcard *.c)
EXECUTABLES=$(patsubst %.c,%,$(SOURCES))

all: $(EXECUTABLES)

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).

CFLAGS=-g -Wall -Wextra `pkg-config --cflags gtk+-3.0`
LDFLAGS=`pkg-config --libs gtk+-3.0`

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:

CFLAGS=-g -Wall -Wextra $(shell pkg-config --cflags gtk+-3.0)
LDFLAGS=$(shell pkg-config --libs gtk+-3.0)

Leave a Comment