128 lines
4.0 KiB
Makefile
128 lines
4.0 KiB
Makefile
SHELL = /bin/sh
|
||
.SUFFIXES:
|
||
.SUFFIXES: .c .o
|
||
.PHONY = run
|
||
.PHONY = clean
|
||
.PHONY: Makefile
|
||
|
||
|
||
CC=gcc
|
||
CFLAGS=`pkg-config --cflags gtk4 --libs gtk4`
|
||
WARNINGS = -Wall
|
||
DEBUG = -ggdb -fno-omit-frame-pointer
|
||
OPTIMIZE = -O2
|
||
|
||
all:
|
||
exec
|
||
|
||
exec.o: hot.c warm.c cold.c main.c Makefile
|
||
$(CC) $(CFLAGS) $(WARNINGS) $(DEBUG) $(OPTIMIZE) hot.c warm.c cold.c -o $@ main.c
|
||
|
||
clean:
|
||
rm -f exec.o
|
||
|
||
# Builder will call this to install the application before running.
|
||
install:
|
||
echo "Installing is not supported"
|
||
|
||
# Builder uses this target to run your application.
|
||
run: exec.o
|
||
./exec.o
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
#------------------------------------------------------------------------------#
|
||
# To study : how can the following commands be modified ? #
|
||
#------------------------------------------------------------------------------#
|
||
|
||
#SHELL = /bin/sh
|
||
#.SUFFIXES:
|
||
#.SUFFIXES: .c .o .h # is .h useful ?
|
||
#.PHONY = run
|
||
#.PHONY = clean
|
||
#.PHONY: Makefile
|
||
|
||
#CC=gcc
|
||
#CFLAGS=`pkg-config --cflags gtk4 --libs gtk4`
|
||
#WARNINGS = -Wall
|
||
#DEBUG = -ggdb -fno-omit-frame-pointer
|
||
#OPTIMIZE = -O2
|
||
|
||
# in exec.o:
|
||
# $(WARNINGS) $(DEBUG) $(OPTIMIZE) < ne sont pas indispensables
|
||
# si le $@ est supprimé, main.cest modifié
|
||
#all:
|
||
# exec
|
||
|
||
#install:
|
||
# echo "Installing is not supported"
|
||
|
||
|
||
|
||
|
||
|
||
|
||
#------------------------------------------------------------------------------#
|
||
# Personnal notes & links #
|
||
#------------------------------------------------------------------------------#
|
||
|
||
|
||
# gcc $( pkg-config --cflags gtk4 ) -o exec main.c $( pkg-config --libs gtk4 )
|
||
|
||
# https://www.gnu.org/software/make/manual/
|
||
|
||
# Makefiles contain five kinds of things:
|
||
# explicit rules, implicit rules, variable definitions, directives and comments.
|
||
|
||
|
||
# Variables automatiques --------------------------------------------------
|
||
# $@ fait référence à la cible de la règle (au nom de la cible).
|
||
# $< fait référence à la première dépendance.
|
||
# $? fait référence aux noms de touess les dépendances plus récentes que la cible.
|
||
# = les fichiers qui ont été modifiés après la compilation de code la plus récente
|
||
# $^ fait référence aux noms de touess les dépendances avec des espaces entre eux.
|
||
|
||
# Variables implicites -------------------------------------------------
|
||
# VPATH Équivalent utilitaire de la variable PATH de Bash. Vide par défaut.
|
||
# Les chemins sont séparés par le signe deux-points (:).
|
||
# CC Le programme pour compiler des fichiers C.
|
||
# La valeur par défaut est cc. (Habituellement, cc pointe vers gcc.)
|
||
# CPP Le programme qui exécute le préprocesseur C.
|
||
# La valeur par défaut est $ (CC) -E.
|
||
# LEX Le programme qui transforme les grammaires lexicales en code source.
|
||
# La valeur par défaut est lex. (Vous devriez remplacer cela par flex.)
|
||
# LINT Le programme qui lint votre code source. La valeur par défaut est lint.
|
||
# RM La commande pour supprimer un fichier. La valeur par défaut est rm -f.
|
||
# CFLAGS Contient tous les indicateurs du compilateur C (cc).
|
||
# CPPFLAGS tous les indicateurs du préprocesseur C.
|
||
# .PHONY Spécifie des cibles qui ne ressemblent pas au nom d'un fichier.
|
||
# Un exemple est la cible "make clean" ; où clean est une valeur de .PHONY
|
||
|
||
# Syntaxe de Base
|
||
# Règles : Une règle se compose d'une cible, des dépendances et des commandes.
|
||
# Elle est généralement structurée comme suit :
|
||
# cible: dépendances
|
||
# commande
|
||
#
|
||
# La cible (target) est le fichier à générer,
|
||
# les dépendances (prerequisites) sont les fichiers requis pour construire la cible
|
||
# et les commandes (recipe) sont les instructions exécutées pour créer la cible.
|
||
#
|
||
# A simple makefile consists of “rules” with the following shape:
|
||
# target ... : prerequisites ...
|
||
# recipe
|
||
# ...
|
||
# A target is usually the name of a file that is generated by a program;
|
||
# examples of targets are executable or object files.
|
||
# A target can also be the name of an action to carry out, such as ‘clean’
|
||
|
||
|
||
# accessoirement : https://blog.stephane-robert.info/docs/makefile/ & /docs/task/
|
||
|