Makefileの書き方

Linux
この記事は約2分で読めます。

個人的に作ったMakefile

CC = gcc
#INCEDIR = -I/usr/local/include
#CFLAGS = -O4 -Wall
CFLAGS = -Wall
#LDFRAGS = -L/usr/local/lib
LIBS = 
# アプリケーション名
PROGRAM = appli
# ソースファイル名(必要に応じて追加)
SRCS = main.c \
		mcast_sock.c \
		cmd_analyze.c \
		order_task.c
#オブジェクトファイルの出力先
OBJDIR = ./.obj
OBJS = $(SRCS:%.c=$(OBJDIR)/%.o)  # main.c sub.c => ./obj/main.c ./obj/sub.c
# makefileのルールは以下の構成
# ---------------------------
# ターゲット:依存するファイル
#	コマンド
# ---------------------------
# make をしたとき makefile の1つ目のルールが実行される
$(PROGRAM): $(OBJS)
	$(CC) -o $@ $^ $(LDFRAGS) $(LIBS)
# $@ は $(PROGRAM)、$^ は $(OBJS)を指す
$(OBJS): $(SRCS)
	@if [ ! -d $(OBJDIR) ]; then \
        mkdir -p $(OBJDIR); \
    fi
	$(CC) $(CFLAGS) $(INCEDIR) -c $(@F:.o=.c) -o $@
# $(@F:.o=.c) の $(@F) が ./obj/main.o の main.o (ファイル部分)を示し
# $(@F:.o=.c) の $(@:.o=.c) がmain.o => main.c変換
all: clean $(OBJS) $(PROGRAM)
clean:
	rm -f $(OBJDIR)/*.o *~ $(PROGRAM)
	rmdir $(OBJDIR)
#install: $(PROGRAM)
#	install -s $(PROGRAM) $(DEST)

コメント

タイトルとURLをコピーしました