忍者ブログ

雑記

【Makefile】C言語用覚書

雑記 > codeのメモ > 【Makefile】C言語用覚書

Windows Subsystem for Linuxを試したときに真っ先に書いたMakefile。
ヘッダファイルのみを更新した場合は、ファイル更新を識別できないので注意。
#========================================= 
# COMMON
#-----------------------------------------
TEST = sample
CC   = gcc

vpath %.h source_c/include
vpath %.c source_c source_c/common

DIR_OBJ = ./obj
DIR_OUT = ./outs

INCLUDE = -I source_c/include

SOURCES = $(wildcard source_c/common/*.c source_c/$(TEST).c) 
OBJECTS = $(addprefix $(DIR_OBJ)/,$(notdir $(SOURCES:.c=.o))) 

#=========================================
# .SUFFIXES .PHONY
#-----------------------------------------
.SUFFIXES : .o .h .c .out
.PHONY    : clean run

#=========================================
# run
#-----------------------------------------
run : $(DIR_OUT)/$(TEST).out
	./$(DIR_OUT)/$(TEST).out

#=========================================
# $CC
#-----------------------------------------
$(DIR_OUT)/$(TEST).out : $(OBJECTS)
	mkdir -p $(DIR_OUT)
	$(CC) -o $@ $^

$(DIR_OBJ)/%.o : %.c
	mkdir -p $(DIR_OBJ)
	$(CC) -o $@ -c $<

$(DIR_OBJ)/$(TEST).o : $(TEST).c
	mkdir -p $(DIR_OBJ)
	$(CC) -o $@ -c $<

#=========================================
# clean
#-----------------------------------------
clean : 
	\rm -r $(DIR_OBJ)
	\rm -r $(DIR_OUT) 
source_c/sample.cをコンパイルし実行する場合は、
make
sample.c以外でmain()のコードを書いた場合、例えばtest_00.cの場合は、
make TEST=test_00

関連記事

コメント

カレンダー

05 2018/06 07
S M T W T F S
2
4 5 6 8 9
11 12 15 16
17 19 20 21 22 23
24 25 26 27 28 29 30