Makefile

一、Makefile

1、如果这个程序没有 编译过,那么我们的所有的C文件都要编译并、
   被链接
2、如果工程中的某个C文件被修改,那么我们只编译被修改的C
   文件,并连接目标程序。
3、如果这个工程的头文件被改变,那么我们需要编译引起了这几个头文件
   的C文件,并链接目标程序。

二、Makefile 规则:

 target .........prerequisties......./
 command

 .........
 .........
 
 clean

  /是换行的意思! 内容保存在Makefile或makefile中、然后,
  在目录下直接输入


  Tab键开头:


  Malefile中可以定义:不用的编译或是和编译无关的命令,比如
  程序的打包,程序的备份,等等。。。

三、make是如何工作的


四、Makefile中使用变量

  定义: objects=

  使用:  $(objects)

 

五、让make自动推导

 

    .PHONY:clean
    clean:

六、另类风格的Makefile


七、清空目标文件的规则


     .PHONY:clean
    clean:
    -rm
    -:也许某些文件出现问题,但不要管,继续做后面的事,
   当然,clean的规则不要放在文件的开头,

 

、、、Makefile中的注释用:#  转义:/#


一、Makefile的文件名:

  如果使用别名:make -f 或 -file 如:make -f/-file Make.AIX

二、引用其他的Makefile


   include的语法是:

   include<filename>

   -include<filename>其表示,无论include过程中出现什么、

四、环境变量 MAKEFILES
 


五、make的工作方式

     1.在规则中使用通配符“*”。“?” “ [.....]”“~”

 

      2.文件搜寻
      VPATH=
    
     1.vpath <pattern><directories>

 为符合模式《pattern》的文件指定搜索目录<dirextories>
    
      2.vpath<pattern>

  清除符合模式<pattern>的文件的搜索目录

      3. vpath

  清除所有已被设置好的文件搜索目录

 

 《pattern》包含“%”%的意思是匹配零或若干字符 %。
 
 《directories》指搜索路径

六、伪目标


 clean 


 .PHONY:clean
 clean
 rm *.o temp

七、多目标


八、静态模式

    <targets ....>: <target-pattern>:<prereq-patterns....>
    <commands>
    ..................

 


     targets 定义了一系列的目标文件,可以说是通配符。是目标的集合
    
     target 是指明targets的模式,也就是目标集合模式。
    
     prereq-parrterns是目标的依赖式,他对target-parrtern
 形成的模式在进行一次依赖目标的定义。


例如:
<target-pattern>           定义:%.o

prereq-patterns....>       定义为:%.c

意思是对:<target-pattern>所形成的目标集进行二次定义
 使<target-pattern> 去掉[.o]这个结尾  加上[.c]结尾

 

 

$<  $@ 是自动化变量,


$< 表示所有的依赖目标集
$@ 表示目标集


objects=foo.o bar.o
 
all:$(objects)

$(objects) : %.o : %.c
$(cc) -c $(CFLAGS) $< -O $@

 

九、自动生成依赖性


 -M 自动找寻源文件中包含的头文件,并生成一个
 依赖关系。
 cc -M main.c


GUN 中用:
     -MM
 依赖关系方在 .d 的文件中


一 显示命令:、
 "@"字符在命令行前,这个命令将不被make显示;

   make -n或“--just-print”只是显示命令 不执行
 
 
    make参数 “-s”或“-slient”则是全面禁止命令的显示

二、执行命令

 注: 若果你要让一条命令的结果应用在下一条命令时,
 你应该使用分号 把两条命令分割开,


三、命令出错

 1、我们在Makefile的命令行前加一个“-”(在tab键后)
 标记为不管命令出不出错都认为是成功的。


 2、全局办法 是在make时 加上 “-i”
 
 3、make -k如果规则中的命令出错 那么就终止该规则的执行,
  但继续执行器它规则

四、嵌套执行make


 如果你要传递变量到下集Makefile中,

 export<variable>
 
 
 如果某些变量不要传递变量到下集Makefile中,

 unexport<variable>

五、定义打包

 

 

1.变量的基础
 使用时在变量前加上$

 

2.变量中的变量
 
 1.=左侧是变量 右侧是值(此值可以在任何地方定义)


 2:=  前面的变量不能使用后面的变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wbandzlhgod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值