Czy w Unixie mogę uruchomić make
w katalogu bez uprzedniego wejścia cd
do tego katalogu?
Czy w Unixie mogę uruchomić make
w katalogu bez uprzedniego wejścia cd
do tego katalogu?
Odpowiedzi:
make -C /path/to/dir
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ś.
makefile:
all:
gcc -Wall -Wpedantic -std=gnu99 -g src/test.c -o build/test
run:
./build/test
lub
run:
./../build/test
itp.