2015-01-20 6 views
6

Ich möchte ein Makefile von einem anderen Ort im Dateisystem ausführen. Wie übermittle ich den Speicherort des Makefiles?Angeben von Pfad zu "Makefile" mit "make" -Befehl

Wenn ich in "/" stehe und ich möchte ein Makefile ausführen, das in "/ dir/dir2/dir3/makefile" widersteht, wie füge ich das zum make-Befehl hinzu?

Ich habe versucht:

make --file=dir/dir2/dir3/makefile 

aber es hat nicht funktioniert.

+0

Mögliches Duplikat von [Kann ich in Unix 'make' in einem Verzeichnis ausführen, ohne vorher in dieses Verzeichnis zu wechseln?] (Https://stackoverflow.com/questions/453447/in-unix-cani-i- run-make-in-ein-Verzeichnis-ohne-cding-zu-diesem-Verzeichnis-zuerst) – Flynsee

Antwort

4

Alle relativen Pfade in Das Makefile wird relativ zu Ihrem aktuellen Verzeichnis und nicht zum Verzeichnis des Makefiles.

Angenommen, Sie verstehen, dass und was Sie tun möchten, wird immer noch funktionieren, dann möchten Sie die -f Flag, um das Makefile zu verwenden. (Das ist in der Manpage, das Handbuch und die --help ausgegeben.)

Wenn stattdessen, was du meinst ist, dass Sie woanders zu cd wollen und führen Sie vielleicht machen dann Sie für (cd /some/path && make) suchen?

+0

Vielleicht passt der CD-Vorschlag am besten. Ich denke, dass der Unterschied ist, ob ich will, dass die kompilierten Dateien im gleichen Ordner wie die make-Datei liegen (was das CD-Beispiel wäre), oder wenn ich möchte, dass die Dateien in demselben Verzeichnis stehen, in dem ich stehe. Habe ich recht? – theva

+0

Mehr als das. Wenn Sie im Makefile eine Regel namens 'foo: foo.c' haben, die im aktuellen Verzeichnis eine Datei' foo' erzeugt, aber im aktuellen Verzeichnis nach 'foo.c' sucht, wird es nicht gehen da sein. –

+0

Ich habe mit meinem Makefile herumgespielt und versucht, 'CFLAGS' Argumente zu erkennen, die ich darin angegeben habe. Aber es schien nicht so, als würden diese Argumente zu "machen" kommen. Also habe ich mein lokales 'Makefile' entfernt und' make' erneut ausgeführt, und es wurde weiterhin derselbe Befehl ausgeführt ('cc -o ex4.c -o ex4'). Ich habe versucht, "-g-Wall" über 'CFLAGS' zu übergeben. Gibt es einige Master 'Makefile', die an meinem Betriebssystem hängen ?! – mecampbellsoup

Verwandte Themen