Linux 批量编译目录下文件的Makefile

发布时间:2011-2-27 15:48    发布者:hikesoso2010
关键词: Linux , Makefile
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
本文地址:https://www.eechina.com/thread-56092-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
cqzy6666 发表于 2011-3-1 10:48:45
很好!!1
ncchengang 发表于 2011-3-1 10:49:43
谢谢,
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表