Chinaunix首页 | 论坛 | 博客
  • 博客访问: 36584
  • 博文数量: 7
  • 博客积分: 172
  • 博客等级: 入伍新兵
  • 技术积分: 95
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-10 22:50
文章分类

全部博文(7)

文章存档

2012年(7)

我的朋友

分类: C/C++

2012-01-20 14:35:19

Makefile的编写是Linux下编程的基本功。今天踏踏实实地看了下Makefile,不看还真是不知其中的奥秘。推荐<跟我一起写Makefile>写得很好很详细。


Makefile的规则

target...:prerequisites...

command

目标文件:依赖的文件

执行命令


make是用来执行makefile的工具,它是通过检查目标文件是否存在或者依赖的文件是否比目标文件更新来执行的。很基础的就可以这样写

main:main.o

gcc -o main main.o

main.o:main.c abc.h

gcc -c main.c

clean:

rm main.o

命令前面一定要加tab.

Clean:称为一个标签,不指定依赖文件可以执行相应的命令


make中可以加入变量,make中的变量就是字符串

objmain.o

然后在出现使用main.o的地方可以直接用$(obj)${obj}代替


自动推导

当目标是个.o文件时,它会自动把.c加在依赖里并且gcc c .c也可推出来

main.o:abc.h

等同于

main.o:main.c abc.h

cc -c main.c


main:main.o

cc -o main main.o

其中虽然main.o没有规则,但make可以自动推导出来。


Make会在当前目录找寻文件名为GNUmakefile ,makefile Makefile推荐用Makefile,同时也可自定名称只需make f 加-f参数 后面为指定的文件名。


makefile中可以引用其综makefile文件 加include ,引用的文件将在当前位置展开。


标签,如果想用一个make生成多个可执行文件,可以利用标签这个特性。

allprg1 prg2 prg3

prg1:prg1.o utils.o

gcc -o prg1 prg1.o utils.o.....


make中 ‘#’为注释,当在执行的命令前回‘@’make就不会把命令输出在终端上一般

echo 正在编译。。

当让上一命令结果应用在下一命令时应该在第一条命令后加‘;’号,然后写同一行第二条命令

cd homexxx xxxx


然后makefile中还有一大堆的东西,什么函数,条件判断 ,高级变量 一些一些的,以后再说了。



阅读(1316) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~