CITS2002 Systems Programming  
prev
next CITS2002 CITS2002 schedule  

Variable substitutions in make

As we see from the previous example, Makefiles can themselves become long, detailed files, and we'd like to "factor out" a lot of the common information.
It's similar to setting constants in C, with #define

Although not a full programming language, make supports simple variable definitions and variable substitutions (and even conditions and functions!).


# A Makefile to build our 'calcmarks' project

C11     =  cc -std=c11
CFLAGS  =  -Wall -Werror


calcmarks : calcmarks.o globals.o readmarks.o correlation.o
       $(C11) $(CFLAGS) -o calcmarks \
                  calcmarks.o globals.o readmarks.o correlation.o -lm


calcmarks.o : calcmarks.c calcmarks.h
       $(C11) $(CFLAGS) -c calcmarks.c

globals.o : globals.c calcmarks.h
       $(C11) $(CFLAGS) -c globals.c

readmarks.o : readmarks.c calcmarks.h
       $(C11) $(CFLAGS) -c readmarks.c

correlation.o : correlation.c calcmarks.h
       $(C11) $(CFLAGS) -c correlation.c

Of note:
  • variables are usually defined near the top of the Makefile.
  • the variables are simply expanded in-line with $(VARNAME).
  • warning - the syntax of make's variable substitutions is slightly different to those of our standard shells.

 


CITS2002 Systems Programming, Lecture 17, p13, 26th September 2023.