What is the meaning of the following makefile variables:
$@
,
$<
,
$^
,
CFLAGS
,
LDFLAGS
,
LDLIBS
.
Hint: GNU make manual:
automatic variables,
implicit variables,
implicit rules.
What will the following makefile print (after running command
make
) and why,
CFLAGS = -Wall -Ofast -std=c1x C = F all: echo CFLAGS echo $CFLAGS echo $(C)FLAGS echo $(CFLAGS)
Suppose you have your whole C-program in one file main.c
.
Which of the following makefiles will compile and link the
program into the executable file main
?
all: main
main: main.c
main: main.o
all: main main: main.o main.o: main.c
all: main main.o: main.c main: main.o
main.o: main.c all: main main: main.o
main: main.c cc main.c -o main
main: main.c $(CC) $(CFLAGS) $(LDFLAGS) $^ $(LDLIBS) -o $@
all: main main: main.o cc main.o -o main main.o: main.c cc -c main.c -o main.o