Grump - to nie jest standardowe wykonanie; musi to być rozszerzenie GNU. Ponieważ mówisz, że Linux i Unix nie jest jasne, którego chcesz, ale opcja -C nie będzie działać w systemie Solaris 10 (/ usr / ccs / bin / make), AIX (/ usr / bin / make) lub HP-UX 11.23 (/ usr / bin / make). Mimo to 1 na 4 nie jest taki zły.
Jonathan Leffler
6
Działa również w produkcji BSD, więc nie jest to tylko rozszerzenie GNU.
Chris Dodd
4
upewnij się, że „C” jest pisane wielkimi literami.
m.r226,
101
Jak zauważono w innych odpowiedziach, make (1) ma taką -C opcję; kilka poleceń ma podobne opcje (np. tar). Warto zauważyć, że w przypadku innych poleceń, które nie mają takich opcji, można użyć:
(cd /dir/path && command-to-run)
Uruchamia to polecenie w podpowłoce, która najpierw zmienia katalog roboczy (pozostawiając katalog roboczy powłoki nadrzędnej w spokoju). Tutaj && stosuje się zamiast ; łapać przypadki błędów, w których katalogu nie można zmienić.
Jeśli powodem, dla którego nie chcesz przenosić dysku CD do katalogu, jest konieczność pozostania w bieżącym katalogu w celu wykonania późniejszego zadania, możesz użyć poleceń pushd i popd:
pushd ProjectDir ; make ; popd
To idzie do ProjectDir, uruchamia make i wraca do miejsca, w którym byłeś.
Jak zauważono w innych odpowiedziach, make (1) ma taką
-C
opcję; kilka poleceń ma podobne opcje (np. tar). Warto zauważyć, że w przypadku innych poleceń, które nie mają takich opcji, można użyć:Uruchamia to polecenie w podpowłoce, która najpierw zmienia katalog roboczy (pozostawiając katalog roboczy powłoki nadrzędnej w spokoju). Tutaj
&&
stosuje się zamiast;
łapać przypadki błędów, w których katalogu nie można zmienić.źródło
Jeśli powodem, dla którego nie chcesz przenosić dysku CD do katalogu, jest konieczność pozostania w bieżącym katalogu w celu wykonania późniejszego zadania, możesz użyć poleceń pushd i popd:
To idzie do ProjectDir, uruchamia make i wraca do miejsca, w którym byłeś.
źródło
Możesz również użyć:
źródło
makefile:
lub
itp.
źródło