67 lines
1.3 KiB
Markdown
67 lines
1.3 KiB
Markdown
![]() |
---
|
||
|
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
|
||
|
```
|