2010-01-23 3 views
10

Ma première question (yay!) Concerne les builds gnumake et parallel. Voici un exemple de fichier rapide:Construction parallèle avec gnumake et prérequis

.PHONY: tool_1 tool_2 tool_3 tool_4 all tools 

all: | tools 

tools: | tool_2 tool_3 tool_4 

tool_1: 
    # commands for tool 1 

tool_2: | tool_1 
    # commands for tool 2 

tool_3: | tool_1 
    # commands for tool 3 

tool_4: | tool_1 
    # commands for tool 4 

Si je make -j sur ce gars-là, est ce que j'ai ici juste pour faire en sorte que les commandes pour tool_1 sont exécutées une seule fois, et avant make tente de construire l'une des tool_[234]?

Ce que je suis à la recherche est d'avoir make -j cause de tool_1 à construire d'abord, puis tool_[234] à construire en parallèle, mais sans exécuter les commandes pour tool_1 trois fois. J'espère que cela à du sens. Merci pour vos suggestions ou idées! Se comporte exactement comme vous vous attendez dans votre question.

+0

Il semble * fonctionner * comme je le veux, mais ce type de construction parallèle a un moyen de changer le comportement en fonction de la charge du système ou de la machine à la machine, etc. –

Répondre

8

make -j Il ne crée pas de dépendances plusieurs fois.

Que fait ce caractère de tuyau (|) dans votre liste de dépendances?

+10

pré-requis pour la commande: http: // www.gnu.org/software/make/manual/make.html#Prerequisite-Types – Amro

+0

C'est génial, merci @Alex. Je n'ai rien trouvé dans la documentation qui est sortie et je l'ai dit. –

+0

Je pensais que je savais que GNU se débrouillait plutôt bien, mais c'était une caractéristique qui me manquait. – JesperE

Questions connexes