Makefile내 접미어 규칙 관련 질문드립니다.
글쓴이: thisrule / 작성시간: 수, 2005/03/09 - 11:52오전
Makefile내 접미어 규칙을 아래와 같이 정의하였습니다.
Quote:
.SUFFIXES: .c .o
.c.o:
$(CC) $(INCPATH) -c $< -o $@
그랬더니 현재 디렉토리에 있는 .c 파일에 대하여 위 규칙이 적용되었습니다.
그런데 전 현재 디렉토리가 아닌 다른 디렉토리에 있는 .c 파일에 대하여도
위 규칙을 적용하고 싶습니다.
예를들어 ../common 이란 디렉토리에 있는 .c 파일에 대하여도 위 규칙을 적용하여 object 파일만 현재 디렉토리에 생성되게 하고 싶습니다.
무슨 방법이 있을까요?
Forums:
뭐 간단히[code:1].SUFFIXES: .c .o.c.
뭐 간단히
정도로 하면 되지 않을까요?
음... 현재 디렉토리를 src로 봤을때...
(그냥 생각난대로 써서 안될 수도 있을겁니다만... 한번 해보세요. :))
다른 프로그램의 Makefile을 참조해 보는것도 좋겠죠.
(nabi에 위와 비슷한게 있어서... :))
------------------------------
좋은 하루 되세요.
[quote="codebank"]뭐 간단히[code:1].SUFFIX
저도 처음엔 그렇게 했는데 잘 안되서 질문을 드린겁니다.
예를들어 현재 디렉토리명이 src이고 그 안에 a.c, b.c가 있고, ../common/com.c 가 있을 경우
a.c, b.c는 compile이 되는데 com.c가 compile되지 않습니다.
즉, 접미어규칙(확장자규칙 이라고도 하더군요)이 적용되는 범위가 현재 디렉토리외에는 적용되질 않습니다.
그걸 확대 적용하려면 어떻게 해야하는지요?
../common/ 에 위치한 c file도 현재 접미사가 위치한 Ma
../common/ 에 위치한 c file도 현재 접미사가 위치한 Makefile안에
C_SOURCES += test1.c \
test2.c \
..\common\test3.c \
..
형태로 되어 있있나요?
혹시, ../common/ 에도 Makefile을 따로 두고 있다면,
접미사 정의를 파일, 가령 common.mk 로 ../common/common.mk
에 두고, root, 혹은 기타 directory에서 include 해써 쓰시면 되겠죠.
대신, 최종 실행 target은 common.mk에 있어야 합니다.
혹시해서, 시험 출력은 "make" 대신 "make -n"을 써보세요.
VPATH를 쓰시면 될 것 같습니다. (GNU Make만 가능할 것 임)
VPATH를 쓰시면 될 것 같습니다. (GNU Make만 가능할 것 임)
디렉토리 구조가 다음과 같을 때,
[SOMEDIR]에 다음과 같은 Makefile을 만듭니다:
실행 결과입니다:
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
cinsk님께 감사드립니다.cinsk님과는 다른 방법으로 저도 나름대
cinsk님께 감사드립니다.
cinsk님과는 다른 방법으로 저도 나름대로 해결했습니다.
아래와 같은 방법으로 %를 사용하니 잘 됩니다.
답변해주신 모든 분들께 감사드립니다. :lol:
댓글 달기