Ich habe ein Makefile mit einer Zeile enthält eine Liste von Komponenten auf der rechten Seite. Ich möchte Makro $^verwenden, um die Liste in einem anderen Verzeichnis zu archivieren. Die folgende Zeile verwendet nur die erste Komponente in anderem Verzeichnis und den Rest im aktuellen Verzeichnis verarbeitet, die falsch ist:
libExApp.a: xapp_e.o xsage_e.o users.o id.o prog.o
ar rc [email protected] ia32/$^
Wenn ich geschweifte Klammer verwenden {}, dann gibt es kein Komma zwischen Dateien in der zu bearbeitenden dasselbe Verzeichnis.
Also, wie kann ich mehrere Komponenten alle in einem Verzeichnis verarbeitet verwenden.
Sie sollten die Dateien, die Sie als Abhängigkeiten verwenden, auflisten und einfach 'ar rc $ @ $ ^' als Rezept verwenden. Berücksichtigen Sie auch den Versuch, Rezepte zu verwenden, die Dateien in einem Verzeichnis aus Dateien in einem anderen erstellen; 'make' wurde nicht wirklich mit diesem Gedanken entworfen, und obwohl es möglich ist, bevorzuge ich die traditionelle Vorgehensweise, nämlich alle Dateien an Ort und Stelle zu erstellen und ein' install'-Ziel zum Kopieren zu verwenden sie zu ihren Zielen. – reinierpost
@reinierpost make * kann * absolut * Ziele und Voraussetzungen in beliebigen Verzeichnissen behandeln. Obwohl sicherlich einige Teile davon komplizierter werden können. Das ist aber überhaupt nicht dasselbe, wenn Ziele an * installierten * Standorten gebaut werden. Das sollte nicht getan werden. –
@Etan Reisner: Sicher kann es, ich rate nur dagegen. – reinierpost