Skip to content
Snippets Groups Projects
Verified Commit 41835719 authored by orestis.malaspin's avatar orestis.malaspin
Browse files

updates

parent 5a2e4b56
No related branches found
No related tags found
No related merge requests found
......@@ -189,12 +189,20 @@ OBJECTS := $(patsubst %.c,%.o,$(wildcard *.c))
# That escalated quickly: `*`, `%`, `:=`, ...
```makefile
# version "longue"
SOURCES = $(wildcard *.c)
OBJECTS = $(SOURCES:.c=.o)
# version "courte"
OBJECTS := $(patsubst %.c,%.o,$(wildcard *.c))
```
Let's take one step at a time:
* Les `*`,
* Les `%`, et leurs différences.
* Les fonctions, ici `wildcard` et `patsubst`.
* Le symbole `:=` vs `=`.
* Les `*`{.makefile},
* Les `%`{.makefile}, et leurs différences.
* Les fonctions, ici `wildcard`{.makefile} et `patsubst`{.makefile}.
* Le symbole `:=`{.makefile} vs `=`{.makefile}.
# Le symbole `*`
......@@ -221,7 +229,35 @@ OBJECTS = *.o
OBJECTS := $(wildcard *.o) # retourne tous les fichier .o
```
# Le symbole `:=` vs `=` (1/2)
# La différence entre `*` et `%`
* Le symbole `*`{.makefile} sert à générer une *liste* d'objets.
* Le symbole `%`{.makefile} sert comme *emplacement* (placeholder).
## Exemple
```makefile
%.o: %.c # % est la partie avant .c
$(CC) -o $@ -c $< $(CFLAGS) # la règle pour chaque `%.c`
# équivalent à
galaxy.o: galaxy.c
stars.o: stars.c
vec.o: vec.c
```
## Application
```makefile
$(patsubst # Substitution de texte pour chaque
%.c,\ # Le pattern "avant" le .c
%.o,\ # Le pattern "avant" le .o
$(wildcard *.c)\ # Tous les fichiers .c
)
```
# Le symbole `:=`{.makefile} vs `=`{.makefile} (1/2)
Deux façon (flavors) d'assigner des variables (voir [ce lien](https://www.gnu.org/software/make/manual/html_node/Flavors.html#Flavors)):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment