美文网首页
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的规则,可以查看相应的文档。

    相关文章

      网友评论

          本文标题:Makefile文件规则

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