1. make, cmake

1. 매크로

CC=gcc

CFLAGS=gcc옵션

CXX=g++

CPPFLAGS=g++옵션

INC=include path (ex. -I/home/moon/.../include)

 

2. 레이블

  • $* : 확장자가 없는 현재 target
  • $@ : 현재 target
CC=gcc
OBJS=main.o
main.o: main.c io.h
test: $(OBJS)
	$(CC) -o $@ $*.c
# $@ = test
# $* = main
더보기
더보기

$@ : test

$* : main

  • $< : target 파일보다 더 최근에 갱신된 파일 (ex. target파일 생성 후 소스 코드 수정 시 수정된 파일)

 

  • dep : 자동으로 의존관계 작성
CC=gcc
TARGET=test
OBJS=main.o test.o
SRCS=$(OBJS:.o=.c)

$(TARGET): $(OBJS)
	$(CC) -o $@ $(OBJS)

dep:
	gccmakedep $(SRCS)
$ make dep

결과

CC=gcc
TARGET=test
OBJS= main.o test.o
SRCS= $(OBJS:.o=.c)

$(TARGET): $(OBJS)
	$(CC) -o $@ $(OBJS)

dep:
	gccmakedep $(SRCS)

main.o: main.c io.h
test.o: test.c io.h

 

3. 순환 make

# ~/Project/Makefile

target:
	cd src; $(MAKE)

or

# ~/Project/Makefile

target:
	$(MAKE) -C src

 

 

'Study' 카테고리의 다른 글

포인터와 배열, 포인터 연산  (0) 2021.12.06
포인터 C++  (0) 2021.12.02