[완료]Makefile 에서 { } 해석이 안되는 문제
글쓴이: hyunia / 작성시간: 수, 2008/01/23 - 4:05오후
Makefile 안에 아래와 같은 부분이 있습니다
$(MKDIR) $(SHARE_DIR)/share/{images,fonts}
원했던 것은 images 와 fonts 디렉토리가 별도로 생성되는 것입니다.
페도라 6 에서 사용했던 make 에서는 정상적으로 생성이 됩니다.
그런데 이번에 우분투7.10 에서 사용하는 make 에서는 {images,fonts} 라는 디렉토리가 생성이 됩니다.
make 의 버전을 확인해보니 모두 GNU Make 3.81 로 동일합니다.
우분투는
GNU Make 3.81
This program built for i486-pc-linux-gnu
페도라는
GNU Make 3.81
This program built for x86_64-redhat-linux-gnu
어떻게 해결할 수 있을까요? 도움 부탁드립니다.
Forums:
그냥 회피하는
그냥 회피하는 방법을 써보시는게 어떨지...
전 이런 방식이 표준인지도 모르고 있었네요.
감사합니다. 물론
감사합니다.
물론 현재는 회피하는 방식으로 사용하고 있습니다.
하지만 다른 소스를 가져 왔을 때 Makefile 이 그렇게 사용하고 있으면 그 때마다 수정을 해야 하는 지라
원인을 알고 고쳤으면 해서 질문 드렸습니다. ^^
감사합니다.
dash?
지금 윈도우즈에서 쓰고 있어서 해볼 수 없어서 확실하지는 않은데...... -.-;;
Makefile에서 셸 명령을 실행할 때에는 /bin/sh를 부르죠. 그런데 Ubuntu에서는 디폴트로 이것이 dash라는 프로그램으로 링크되어 있습니다. dash는 bash보다 훨씬 작고 (아마도?) 빠르고 오로지 POSIX compliant shell의 기능만 지원하는 셸입니다. Command-line으로 쓰기보다 script를 빨리 돌리기 위해 최적화된 셸이라고 할 수 있죠.
그런데 얘가 오로지 POSIX의 기능만 지원하기 때문에, bash에서만 돌려보고 "잘 되는군" 했던 script들이 ubuntu로 들고 오면 와장창 깨지는 문제가 생깁니다......
근본적인 해결책은 아니겠지만, 가장 간단한 해결책은 dash package를 날려버리면 되겠습니다.
해결되었습니다. 감
해결되었습니다.
감사합니다.
말씀하신대로 dash 를 날리고 하니 잘 됩니다.
bash 에서는 {images,fonts} 가 잘되어서 이상하다고 생각했었는데
dash 가 사용되었던 것이군요.
다시 한번 감사드립니다.
좋은 정보 감사합니다.
그럼 우분투 make에서는 bash를 쓰려면 항상
SHELL = /bin/bash
를 지정해 줘야겠군요. dash 패키지가 설치되어 있으면 지정해도 안되나? -.-;;
댓글 달기