Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Makefile

24 réponses
Avatar
fabrizio
Bonjour,

Je ne parviens pas à trouver de solution en terme de Makefile pour faire
la chose suivante : dans le code, une certain nombre de conditions de
précompilation permet de gérer des petites différences entre une version
verbeuse de développement et une version de production. Je voudrais au
final obtenir quelque chose du genre :
- make prod : génère la version de production ;
- make verbose : génère la version verbeuse.

Tout cela est conditionné par des define géré à la ligne de compilation :
gcc -DDEVEL -DVERBOSE ...
gcc -DPROD ...

Pour l'instant, au mieux j'utilise une condition dans le Makefile. Ce
qui m'oblige à aller modifier ledit Makefile pour changer de version.
DEBUG=yes
ifeq ($(DEBUG),yes)
CFLAGS=...
else
CFLAGS=...

Impossible de transcrire cette idée (somme toute assez basique) dans un
Makefile. N'auriez-vous pas une idée qui me permette de m'en sortir ?

Toute idée sera la bienvenue,
F.

4 réponses

1 2 3
Avatar
Paul Gaborit
À (at) Tue, 16 Oct 2007 13:46:14 +0200,
Matthieu Moy écrivait (wrote):
Paul Gaborit writes:

L'intérêt de la dépendance supplémentaire est de pouvoir gérer les
choses plus finement. On peut imaginer que la production de certains
fichiers sont indépendantes de l'aspect TEST/PROD. Et puis, même si on
oublie le 'clean', ça marchera.


Au passage, si on en est à ajouter des dépendances, une solution est
d'avoir un fichier config.h qui contienne, ou ne contienne pas
#define DEBUG, en remplacement du -DDEBUG.


Oui, mais la demande initiale spécifiait qu'on devait pouvoir basculer
d'un mode à l'autre par le simple passage d'une option à 'make' sans
modifier de fichiers.

On peut aussi imaginer d'utiliser des variables d'environnement
permettant, par exemple, de reconnaître la machine de production et
celle de tests...

En fait, tout est faisable ! ;-)

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>


Avatar
Marc Boyer
On 2007-10-16, James Kanze wrote:
On Oct 15, 2:33 pm, Marc Boyer
wrote:
.c.od:
$(CC) $(CFLAGS_DEV) $*.c -o $*.od
.c.o:
$(CC) $(CFLAGS_PROD) $*.c -o $*.o


À mon avis, il vaut mieux garder les noms des objets en .o, et
maintenir les .o dans des répertoires différents. Avec GNU make,
on put bien faire quelque chose comme :


Je suis bien d'accord, mais il semble ne pas vouloir
deux répertoires distincts. Donc, on bricole...

Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. André Maurois)


Avatar
Cyrille Lefevre
15/10/2007 15:37 - Matthieu Moy :
debug:
$(MAKE) DEBUG=yes all

all:
...


Après test, cette solution me va très bien. Je vous remercie tous.


je te conseille très fortement la double arborescence ou tu auras des
surprises à un moment ou un autre.

Regards, Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.
remove "%nospam" and ".invalid" to answer me.


Avatar
Marc Boyer
On 2007-10-18, Cyrille Lefevre wrote:
15/10/2007 15:37 - Matthieu Moy :
debug:
$(MAKE) DEBUG=yes all

all:
...


Après test, cette solution me va très bien. Je vous remercie tous.


je te conseille très fortement la double arborescence ou tu auras des
surprises à un moment ou un autre.


On peut même dire que ce moment sera quand il oubliera de faire
un "clean" entre les deux, et que ce jour là sera probablement
un jour de stress, c-à-d un jour où justement il y a des enjeux
important très sûrement.


Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. André Maurois)



1 2 3