유닉스에서, 먼저 그 디렉토리로 cd하지 않고 디렉토리에서 'make'를 실행할 수 있습니까?


210

유닉스 make에서 먼저 디렉토리에 가지 않고 디렉토리에서 실행할 수 cd있습니까?

답변:


338

make -C /path/to/dir


8
Grump-표준이 아닙니다. GNU 확장이어야합니다. Linux와 Unix를 말하고 있기 때문에 원하는 것이 확실하지 않지만 -C 옵션은 Solaris 10 (/ usr / ccs / bin / make), AIX (/ usr / bin / make) 또는 HP-UX 11.23 (/ usr / bin / make). 여전히 4 개 중 1 개는 그렇게 나쁘지 않습니다.
Jonathan Leffler

6
그것은 BSD make에서도 작동하므로 GNU 확장뿐만 아니라.
Chris Dodd

4
'C'가 대문자인지 확인하십시오.
m.r226

101

다른 답변에서 언급했듯이 make (1)에는이 -C 옵션이 있습니다. 여러 명령에는 비슷한 옵션이 있습니다 (예 : tar). 이러한 옵션이없는 다른 명령의 경우 다음을 사용할 수 있습니다.

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

이것은 하위 쉘에서 명령을 실행합니다. 하위 쉘은 먼저 작업 디렉토리가 변경되고 (부모 쉘의 작업 디렉토리는 그대로 둡니다). 디렉토리를 변경할 수없는 오류 사례를 포착 && 하는 대신에 여기 가 사용됩니다 ;.


22

디렉토리에 CD를 저장하지 않으려는 이유가 이후 작업을 위해 현재 디렉토리에 있어야하기 때문에 pushd 및 popd를 사용할 수 있습니다.

pushd ProjectDir ; make ; popd

ProjectDir로 이동하여 make를 실행 한 다음 현재 위치로 돌아갑니다.


11

또한 다음을 사용할 수 있습니다.

make --directory /path/to/dir

-3

makefile :

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

run:
    ./build/test

또는

run:
    ./../build/test

기타


1
대답은 질문을 완전히 놓쳤습니다 .makefile을 작성하는 방법이 아니라 make를 호출하는 방법에 관한 것입니다.
Petr
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.