makefile

http://blog.csdn.net/liang13664759/article/details/1771246




objs = a.o b.o c.o
final:$(objs)
gcc -o final $(objs)
.PHONY:clean
clean:
-rm final $(objs),没有依赖项始终进行更新,开头减号忽略异常




伪目标也可作为依赖对象
默认更新第一个目标
#注释符


make -f makefilename
include makefilename $(mks)


VPATH = src:../headers
vpath %.h headers:cfiles ,指定在哪个文件文件夹下搜索头文件,%表示匹配零或多个字符
vpath pattern 清除
vpath 清除所有


$files = foo.elc bar.o. kmp.o
$(filter %.o,$(files)): %.o : %.c
$(CC) -c $(CFLAGS) $< -o $@


$(objects): %.o: %.c
$(CC) -c $(CFLAGS) $< -o $@


使用GNU的C/C++编译器,得用“-MM”参数,不然,“-M”参数会把一些标准库的头文件也包含进来。
main.o:
gcc -MM main.c

@echo 正在编译XXX模块......
make参数“-n”或“--just-print”,那么其只是显示命令,但不会执行命令
make参数“-s”或“--slient”则是全面禁止命令的显示


调用另外目录下的源文件
subsystem:
cd subdir && $(MAKE)等价于
(cd mylibdirectory;($MAKE))
subsystem:
$(MAKE) -C subdir
%.o:%.c
$(CC) $(CFLAGS) -c $(@D)/$(<F) -o $(@D)/$(@F)
mylib.a:mydir/2.o mydir/3.o
ar -rv mylib.a $?

如果你要传递变量到下级Makefile中,那么你可以使用这样的声明:
export <variable ...>
否则,unexport ...


在“嵌套执行”中比较有用的参数,“-w”或是“--print-directory”会在make的过程中输出一些信息


make -k,出现错误扔继续执行
make -n,输出执行命令,并不实际执行
make -p,显示默认配置
未确定all时,创建makefile中的第一个目标。
$?,比目标文件新的依赖文件
$@,目标文件的名字
$<,依赖文件的名字
$*,无后缀名的依赖文件的名字
置于命令前,-忽略错误,@不将该命令输出到标准输出


myapp:main.o 2.o 3.o
gcc -o myapp main.o 2.o 3.o
main.o:main.c a.h
gcc -c main.c
2.o:2.c a.h b.h
gcc -c 2.c
3.o:3.c b.h c.h
gcc -c 3.c
#gcc -MM main.c 2.c 3.c


%.a:%.c
$(CC) $(CFLAGS) -c $<
$(AR) $(ARFLAGS) $@ $*.o
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值