忍者ブログ

雑記

【Makefile】C言語用覚書

雑記 > > [PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

【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

関連記事

Code memo home

コメント

ただいまコメントを受けつけておりません。

カレンダー

11 2024/12 01
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31