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

updates

parent 5a2e4b56
Branches
No related tags found
No related merge requests found
Pipeline #13025 passed
...@@ -189,12 +189,20 @@ OBJECTS := $(patsubst %.c,%.o,$(wildcard *.c)) ...@@ -189,12 +189,20 @@ OBJECTS := $(patsubst %.c,%.o,$(wildcard *.c))
# That escalated quickly: `*`, `%`, `:=`, ... # 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: Let's take one step at a time:
* Les `*`, * Les `*`{.makefile},
* Les `%`, et leurs différences. * Les `%`{.makefile}, et leurs différences.
* Les fonctions, ici `wildcard` et `patsubst`. * Les fonctions, ici `wildcard`{.makefile} et `patsubst`{.makefile}.
* Le symbole `:=` vs `=`. * Le symbole `:=`{.makefile} vs `=`{.makefile}.
# Le symbole `*` # Le symbole `*`
...@@ -221,7 +229,35 @@ OBJECTS = *.o ...@@ -221,7 +229,35 @@ OBJECTS = *.o
OBJECTS := $(wildcard *.o) # retourne tous les fichier .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)): 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.
Please register or to comment