Kompiliere mehrere ** geänderte ** Quelldateien gleichzeitig in GNU make

8

Ich weiß, dass es mehrere Fragen mit ähnlichen Titeln gab, aber keine scheint eine Antwort auf das zu geben, was ich brauche (korrigiere mich, wenn ich falsch liege).

Betrachten Sie dieses Makefile:

%Vor%

Wenn ich file1.h ändere, wird Folgendes ausgeführt:

%Vor%

Was ich gerne hätte:

%Vor%

(Ich weiß, dass ich mit GCC kein Objektausgabeverzeichnis angeben kann, aber damit kann ich leben; es sollte möglich sein, mit einigen cd -Befehlen zu arbeiten.)

In nmake wird dies mit einer Double-Colon-Inferenzregel (sogenannte " Batch- Modusregel "). Im Grunde gruppiert es die Inferenzregeln (z.B. ".obj.cpp:") für mehrere Ziele und ruft den Compiler für alle Abhängigkeiten auf, anstatt einmal pro Datei. Die Variable $< ruft die Liste der Abhängigkeiten statt nur die erste ab.

Im Moment verwenden wir paralleles Bauen (make -j), aber es hat seine eigenen Probleme, und der VC ++ - Compiler funktioniert viel besser im Ein-Aufruf-Modus, also würde ich das lieber verwenden.

    
Igor Skochinsky 18.05.2011, 15:19
quelle

2 Antworten

1

Ich sehe nicht, warum Sie diesen Effekt wollen, aber hier ist, wie Sie es bekommen (in GNUMake):

%Vor%

BEARBEITEN:
Ich bin überrascht, dass diese Lösung funktioniert - etwas stimmt nicht mit meiner Vorstellung davon, was Make macht - aber ich denke nicht, dass es in Ihrem Fall mit Header-Abhängigkeiten funktionieren wird, ohne den folgenden Kludon. (Es gibt ein oder zwei andere Ansätze, die funktionieren könnten, wenn dies nicht funktioniert.)

%Vor%     
Beta 18.05.2011 16:52
quelle
1

Sie können GNUmake machen, was Sie wollen, indem Sie die Dateien sammeln, die in der Erstellungsregel neu erstellt werden sollen, und sie dann beim Verknüpfen erstellen:

%Vor%     
Chris Dodd 18.05.2011 21:25
quelle

Tags und Links