728x90
http://kldp.org/KoreanDoc/html/gcc_and_make/gcc_and_make-3.html--------------------------------------------------------------------------------
target:
cd obj
HOST_DIR=/home/e
mv *.o $HOST_DIR
--------------------------------------------------------------------------------
하나의 목표에 대하여 여러 명령을 쓰면 예기치 않은 일이 벌어집니다. 기술적으로 말하자면 각 명령은 각자의 서브쉘에서 실행되므로 전혀 연관이 없습니다. -.- cd obj 도 하나의 쉘에서 HOST_DIR=/home/e도 하나의 쉘에서 나머지도 마찬가지입니다. 각기 다른 쉘에서 작업한 것처럼 되므로 cd obj 했다 하더라도 다음번 명령의 위치는 obj 디렉토리가 아니라 그대로 변함이 없이 현재 디렉토리입니다. 세번째 명령에서 HOST_DIR 변수를 찾으려 하지만 두번째 명령이 종료한 후 HOST_DIR 변수는 사라집니다.
--------------------------------------------------------------------------------
target:
cd obj ;
HOST_DIR=/hom/e ;
mv *.o $$HOST_DIR
--------------------------------------------------------------------------------
이렇게 적어주셔야 합니다. 세미콜론으로 각 명령을 구분하지요. 처음 두 줄의 마지막에 쓰인 역슬래쉬() 문자는 한 줄에 쓸 것을 여러 줄로 나누어 쓴다는 것을 나타내고 있습니다.
주의! 세번째 줄에 $HOST_DIR이 아니라 $$HOST_DIR인 것을 명심하십시요. 예를 하나 들어보죠. ^^
--------------------------------------------------------------------------------
all:
HELLO="안녕하세요?";
echo $HELLO
--------------------------------------------------------------------------------
Makefile의 내용을 이렇게 간단하게 만듭니다.
$ make
HELLO="안녕하세요?";
echo ELLO
ELLO
<verb>
우리가 원하는 결과가 아니죠?
$HELLO를 $$HELLO로 바꾸어보십시요.
<verb>
$ make
HELLO="안녕하세요?";
echo $HELLO
안녕하세요?
--------------------------------------------------------------------------------
all:
@HELLO="안녕하세요?"; echo $$HELLO
--------------------------------------------------------------------------------
명령의 맨 처음에 @ 문자를 붙여봅시다.
$ make
안녕하세요?
target:
cd obj
HOST_DIR=/home/e
mv *.o $HOST_DIR
--------------------------------------------------------------------------------
하나의 목표에 대하여 여러 명령을 쓰면 예기치 않은 일이 벌어집니다. 기술적으로 말하자면 각 명령은 각자의 서브쉘에서 실행되므로 전혀 연관이 없습니다. -.- cd obj 도 하나의 쉘에서 HOST_DIR=/home/e도 하나의 쉘에서 나머지도 마찬가지입니다. 각기 다른 쉘에서 작업한 것처럼 되므로 cd obj 했다 하더라도 다음번 명령의 위치는 obj 디렉토리가 아니라 그대로 변함이 없이 현재 디렉토리입니다. 세번째 명령에서 HOST_DIR 변수를 찾으려 하지만 두번째 명령이 종료한 후 HOST_DIR 변수는 사라집니다.
--------------------------------------------------------------------------------
target:
cd obj ;
HOST_DIR=/hom/e ;
mv *.o $$HOST_DIR
--------------------------------------------------------------------------------
이렇게 적어주셔야 합니다. 세미콜론으로 각 명령을 구분하지요. 처음 두 줄의 마지막에 쓰인 역슬래쉬() 문자는 한 줄에 쓸 것을 여러 줄로 나누어 쓴다는 것을 나타내고 있습니다.
주의! 세번째 줄에 $HOST_DIR이 아니라 $$HOST_DIR인 것을 명심하십시요. 예를 하나 들어보죠. ^^
--------------------------------------------------------------------------------
all:
HELLO="안녕하세요?";
echo $HELLO
--------------------------------------------------------------------------------
Makefile의 내용을 이렇게 간단하게 만듭니다.
$ make
HELLO="안녕하세요?";
echo ELLO
ELLO
<verb>
우리가 원하는 결과가 아니죠?
$HELLO를 $$HELLO로 바꾸어보십시요.
<verb>
$ make
HELLO="안녕하세요?";
echo $HELLO
안녕하세요?
--------------------------------------------------------------------------------
all:
@HELLO="안녕하세요?"; echo $$HELLO
--------------------------------------------------------------------------------
명령의 맨 처음에 @ 문자를 붙여봅시다.
$ make
안녕하세요?
728x90
'Research > Programming' 카테고리의 다른 글
Why do a lot of #defines in the kernel use do { ... } while(0)? (0) | 2004.12.18 |
---|---|
변수사용에 관하여... (0) | 2003.11.26 |
#, ## (0) | 2002.12.04 |
C Bit Fields (0) | 2002.12.04 |
__cdecl을 사용하는 이유 ? (0) | 2002.12.04 |