Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6267408
  • 博文数量: 2759
  • 博客积分: 1021
  • 博客等级: 中士
  • 技术积分: 4091
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-11 14:14
文章分类

全部博文(2759)

文章存档

2019年(1)

2017年(84)

2016年(196)

2015年(204)

2014年(636)

2013年(1176)

2012年(463)

分类: C/C++

2013-09-22 11:24:27

原文地址:makefile文件的建立 作者:hustfxj

 

1 makefile文件的基础

Makefile的基本单位是“规则”,每一条规则说明一个目标文件。该规则的一般格式为:
        A  [属性] : B
        (tab)
        (tab)

A表示目标文件列表;B表示依赖文件列表。

注意:  当命令行过长时,可以在右边界放入一个反斜杠(\),另起一行;

       Makefile的行注释符号是#

举个例子:

=== makefile 开始 ===

   helloworld:file1.o file2.o

         gcc file1.o file2.o -o helloworld

   file1.o:file1.c file2.h

          gcc -c file1.c -o file1.o

   file2.o:file2.c file2.h

          gcc -c file2.c -o file2.o

=== makefile 结束 ===

2  详解makefile文件的属性

AB中“:”是一般的分隔符,但双冒号“::”也是一种分隔符。一般来说,一个文件只能在目标的位置出现一次,只有使用::才允许多次作为目标文件。如下:

A:B

       #命令

A:C

       #命令

以后遇到其他的分隔符,可以具体查找网络求解。

每条规则都可以存在目标文件属性,一般的属性有:

属性

属性作用

IGNORE

忽略该规则中所有命令的执行错误

PRECIOUS

保留产生的中间文件

SILENT

命令不在屏幕显示

如下:

File.o PRECIOUS:file.c

       #命令

我们还可以控制每条命令行的属性,一般放在制表符之后,常见的有-+@。如下所示:

Main.o : main.c

       -gcc –c main.c

- 表示忽略该命令行的错误,继续执行;

+ 表示make始终执行本命令行;

@ 执行本命令行时不在屏幕中输出显示。

3 使用make命令

建立makefile之后,就可以调用make命令生成和维护目标文件了。其格式为:

Make  [make工作行为]  []  [需要更新的文件列表]

make工作行为

例如make工作行为 –f filename 表示使用指定的文件作为makefile

Make –f example.mk proc1.o proc2.o

表示只对pro1.o  pro2.o进行维护。

优先级:make命令行>makefile中宏定义>shell中的宏>内定义宏

Makefile 有三个非常有用的变量:$@$^$<。其意义为:

$@:当前目标文件

$^:所有的依赖文件

$<:第一个依赖文件

$*:等于目标文件去掉后缀

$>:当目标文件是库文件时,就是表示该目标文件。

4 内部规则(暂略)

这部分功能很强大,但不利于理解。自己看书!!!!!!!!!!

5 使用库(暂略,看书)

库的建立和维护

使用库进行链接

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