2009-08-20 3 views
1

Les Makefiles sont vraiment très utiles. Mais, la syntaxe est quelque peu complexe et limitée. Pour un projet, je dois créer des cibles 1 à n, et voudrais vraiment écrire quelque chose comme ceci:Comment générer des Makefiles complexes, par ex. à partir d'un modèle

all : target1 ... target100 

target%d : target%d.pre 
    ./script.py %d 

Je voudrais avoir make capture la variable (%d), puis l'utiliser tout au long de la règle. Je pourrais imaginer qu'il est possible de le faire avec une utilisation complexe de modèles (% .xyz) et patsubst s, mais ce serait très maladroit et illisible.

Je pense à utiliser un moteur de modèle comme Cheetah pour écrire un modèle (qui peut contenir des boucles) qui serait ensuite converti en un Makefile. Est-ce que quelqu'un a une meilleure idée ou une expérience avec ça?

+1

Quel est le problème avec l'objectif%: cible % .pre (retour chariot, onglet) ./script.py $ * – Beta

+0

ah, cool! De la lecture des docs, je pensais que seuls les suffixes (% .o) étaient possibles, mais pas les préfixes. Agréable. :) –

Répondre

0

Comme beta a fait remarquer dans un commentaire, la deuxième partie est en fait résolu par

target% : target%d.pre 
    ./script.py %d 

Étant donné que, la première partie peut être résolu par:

files := $(shell for i in `seq 1 100`; do echo target$$i; done) 

all : $(files) 
0

Vous devriez jeter un oeil à CMake, qui peut faire toute la génération de fichier makefile pour vous.