make file 질문입니다.

epilogue의 이미지

여러 하위 디렉토리에 있는 Makefile 들을 상위 디렉토리에서 한꺼번에 make 하려고 상위 디렉토리에 Makefile을 만들었습니다.

-------------------------------------
all : a b

a :
cd $(root)/a ; $(MAKE)

b :
cd $(root)/b ; $(MAKE)

.
.
.
--------------------------------------

뭐 위와같이 하면 되겠지만...
서브 디렉토리 들이 너무도 많아서...-_-;
그 서브 디렉토리를 하나의 macro로 지정하고...
하나의 관계로 정의할 수는 없나요?
가령..

TARGET = a b c d ....

all : $(TARGET)

$(TARGET) :
cd $(root)/$(TARGET) ; $(MAKE)

뭐 이건 어디까지나 이런식이라는 거지만....
이런식으로 하는 방법은 없을까요?
아시는 분...좀 알려주세요..-_-;;;;

cwryu의 이미지

TARGET = a b c

all: subdirs

subdirs:
        for D in $(TARGET); do \
          make -C $$D; \
        done
epilogue의 이미지

전 a b c ... 이것을 디렉토리가 가정하고...
각 디렉토리에 각각의 Makefile 이 있는 경우거든요.

답변해주신 내용에서 D는 뭔가요...-_-;;;;

될 듯은 한데...잘 안되네요...ㅠ.ㅠ
책에도 그다지 나와있지도 않구요..
누가 좀 다시 알려주세요~

ㅡ,.ㅡ;;의 이미지

epilogue wrote:
전 a b c ... 이것을 디렉토리가 가정하고...
각 디렉토리에 각각의 Makefile 이 있는 경우거든요.

답변해주신 내용에서 D는 뭔가요...-_-;;;;

될 듯은 한데...잘 안되네요...ㅠ.ㅠ
책에도 그다지 나와있지도 않구요..
누가 좀 다시 알려주세요~

타겟에대한 입력변수네요..
근데 저도 Makefile 에서는 for 문을 안써봤는데...

저같은경우는 그냥 Script로 만듭니다.

님이 하신말과 위의for를 적용해보면 이렇게 하면된다는건데..
되나요?ㅎㅎ


TARGET = a b c 

all: subdirs 

subdirs: 
        for D in $(TARGET); do \ 
          make -f $(root)/$$D/Makefile; \ 
        done 


----------------------------------------------------------------------------

ㅡ,.ㅡ;;의 이미지

아.. 위에서 오류가 발생할수도 있겠네요.. make 경우는 디폴트경로에 있는파일도 찾아야하니.. 직접이동하는게 더낫겠네요..

make -f $(root)/$$D/Makefile; \ 를..

cd $(root)/$$D;make;cd ..;\

으로 바꿔보세요..


----------------------------------------------------------------------------

ktd2004의 이미지

MODULESDIR = test1 test2 test3 test4


modules :
    @echo "Making modules ..."
    @for i in $(MODULESDIR); do \
       if ! make -C $$i  ; then\
        exit -1;\
       fi\
    done

ppcboot 소스에서 사용하는 방법입니다.
MODULESDIR에서 정의된 디렉토리들로 진입해서 make를 수행합니다.
그리고 만약 make에서 에러가 발생하면 exit -1로 종료하게 됩니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.