added first cheatsheets
This commit is contained in:
66
Cheatsheets/makefile.md
Normal file
66
Cheatsheets/makefile.md
Normal file
@@ -0,0 +1,66 @@
|
||||
---
|
||||
title: makefile
|
||||
description:
|
||||
published: true
|
||||
date: 2023-04-28T02:38:18.678Z
|
||||
tags:
|
||||
editor: markdown
|
||||
dateCreated: 2023-04-28T02:22:37.379Z
|
||||
---
|
||||
|
||||
# Makefile
|
||||
|
||||
```
|
||||
VARIABLE = VALUE
|
||||
|
||||
RULE: Dependency $(FUNCTION)
|
||||
$(FUNCTION)
|
||||
Task
|
||||
|
||||
|
||||
|
||||
|
||||
VAR = value #normale value assignment
|
||||
VAR := $(VAR).o #value assignment with expansion
|
||||
VAR != uname #add output of command
|
||||
VAR := $(sh uname) #alternative way to add output
|
||||
VAR += -Wall -Werror -Wextra #Append to value
|
||||
VAR ?= $(VAR) #only sets if not defined
|
||||
|
||||
Text functions
|
||||
$(SRC:.c=.o) #Changes all suffixes from .c to .o
|
||||
|
||||
Filename functions
|
||||
$(addprefix obj/,$(OBJ)) #Adds a directory to the filenames
|
||||
|
||||
conditional functions
|
||||
if
|
||||
ifeq
|
||||
ifdef
|
||||
else
|
||||
or
|
||||
and
|
||||
endif
|
||||
foreach
|
||||
|
||||
value function
|
||||
$(value (VAR)) #print value without expanding
|
||||
|
||||
shell function
|
||||
$(shell COMMAND) #insert output here
|
||||
|
||||
control functions
|
||||
$(error Something went wrong) #Makefile will stop here
|
||||
$(warning This is a warning) #Display a warning
|
||||
$(info This is some info) #Display some info
|
||||
|
||||
$@ #is the rule name
|
||||
$< #is the first dependancy
|
||||
$^ #are all dependancies
|
||||
$? #only dependencies that have changed
|
||||
$| #If anything changed, rebuild everything
|
||||
% #acts as a wildcard in the rule
|
||||
|
||||
|
||||
.PHONY: all clean fclean re bonus #Doesn't create a file named after the target
|
||||
```
|
||||
Reference in New Issue
Block a user