Linux 批量编译目录下文件的Makefile
发布时间:2011-2-27 15:48
发布者:hikesoso2010
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 |
网友评论