Make 기반 빌드 시스템: 빌드 시스템(?) 그리고 Makefile 기초

philnet의 이미지

요 몇 달 동안 회사에서 몇 가지 일이 있었습니다. 개발은 완료되었지만 영업 파트너 쪽 문제로 보류된 프로젝트에서, 꽤 오래 같이 일하던 동료들이 이런 저런 사정으로 퇴사했고요, 저를 포함해서 남은 멤버들이 긴급하다고 투입된 다른 프로젝트가 뿌러지고... 영업팀은 보류된 프로젝트가 '조만간' 재개될 테니 다시 팀을 빌딩해달라 요청하면서, 제가 면접에도 참석하지 못한 '완전 신입' 사원들을 할당해 주었습니다.

네, 사실 신나는 일은 아니죠. 하지만 덕분에 정시 퇴근은 할 수 있게 되면서 개인적인 시간이 좀 생겼고, 그리고 오랫만에 사람들 신입 사원 교육을 하면서, 개발과 관련된 소소한(?) 내용들을 발표 자료가 아닌 좀 제대로 된 글로 남겨보자는 결심을 하게 되었습니다.

그래서 가끔씩 생각만 하던 개인 블로그도 열었고요, 중소규모 벤처회사의 4 ~ 8명 규모의 팀에서, 꽤 오래동안 C/C++로 임베디드 기기의 소프트웨어를 개발하며, 개발을 좀 편하게 하려고 만들어온 소위 '한방 빌드'의 기본이 되는 내용을 정리해 볼까 합니다.

제목은 "make 기반 빌드 시스템"으로 (좀 거창하죠? ^^;) 정했습니다. 그럭저럭 다른 사람이 작성한 Makefile 수정은 하지만 make에 익숙하지 않아 답답함을 느끼거나, 뭔가 빌드와 관련되어 좀 더 효율적인 방법을 고민하는 사람에게 도움이 되었으면 하는 바램입니다.

관심 있으신 분께서는 참고하세요.

Forums: 
익명 사용자의 이미지

저를 포함해서 많은 분들께 필요한 글이라고 생각 합니다. 좋은 자료 공유 감사합니다.

philnet의 이미지

3번째 글과 예제 파일 저장소 추가 했습니다.

조금씩 복잡한 Makefile을 설명하면서, 이해하는 데 좀 더 도움이 될까 해서 본문에서 사용되는 예제를 돌려 볼 수 있도록 머큐리얼 저장소(http://mbbs.developinghappiness.com)를 추가했습니다. 자세한 내용은 다음 페이지를 참고하세요.

oppor의 이미지

글을 참 잘쓰시네요.
귀에 쏙쏙 들어와요.^^
나중에 시간좀 많이 나실때 책하나 써주세요.
주제는 맘가시는데로.

philnet의 이미지

4번째 글과 관련 예제 파일 추가 했습니다.

익명 사용자의 이미지

Makefile은 문법을 맨날 까먹어서 만질 때마다 info 파일 찾아보는 게 곤욕이었거든요. 앞으론 이거 보면 되겠네요.
게다가 단순히 문법 설명이 아니라 실제 써먹는 걸 보여주시니 더 좋군요.

jellypo의 이미지

좋은 글 고맙습니다.

philnet의 이미지

5번째 글과 관련 예제 파일 추가 했습니다.

philnet의 이미지

6번째 글과 관련 예제 파일 추가 했습니다.

익명 사용자의 이미지

Make의 각 기능들을 죽 나열하는 식이 아니고 best practices를 차근차근 구성해나가는 방식이라 좋네요. 추천!

philnet의 이미지

7번째 글과 관련 예제 파일 추가 했습니다.

익명 사용자의 이미지

좋은글 감사합니다.
오늘 7번째 글 보는 중에 웹서버가 닫혀버렸습니다. ㅠㅠ

다시 볼수 없을까요?

philnet의 이미지

어제 서버 전원 사정으로 잠시 끊겼었는데 그때 접속하셨나 보네요.
죄송하고요, 그 이후에는 정상 동작하니 참고하세요.

maxjschoi의 이미지

감사합니다. 잘보고 갑니다.

philnet의 이미지

8번째 글과 관련 예제 파일 추가 했습니다.

(덧글)
애초 목표는 일주일에 하나씩 쓰는 것이었는데, 이런 저런 사정으로 조금씩 늘어지네요. 막상 제가 글을 써보니 블로그에 꾸준히 글 쓰시는 분들 참 대단하시다 싶습니다. 빌드 시스템 관련해서는 몇 번만 더 쓰면 마무리 할 수 있을 것 같은데, 다시 한번 마음을 다 잡아야겠어요.

태훈의 이미지

감사합니다. 잘보고 있습니다.

글을 참 재밌게 잘쓰시네요.

Just do it!

philnet의 이미지

9번째로, 공유 라이브러리 지원과 관련된 글과 예제 추가 했습니다.

확실히, 스스로 막연하게만 알고 있는 내용을 설명하는 건 참 쉽지 않네요. 관심 있으신 분들의, 부족한 부분에 대한 따끔한 지적, 따뜻한 보충 내지 보완, 격려... 모두 환영입니다.

다들 새로운 한주 힘내서 시작하세요.

bluewow의 이미지

philnet 님의 글 유익하게 보고있습니다.make 문서 정리중 최고로 잘되있는것 같습니다. 이해도 쏙쏙 되고요. 감사의 말씀드리며
다름이 아니라 어제부터 접속이안되는데 서버에 무슨 문제가있는지요?ㅜ

pulbbang의 이미지

잘 읽겠습니다 ^^..

이제 부터 읽어야지용...ㅎㅎ

익명 사용자의 이미지

정말 유익한 글 감사합니다^^
makefile 에 대해 공부하는데 정말 많은 도움이 되었습니다.

엊그제부터 찬찬히 보고 있는데 오늘 접속이 안되네요 ㅠ
열어주시면 정말정말 감사하겠습니다 ㅎㅎ

댓글 달기

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