Définir un lot de variables dans un makefile - C - Programmation
Marsh Posté le 17-10-2008 à 13:54:33
Y a peut-être moyen de ruser avec les targets *.o et *.64o ?
Marsh Posté le 17-10-2008 à 13:59:48
Le truc c'est qu'on ne peut pas définir de variable dans un target. Ce que je veux c'est vraiment définir ces variables *_OFILES. Elles ont un sens particulier dans l'environement dans lequel je suis. Il faut que je les définisse, et ensuite l'environement s'en sert pour faire les compils comme il faut.
Marsh Posté le 17-10-2008 à 14:02:24
Ah. J'ai pas trop fait de makefile jusqu'ici, j'essaie de me tenir aussi loin que possible de cet outil de satan.
Marsh Posté le 19-10-2008 à 23:17:31
$(eval) et $(foreach) doivent t'aider pour ce genre de problème
PRG_ROOT=tata toto titi
define Define_32OFILES
$(1)_32_OFILES = $(1).o
endef
define Define_64OFILES
$(1)_64_OFILES = $(1).64o
endef
$(foreach item,$(PRG_ROOT),$(eval $(call Define_32OFILES,$(item))))
$(foreach item,$(PRG_ROOT),$(eval $(call Define_64OFILES,$(item))))
all:
echo ${tata_32_OFILES}
echo ${tata_64_OFILES}
Marsh Posté le 17-10-2008 à 13:45:34
Dans un Makefile j'ai une variable ${PRG_ROOTS} qui contient une liste de mots, par exemple :
PRG_ROOTS = toto titi tata
Je voudrais définir automatiquement un lots de variables dont les noms seront les mots définis dans ${PRG_ROOTS}, suffixés pas _32_OFILES et _64_OFILES. Donc dans l'exemple précédent je veux que 6 variables soient définies :
toto_32_OFILES = toto.o
titi_32_OFILES = titi.o
tata_32_OFILES = tata.o
toto_64_OFILES = toto.64o
titi_64_OFILES = titi.64o
tata_64_OFILES = tata.64o
Evidement je ne veux pas me palucher ces définitions à la main. Fonctionnellement ce que je veux c'est donc un truc du genre :
PRG_ROOTS = toto titi tata
.for i in ${PRG_ROOTS}
${i}_32_OFILES = ${i}.o
${i}_64_OFILES = ${i}.64o
.endfor
Mais évidement le problème c'est que .for/.endfor, ça n'existe pas. Est-ce que vous voyer un moyen de faire ça ?