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