Cheatography
https://cheatography.com
Cheat sheet with commonly used constructions in Makefiles based on GNU Make
Make command line options
target |
Select the target to run |
-f file |
Select which file to read |
-W file |
Mark file as 'out of date' |
-C |
Change directory before making |
-d |
Print all debug information |
-n |
Print actions without making |
-t |
Mark encountered targets as 'up of date' |
-p |
Expand makefile and print |
-b |
Consider all targets as 'out-of-date' |
Automatic variables
$@ |
Name of the target of the recipe being run* |
$% |
The target member name, when the target is an archive member* |
$< |
Name of first prerequisite |
$? |
Names of prerequisites newer than the target |
$^ |
Names of all prerequisites |
$* |
Name of the stem |
* In case of foo.a(bar.o) $@ returns "foo.a" and $% returns "bar.o"
.PHONY
Certain targets can be marked as .PHONY. By doing this, you notify make that the target is not related to a specific filename. It will thus always be rebuilt.
.PHONY: clean
clean:
rm *.o temp |
In the example given, clean will always be rebuilt, even if a file named "clean" is found
|
|
Text manipulation functions
Syntax: $(function arguments) |
$(subst from,to,text) |
|
Substitute substring from to to in text |
$(patsubst pat,repl,text) |
|
Text substitutions using pattern pat in text |
$(text:pat=repl) |
|
Same effect as patsubst, but in different form |
$(strip string) |
|
Strip leading and trailing spaces from string |
$(findstring find,strings) |
|
Tries to find occurence of find in strings. Returns 'find' if successful, else it returns '' |
$(filter patterns,text) |
|
Returns words in text that match patterns |
$(filter-out pattern...,text) |
|
Returns words in text that DO NOT match patterns |
$(sort list) |
|
Sort list list of strings in alfabetical order |
$(word n,text) |
|
Return the nth word in text |
$(wordlist s,e,text) |
|
Return sublist of words list text starting at index s and ending at index e |
$(words text) |
|
Returns the number of words in text |
$(firstword text) |
|
Returns the first word in text |
$(lastword text) |
|
Returns the last word in text |
|
|
General rule syntax
In general, a rule looks like this:
targets : prerequisites
recipe
...
or like this:
targets : prerequisites ; recipe
recipe
... |
Variable assignment
Recursively expanded variable
var = $(shell ls)
The expansion of $(shell ls) only happens when var is referenced
Simply expanded variable
var := $(shell ls)
var ::= $(shell ls)
The expansion of $(shell ls) is done immediately
Conditionally expanded variable
var ?= $(shell ls)
Assigns the variable recursively if it is not yet defined
Incremental assignment
var += $(shell ls)
Appends to the variable. Assignment (recursive/simple) depends on var
Shell assignment
var != ls
Executes the ls command immediately in the shell and assigns result to var |
|
Created By
Metadata
Favourited By
Comments
arvindms82, 08:41 10 Apr 19
useful
Add a Comment
Related Cheat Sheets
More Cheat Sheets by bavo.van.achte