Makefile文件书写规则

Makefile文件书写规则

Makefile文件描述了整个程序的编译,链接规则,并最终生成可执行文件。

Makefile文件有属于自己的书写规则,关键字以及函数等 (自我感觉和解释语言shell也有相似之处)
基本规则(格式):
目标:依赖
<tab>命令
目标就是你要得到的文件名:如你想要的可执行文件,或者一个还没链接的 .o 类型的文件
依赖就是你要得到的目标文件所需要的文件
<tab>:固定的格式 
命令:linux下的命令 如:gcc wangcan.c  -o wangcan

下面举一个简单的小例子,就从HelloWorld 说起吧 (英语中少不了小华,计算机中少不了HelloWorld)
源文件:
/****hello.c*****/
#include<stdio.h>
int main()
{
    printf("HelloWodld\n");
    return 0;
}
对应的Makefife文件如下:
hello:hello.c
        gcc hello.c -o hello

第一行的规则也可以写为:
hello:hello.c;gcc hello.c -o hello
#开头表示注释(这个和shell一样)
如果一行过长的时候可以选择使用  \  将其划分为两行或者多行

我们也可以使用变量来代替Makefile中的目标,依赖,命令或者其它
例如:
object=hello.c
CC=gcc
SAFE= -Wall
hello:$(object)
        $(CC) $(SAFE) $(object) -o hello
在使用时要记得形式$( ) (对于文本字符串)
Makefile中还有一种变量,叫做自动变量,主要有以下几种:$@  $<  $^  
$@  :代表当前规则的目录
$<    :带表第一个依赖文件
$^    :代表所有文件列表,使用空格分隔
下面举一个稍微复杂的例子
如图显示各文件的关系:

                               <--------sort.o       <-----------------------sort.c lib1.h

example  <-----------<--------compute.o <---------------------compute.c

                               <--------main.o     <-----------------------main.c  lib2.h
Makefile文件如下
object=sort.o compute.o main.o
CC=gcc
SAFE=-Wall -g
example:$(object)
        $(CC) $^ -o $@
sort.o:sort.c lib1.h
        $(CC) $(SAFE) -c $< -o $@
compute.o:compute.c
        $(CC) $(SAFE) -c $< -o $@
main.o:main.c lib2.h
        $(CC) $(SAFE) -c $< -o $@

(另副我的GCC的版本: gcc 版本 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)   )

注意:
变量主要用来代表文件列表,编译选项列表,程序参数列表,文件搜索目录列表以及编译输出目录列表
变量名的大小写是敏感的
单字符的变量可以直接使用$,不需要加括号  如:$W ,而$WANG 会被识别为 $(W)ANG 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值