Makefile基础篇(二)——语法结构

前言:
   makefile的语法结构非常简单,本篇文章带你从实践中学习它。

1 语法结构

1
2
target: depend
command
  • target: 目标;
  • depend: 依赖;
  • command: 命令,可以是任何shell指令(注意:命令前必须是tab缩进);

  比如以下是一段最简单的makefile。

1
2
Tgt:
gcc main.c

  在工程根目录执行指令 make 即可通过gcc讲main.c编译为a.out(windows下为a.exe)可执行文件,输入指令 ./a.out (Windows下为 ./a.exe )即可执行可执行文件。

2 文件查找顺序

  默认情况下make会在工程跟目录下寻找makefile文件并读取执行其中指令,实际上文件总共有三种命名形式,并且可以同时存在,只是优先级不同。按照查找的文件名优先级顺序为: GNUmakefilemakefile 、 “Makefile” 。下面举例说明。
  有以下三个文件在工程根目录下。

1
2
Tgt:
echo "GNUmakefile"
1
2
Tgt:
echo "Makefile"
1
2
Tgt:
echo "makefile"

  我们在工程根目录执行指令 make 得到的输出为。

1
2
echo "GNUmakefile"
GNUmakefile

  表明执行指令 echo "GNUmakefile" ,得到输出结果 GNUmakefile ,表明三个文件同时存在时优先执行GNUmakefile内容。在实际使用中通常使用的命名为Makefile,这样可以把高优先级的使用权留给用户,用户想要按照自己的规则编译时只需在根目录添加GNUmakefile或makefile即可。