1.在存放.c文件的目錄下編按如下方法編寫Makefile文件: #Makefile start.. CC := gcc #根據需要添加其它如XX := g++ CFLAGS := -Wall -O -g #優化,輸出調試信息,及所有警告 TARGET :=argcv test hello unixio getuid #要編譯的目標名,文件名去后綴的 #下面開始一一編譯了 all:$(TARGET) @echo compileing... %.o:%.c $(CC) $(CFLAGS) -c $< #發現用-c和-o都是輸出一樣的,有點不明白 clean: rm -rf $(TARGET) #end Makefile 2.執行make,輸出結果: [savant@savant-host prog]$ make gcc -Wall -O -g argcv.c -o argcv gcc -Wall -O -g test.c -o test gcc -Wall -O -g hello.c -o hello gcc -Wall -O -g unixio.c -o unixio gcc -Wall -O -g getuid.c -o getuid 3.另外,如果這個目錄是存放的一個項目的文件,所有的文件最終生成一個可執行文件,用下面的Makefile: CC = gcc LD = gcc CFLAGS = -Wall -c LDFLAGS = -lpthread #還可以加入INCLUDES和LIBS變量,視情況而定 SRCS = $(wildcard *.c) #SRCS的值就是當前面目錄下面所有的以.c結尾的源文件 OBJS = $(patsubst %c,%o,$(SRCS)) #SRCS目錄下創建c文件相對的o文件 TARGET = myapp #最終鏈接生成的目標名 .PHONY: all clean all: $(TARGET) $(TARGET): $(OBJS) $(LD) $(LDFLAGS) -o $@ $^ %o: %c $(CC) $(CFLAGS) -o $@ $< clean: @rm -f *.o $(TARGET) 編譯當前Makefile所在目錄下的所有.c文件 執行 make make clean |