한국어
Linux Programming
 

6. Makefile 작성의 가이드라인

pjk 2014.02.05 20:21 조회 수 : 2355

make를 많이 써 본 사람은 어느 정도 자신만의 Makefile을 작성하는 일정한 스타일 같은 것이 있다. 프로그램이 짜는 사람마다 다르듯이 Makefile도 각각이다. 여기서는 그냥 가장 일반적인 가이드라인을 제시하기로 한다. 다음 장에서 Makefile의 여러 예제를 살펴보면서 다시 한번 자세히 설명할 것이다.

매크로를 잘 사용하면 Makefile이 깔끔해질 뿐 아니라, 내용의 수정도 용이하다. 조금 과장해서 말한다면, 최대한 매크로를 많이 사용하라고 말하고 싶다. Makefile내에서 두번 이상 나오는 것들은 매크로로 정의해 두면 편하다. 자신의 프로그램 특성에 따라서 기존의 매크로를 재정의 하는 것도 좋다.

make에서 정의되어 있는 규칙들을 최대한 이용한다. 확장자 규칙은 무조건 이용하기를 권한다. 기존의 규칙들을 자기가 정의하는 것도 좋지만, 억지로 이럴 필요는 없다.

대체로 아래와 같이 Makefile을 구성한다.

  1. 매크로 정의 부분
  2. 타겟을 얻기 위한 명령어 부분
  3. 의존 관계 부분

예제 17

 

.SUFFIXES : .c .o     --+
CFLAGS = -g             |
                        |
OBJS = main.o          |
read.o                 | 매크로 정의 부분
write.o                 |
SRCS = $(OBJS:.o=.c)    |
                        |
TARGET = test         --+

$(TARGET): $(OBJS)                    --+
                $(CC) -o $@ $(OBJS)             |
dep :                                   |
                gccmakedpend $(SRCS)            |
new :                                   | 명령어 정의 부분
                touch $(SRCS) ; $(MAKE)         |
clean :                                 |
                $(RM) $(OBJS) $(TARGET) core  --+


- 여기부터 의존관계 부분

위의 예제는 최대한 매크로를 많이 이용하려고 했기 때문에 독해(?)하기 어려울 수도 있다.

번호 제목 글쓴이 날짜 조회 수
45 리눅스에서 시리얼 포트 사용 및 접근 권한 makersweb 2024.05.21 236
44 리눅스 Qt 응용프로그램 AppImage 로 구축 makersweb 2024.01.07 641
43 GRUB의 timeout 설정 makersweb 2023.11.07 694
42 lubuntu 22.04 LTS 설치 file makersweb 2023.01.23 1612
41 시스템에서 사용 가능한 D-Bus 서비스를 보려면? makersweb 2022.12.29 1409
40 리눅스에서 네트워크 구성 makersweb 2022.06.11 3010
39 D-Bus ObjectManager file makersweb 2022.02.12 735
38 ifconfig 는 대부분 ip 명령으로 대체 makersweb 2022.02.12 1743
37 SocketCAN 유틸 사용방법 file makersweb 2022.02.05 7728
36 dbus-broker를 기본 DBus 구현으로 설정 makersweb 2021.01.20 1334
35 리눅스 오디오 스택과 아키텍처 file makersweb 2020.09.02 3012
34 wayland-scanner 를 통해 Wayland 프로토콜 코드생성 makersweb 2020.06.08 1046
33 Wayland 의 Client Application 프로그래밍 기본 루틴 makersweb 2020.06.04 1791
32 Wayland 의 주요 객체들 makersweb 2020.06.04 1015
31 Weston 의 설명 및 관련 컴포넌트 makersweb 2020.06.03 2637
30 64비트 리눅스에서 32비트 응용프로그램을 실행하려면 makersweb 2020.02.29 1889
29 initramfs (initial ram file system: 초기 램 파일 시스템) makersweb 2020.02.25 2181
28 플랫폼 디바이스 드라이버 개발 시 많이 사용되는 커널 API 및 매크로 makersweb 2020.01.28 4884
27 PATH에 새로운 경로 추가 makersweb 2019.09.19 409
26 리눅스 컴파일러 최신으로 업데이트 linux 2018.12.26 1906