Unix'te, önce bir dizinde cd yapmak zorunda kalmadan 'make' komutunu çalıştırabilir miyim?


Yanıtlar:


338

make -C /path/to/dir


8
Grump - standart yapımda değil; bir GNU uzantısı olmalıdır. Linux ve Unix dediğinizden, hangisini istediğiniz açık değildir, ancak -C seçeneği Solaris 10 (/ usr / ccs / bin / make), AIX (/ usr / bin / make) veya HP-UX 11.23 (/ usr / bin / make). Yine de, 4 kişiden 1'i çok kötü değil.
Jonathan Leffler

6
BSD'de de çalışır, bu yüzden sadece bir GNU uzantısı değildir.
Chris Dodd

4
'C'nin büyük harf olduğundan emin olun.
m.r226

101

Diğer cevaplarda belirtildiği gibi, make (1) 'in bunun -C için bir seçeneği vardır ; birçok komutun benzer seçenekleri vardır (örneğin tar). Bu gibi seçeneklere sahip olmayan diğer komutlar için aşağıdakilerin kullanılabileceğini not etmek yararlıdır:

(cd /dir/path && command-to-run)

Bu, komutu ilk önce çalışma dizinini değiştiren bir alt kabukta çalıştırır (üst kabuğun çalışma dizinini yalnız bırakırken). Burada dizinin değiştirilemediği hata durumlarını yakalamak && için kullanılır ;.


22

Bir dizine cd istememenin nedeni, daha sonraki bir görev için geçerli dizinde kalmanız gerektiğinden, pushd ve popd komutlarını kullanabilirsiniz:

pushd ProjectDir ; make ; popd

Bu ProjectDir içine gider, make çalışır ve bulunduğunuz yere geri döner.


11

Ayrıca şunları kullanabilirsiniz:

make --directory /path/to/dir

-3

makefile:

all:
    gcc -Wall -Wpedantic -std=gnu99 -g src/test.c -o build/test

run:
    ./build/test

veya

run:
    ./../build/test

vb.


1
Cevap soruyu tamamen kaçırdı - makefile nasıl yazılır, makefile nasıl yazılır.
Petr
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.