Ich habe ein Makefile, das die übliche Verzeichniserstellung durchführt:
%Vor%Leider, wenn ich dies unter scratchbox2 ausführen, schlägt der Befehl mkdir -p immer still.
Ich habe den folgenden Kludon versucht, der nicht funktioniert:
%Vor%Dies gibt aus:
%Vor%... der abschließende Schrägstrich verhindert, dass die dir-Funktion das letzte Verzeichnis auf die von mir gewünschte Weise entfernt.
Wenn Sie ein Skript oder eine kleine C-Anwendung zum Replizieren der Funktion "-p" schreiben, hat jemand irgendwelche Ideen, um die Unterverzeichnisse im Makefile zu erstellen?
Ohne die Option -p gibt mkdir einen Fehler aus, wenn das Makefile versucht, ein Verzeichnis zu erstellen, das bereits existiert. Ich kann mkdir blah 2 & gt; / dev / null, aber dann riskiere ich andere Fehlermeldungen zu verlieren.
Hat jemand irgendwelche Gedanken darüber, warum mkdir -p unter scratchbox2 nicht funktioniert?
BEARBEITEN
Gestützt auf Vorschläge von bobbogo habe ich das zusammengefügt. Es sieht ziemlich verworren aus, aber scheint zu funktionieren, sogar unter scratchbox2.
%Vor% Sie können Ihre Gesamtstruktur von mkdir
s durch folgende ersetzen:
Dadurch wird ein Shell-Befehl wie folgt erstellt:
%Vor%Dies wird für jede Kompilierung ausgeführt. Nicht sehr elegant. Sie könnten dies optimieren, indem Sie eine Art Sentinel-Datei verwenden. Zum Beispiel:
%Vor% .sentinel
wird einmal vor allen Objekten erstellt und ist make -j
befreundet. In der Tat sollten Sie dies auch dann tun, wenn mkdir -p
für Sie arbeitet (in diesem Fall würden Sie mkdir -p
anstatt der $(foreach)
hack Lösung verwenden).
Sie können make
anweisen, jeden Fehlerrückgabecode eines Befehls mit -
:
(Beachten Sie, dass das Problem mit dem nachfolgenden Schrägstrich nicht behandelt wird.)
Tags und Links gnu-make mkdir scratchbox