makefile:當前目錄下所有.c文件編譯爲單獨的可執行目標文件

        有時候會遇到這種情況,比如在學習研究的過程中,一個目錄下寫了很多c語言的源文件,每個都是單獨可執行的。可能每個都是一個單獨的示例。

       這時候需要一個makefile,可以單獨將每一個文件編譯成一個可執行文件,不用每寫一個文件便得gcc -c xxx.c -o xxx。

       下面是一個簡單的寫法:可以將當前目錄下所有xxx.c文件編譯成單獨的xxx文件。

PHONY: all  clean
SRC=$(wildcard *.c)
OBJ=$(SRC:%.c=%.o)
BIN=$(OBJ:%.o=%)

CC=gcc
CFLAGS=-Wall -g -c

all:$(BIN)

$(BIN):%:%.o
        $(CC) $^ -o $@
$(OBJ):%.o:%.c
        $(CC) $(CFLAGS) $^ -o $@

clean:
        rm $(OBJ) $(BIN)

如果使用自動推導的話,可以更簡單:

.PHONY: all  clean
SRC=$(wildcard *.c)
BIN=$(SRC:%.c=%)

CC=gcc
#CFLAGS=-Wall -g -c

all:$(BIN)

clean:
        rm  $(BIN)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章