[Q] GNU MAKE에서 빌드는 안하고 up to date 메시지만 뜨는 문제입니다.

lovian의 이미지

안녕하세요.

나름대로 걸리적 거리는 문제가 있어서 질문드립니다.

제가 unix 플랫폼에서 c코드 빌드를 자주 하는 편인데, 확장자가 c가 아닌 파일들을 빌드하려고보면 꼭 문제가 발생합니다.
증상은 질문에 명시했듯이
make informix 를 실행하면,
make 'informix' is up to date 메시지가 뜨는 것입니다.
db 타겟은 DB를 Informix ESQL로 빌드하기 때문에 소스코드의 확장자가 ec 입니다.
간단히 언급하자면, ESQL -> CC의 순으로 빌드하여 ESQL이 c 파일을 만들어주고 CC가 그것을 빌드하는 형태입니다.

Makefile의 informix 타겟은

informix:
        make -C ./informix all

윗부분이 전부 입니다.

./informix/Makefile 은

%.c: %.ec
        $(C_PRE) $(C_PRE_INC) $(C_PRE_FLAG) $<
%.o: %.c
        $(CC) -c $(DYN_CFLAGS) $(DB_INC) $<
all: $(TARGET)
 
$(TARGET): $(OBJS)
        $(LD) -o $(TARGET) $(OBJS) version.o $(DYN_LDFLAGS)

간략하게 위와 같습니다.

make에 좀 심오한 것이 있는지 informix 디렉토리에서 all 타겟을 빌드하면, 아무런 문제없이 빌드 됩니다.
informix의 상위 디렉토리에서 make -C ./informix all 로 빌드해도 빌드가 잘 됩니다.

make의 파라미터를 살펴보기는 했습니다만, 이 상황을 타계할 만한 것을 찾지 못하였습니다.
혹시, 소스의 갱신상태를 검사하지 않고 무조건 빌드하는 방법같은 것 없을까요?
조언좀 부탁드리겠습니다.

아, 참고로 MAKE의 버젼은 3.81이며 플랫폼은 Solaris 5.9입니다.

ktd2004의 이미지

위 내용만으로 추측해보면 현재 디렉토리에 infomix 라는 디렉토리가 존재합니다.
따라서 make 명령은 infomix라는 파일이나 디렉토리가 존재하는지 체크하는 단계에서
이미 해당 디렉토리가 존재하므로 build과정을 수행하지 않습니다.

이런 문제를 해결하는 방법은 여러가지가 있지만
다음과 같이 dummy 타켓을 추가하는 방법도 있습니다.

infomix : dummy
    make -C ./infomix all
 
dummy :
lovian의 이미지

알려주신 방법으로 해결하였습니다.
단순히 디렉토리의 유무로 빌드할지 안할지를 결정할 줄은 몰랐습니다.

make 속의 make를 사용할 때에 뭔가 다른점이 있는건지 한번 조사해봐야겠군요.

감사합니다 :)

-----------------
한글을 사랑합니다.

-----------------
한글을 사랑합니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.