美文网首页
Makefile文件规则

Makefile文件规则

作者: lain355 | 来源:发表于2017-07-19 09:14 被阅读0次

有了这个Makefile文件,不论我们什么时候修改了源程序当中的什么文件,我们只要执行make命令,我们的编译器都只会去编译和我们修改的文件有关的文件,其它的文件它连理都不想去理的。

下面我们学习Makefile是如何编写的。

在Makefile中也#开始的行都是注释行.Makefile中最重要的是描述文件的依赖关系的说明。一般的格式是:

target:components

TAB rule

第一行表示的是依赖关系。第二行是规则。

比如说我们上面的那个Makefile文件的第二行。

main:main.o mytool1.o mytool2.o

表示我们的目标(target)main的依赖对象(components)是main.o mytool1.omytool2.o 当倚赖的对象在目标修改后修改的话,就要去执行规则一行所指定的命令。就象我们的上面那个Makefile第三行所说的一样要执行 gcc-o main main.o mytool1.o mytool2.o 注意规则一行中的TAB表示那里是一个TAB键

Makefile有三个非常有用的变量。分别是$@,$^,$<代表的意义分别是:

$@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件。

如果我们使用上面三个变量,那么我们可以简化我们的Makefile文件为:

# 这是简化后的Makefile

main:main.o mytool1.o mytool2.o

gcc -o $@ $^

main.o:main.c mytool1.h mytool2.h

gcc -c $<

mytool1.o:mytool1.c mytool1.h

gcc -c $<

mytool2.o:mytool2.c mytool2.h

gcc -c $<

经过简化后,我们的Makefile是简单了一点,不过人们有时候还想简单一点。这里我们学习一个Makefile的缺省规则

.c.o:

gcc -c $<

这个规则表示所有的 .o文件都是依赖与相应的.c文件的。例如mytool.o依赖于mytool.c这样Makefile还可以变为:

# 这是再一次简化后的Makefile

main:main.o mytool1.o mytool2.o

gcc -o $@ $^

.c.o:

gcc -c $<

好了,我们的Makefile 也差不多了,如果想知道更多的关于Makefile的规则,可以查看相应的文档。

相关文章

  • Linux Kernel Makefiles特殊符号

    Makefile基本规则: Makefile文件中可使用特殊的符号简化Makefile文件的书写。 1、$@:表示...

  • Makefile自动化变量

    学习笔记,摘自陈皓的《跟我一起写 Makefile》 Makefile规则 Makefile文件由一系列规则构成。...

  • makefile简述

    makefile 基本语法 目标文件:依赖文件[Tab] 命令 上述makefile语法被称为一组规则 目标文件是...

  • 004-Makefile 总述

    一、Makefile 里有什么? Makefile 里主要包含了五个东西:显示规则、隐晦规则、变量定义、文件指示和...

  • Makefile文件规则

    有了这个Makefile文件,不论我们什么时候修改了源程序当中的什么文件,我们只要执行make命令,我们的编译器都...

  • Makefile使用指南

    什么是Makefile Makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件...

  • meke 工具简介

    make是一个命令工具,它解释Makefile中的规则,Makefile描述了整个工程文件的编译规则和编译顺序。 ...

  • Makefile学习笔记——4.规则的命令

    1 前言 在前篇Makefile规则中,描述了Makefile是为了生成一个文件,该文件称为目标,而用什么命令生成...

  • makefile语法基础

    1、什么是makefile? makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要重新编译,...

  • JNI基础--makefile走读与语法基础

    makefile makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要重新编译,如何进行链接...

网友评论

      本文标题:Makefile文件规则

      本文链接:https://www.haomeiwen.com/subject/lkwpqxtx.html