2010-04-23 16 views
3

J'utilise GNU make, je veux que mes fichiers sources et fichiers objets soient dans des dossiers différents. Dans un premier temps, je veux les fichiers sources à la racine de mon dossier de projet, et les fichiers objets dans un sous-dossier (disons Debug/).faire une règle d'inférence pour les fichiers dans un dossier

La règle d'inférence serait:

.ss.obj: 
    echo Assembling $*.ss... 
    $(ASSEMBLY) $(2210_ASSEMBLY_FLAGS) $*.ss -o Debug\$*.obj 

mais dans ce cas, faire des reconstructions tous les fichiers tout le temps, car il n'y a pas obj dans le dossier racine.

Existe-t-il un moyen d'inclure un dossier pour la cible dans la ligne .ss.obj?

J'ai aussi essayé:

$(OBJS_WITH_PATH):$(SRC)  
    echo Assembling $<... 
    $(ASSEMBLY) $(ASSEMBLY_FLAGS) $< -o [email protected] 

avec $(SRC) comme une liste de toutes mes sources, $(OBJS_WITH_PATH) construit de cette façon:

OBJS_WITH_PATH = $(patsubst %.ss,Debug\\%.obj,$(SRC)) 

mais qui construit une dépendance sur tous les fichiers source pour tous les fichiers d'objets .

Ce que je voudrais est de modifier la règle d'inférence que j'ai écrite en premier pour prendre des fichiers Debug/*.obj. Ce qu'il dit maintenant est no rule to make target Debug/asdfasdf.obj.

Répondre

3

Utiliser les règles de motif:

Debug/%.obj : %.ss 
+0

Grand, il a bien fonctionné. Merci! – Gauthier