21.3.2 makefile
的基本语法与变量
make
的语法可是相当的多而复杂的,有兴趣的话可以到
GNU
(
注
1
)
去查阅相关的说明,鸟哥这里
½列出一些基本的规则,重点在于让读者们未来在½触原始码时,不会太½张啊!
好了,基本的
makefile
规则是这样的:
目
标
(target):
目
标
文件
1
目
标
文件
2
<tab> gcc
-
o
欲½立的
执
行文件
目
标
文件
1
目
标
文件
2
那个目标
(target)
就是我们想要½立的信息,而目标文件就是具有相关性的
object files
,那½立执
行文件的语法就是以
<tab>
按键开头的那一行!特别给他留意喔,『
命令行必须要以
tab
按键作为
开头
』才行!他的规则基本上是这样的:
.
在
makefile
当中的
#
代表批注;
.
<tab>
需要在命令行
(
例如
gcc
这个编译程序指令
)
的第一个字符;
.
目标
(target)
与相依文件
(
就是目标文件
)
之间需以『
:
』隔开。
同样的,我们以刚刚上一个小½的范例½一步说明,如果我想要有两个以上的执行动作时,
例如下
达一个指令就直½清除掉所有的目标文件与执行文件,该如何制作呢?
# 1.
先
编辑
makefile
来
½立新的
规则
,此
规则
的目
标
名
称为
clean
:
[root@study ~]#
vi makefile
main: main.o haha.o sin_value.o cos_value.o
gcc
-
o main main.o haha.o sin_value.o cos_value.o
-
lm
clean:
rm
-
f main main.o haha.o sin_value.o
cos_value.o
# 2.
以新的目
标
(clean)
测试
看看
执
行
make
的
½
果:
[root@study ~]#
make clean
<==
就是
这
里!透
过
make
以
clean
为
目
标
rm
-
rf main main.o haha.o sin_value.o cos_value.o
如此一来,我们的
makefile
里面就具有至少两个目标,分别是
main
与
clean
,如果我们想要½立
main
的话,输入『
make main
』,如果想要清除有的没的,输入『
make clean
』即可啊!而如果想要
先清除目标文件再编译
main
这个程序的话,就可以这样输入:『
make clean main
』,如下所示:
[root@study ~]#
make clean main
rm
-
rf main main.o haha.o sin_value.o cos_value.o
cc
-
c
-
o main.o main.c
cc
-
c
-
o haha.o haha.c
cc
-
c
-
o sin_value.o sin_value.c
cc
-
c
-
o
cos_value.o cos_value.c
gcc
-
o main main.o haha.o sin_value.o cos_value.o
-
lm