# My Notes for Makefile

## 2018/10/23

Categories: programming Tags: trivial

Although make is part of the gnu toolset, its use is not restricted to compile a c++ program. make can be used to do various kinds of work.

Here is my notes on makefile for my future self. I find it of great help to keep these notes handy. For example, I often come back for this one

### Macro

• Define macro(variable, but it’s called macro in makefile) with equal sign, multiple values can be assigned to one macro. use macro in the form of $(A) A = a b c$(A)


### Rules

• The structure of a rule
%.o: $(DEPS)$(CC) -c -o $@$< $(CFLAGS)  • %.o: target file •$(DEPS): file dependency (to generate target)
• \tab+command: usual linux commands

My notes:

• Type make will run the first rule in a Makefile.

• Special rule: .PHONY: clean tells make that clean is not a file. Always execute commands under the clean rule, even if there’s a clean file in the working directory.

• Automatic variables

• $@ target of the rule • $< first prerequisite
• \$^ all prerequisite
• Sublime will transform tab to 4 spaces, turn that off for makefile

• @ before a command will prevent printing the command before executing.

• % for quoting.

## Resources

gnu make manual

A Simple Makefile Tutorial

An interesting SO question of makefile use case