Makefile文件的编写

                                                          Makefile文件的编写

目录

                                                          Makefile文件的编写

1. 语法格式

2. Makefile文件编写举例

3. Makefile文件中变量的使用

4. make命令的用法

5. 实际例子举例

大家可以自己在linux系统下操作训练一下。


1. 语法格式

#注释

目标文件: 依赖文件列表

<tab>命令列表

...…

注意事项:第一行命令不需要以<tab>键开始, 从第二行命令开始必须要以<tab>键开始, <tab>键告诉make程序该行是一个命令行。

 

2. Makefile文件编写举例

注意:install、clean两个命令是不会执行的

 

3. Makefile文件中变量的使用

定义变量一般是在Makefile文件的顶部来定义, 且变量名是大写。

形式如下:

变量名 = 变量值

如果要引用此变量, 用一个$符号来引用变量, 变量名需要放在$符号后的括号里。

 

make工具还有一些特殊的内部变量,它们根据每一个规则内容定义。

$@: 指代当前规则下的目标文件列表。

$<: 指代依赖文件列表中的第一个依赖文件。

$^: 指代依赖文件列表中的所有依赖关系。

$? : 指代依赖文件列表中新于对应目标文件的文件列表。

 

2中的例子简化重写如下:

OBJ = main.o test1.o test2.o #无<tab>键

test: $(OBJ)#无<tab>键

    gcc -o $@ $^

    main.o: main.c head1.h head2.h

    gcc -c $^ -o $@
    
    test1.o: test1.c head2.h

    gcc -c $^ -o $@

    test2.o: test2.c head3.h

    gcc -c $^ -o $@

    install:

    cp test /home/tmp

    clean:

    rm -f *.o

大家能明显感觉代码量减少了!!!

 

4. make命令的用法

大家可以自己输入make --help查看, 这里需要说明一下使用make工具的时候, 习惯把makefile文件命名为Makefile, 也可以命名为其它的名字, 但这时就不能直接用make命令, 需要用以下格式:

make -f makefile文件名。

 

5. 实际例子举例

#C1.c

#include <stdio.h>

#include "global.h"

int main()

{

printf("%d\n", g+1);

return 0;

}


#global.h

#ifndef Initialize

int g = 10;

static int init = 1;

#endif


#Makefile
OBJ = C1.o #无<tab>键

test: $(OBJ) #无<tab>键

    gcc -o $@ $^

    C1.o: C1.c global.h

    gcc -c $^ -o $@

    clean:

    rm -f *.o

 

大家可以自己在linux系统下操作训练一下。

 

 

posted on 2022-07-06 23:22  Daniel_lmz  阅读(152)  评论(0编辑  收藏  举报