make에서 sed를 이용해서 환경변수를 만드는 중에 질문..

ertos12의 이미지

음 먼저, version.h라는 file이 있고, 이 file의 내용은

#define AAA_VERSION 1

입니다. 공백은 tab이 아닌 전부 공백 문자 입니다.

Makefile에서 위의 version.h라는 file에 AAA_VERSION의 값, 즉 1을
CODE_VERSION이라는 환경변수에 저장할려고 합니다.

CODE_VERSION=$(sed -n -e 's/.*AAA_VERSION//p' version.h)

이렇게 하면, 1값 앞의 space까지 환경변수에 저장되어 버립니다.

sed를 이용해서 AAA_VERSION이라는 define의 값만 (space 없이) 환경변수 CODE_VERSION에 입력할수 있는 방법이 없을까요?

voider의 이미지

CODE_VERSION=$(sed -n -e 's/.*AAA_VERSION[ \t]*//p' version.h)
이거 이지 않을까요?

-- 아쉬운 하루 되세요 --

ertos12의 이미지

제가 tab문자를 안쓰고, 공백문자, 즉 space로 사용해서요.. 그건 안될거 같은데요..

7339989b62a014c4ce6e31b3540bc7b5f06455024f22753f6235c935e8e5의 이미지

ertos12 wrote:
제가 tab문자를 안쓰고, 공백문자, 즉 space로 사용해서요.. 그건 안될거 같은데요..

voider 님의 코드는 공백 문자도 적용이 되어있습니다. 자세히 보시면 [과 \t 사이에 공백이 있습니다. :)

ertos12의 이미지

네... ^^ 제가 자세히 보질 못했네요.

그렇다면,
#define AAA_VERSION "AAAA 1.0.0"

일 경우에

CODE_A=1
CODE_B=0
CODE_C=0

이렇게 하는 방법은 어떻게 해야 할까요?

"" 문자 처리 방법이 어떻게 해야 할지 어렵네요.

cdpark의 이미지

차라리 version 문자열을 version.h에서 Makefile 내로 옮기는게 간편한 해결책으로 보입니다만...

pastime의 이미지

버전을 Makefile 에서 관리하는 게 속편할듯 합니다. 8)

Makefile:

CODE_A=1
CODE_B=0
CODE_C=0

all:
    @echo "generate <version.h>"
    @echo '#define AAA_VERSION "AAAA $(CODE_A).$(CODE_B).$(CODE_C)"' > version.h

댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.