您的位置:首页 > 其它

makefile

2016-04-19 10:32 309 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: