Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1736475
  • 博文数量: 438
  • 博客积分: 9799
  • 博客等级: 中将
  • 技术积分: 6092
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-25 17:25
文章分类

全部博文(438)

文章存档

2019年(1)

2013年(8)

2012年(429)

分类: LINUX

2012-04-01 17:44:16

make -f 命令可以指定makefile的文件名,而不是默认的makefile、Makefile或GNUmakefile。


makefile里的include 指令可以引入别的文件。注意文件名不能用字符串包围,如:
include header.mk可以引入当前路径下的header.mk,但是include "header.mk"会出现找不到文件的错误。

include也可以同时引入多个文件,比如:
include header.mk h2.mk *.mk


VPATH变量可以指定源文件的目录。只需要两行:
VPATH=src1:src2
test: foo1.o foo2.o foo3.o

make就可以得到我们想要的东西:
$ make
cc    -c -o foo1.o src1/foo1.c
cc    -c -o foo2.o src1/foo2.c
cc    -c -o foo3.o src2/foo3.c

相应的,vpath关键字(全小写,与VPATH变量不同)也可以设置搜索路径。
vpath 为匹配模式pattern的文件指定搜索路径
把makefile修改为:
test: foo1.o foo2.o foo3.o
foo1.o foo2.o foo3.o:
vpath foo1.c src1
vpath %2.c src1
vpath foo%3.c src2

make同样会得到我们想要的东西:
$ make
cc    -c -o foo1.o src1/foo1.c
cc    -c -o foo2.o src1/foo2.c
cc    -c -o foo3.o src2/foo3.c

这是%是个通配符,等价于shell里的*。如果指定的多个规则里有重复的,那么make会按vpath语句的先后顺序来执行搜索。
vpath 清除所有匹配的搜索目录。
vpath清除所有已设置的搜索目录。
阅读(1329) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~