这样就很清楚了吧!但是,你是否会觉得,咦!
makefile
里面怎么重复的数据这么多啊!没错!所
以我们可以再½由
shell script
那时学到的『变数』来更简化
makefile
喔:
[root@study ~]#
vi makefile
LIBS =
-
lm
OBJS = main.o haha.o sin_value.o cos_valu
e.o
main: ${OBJS}
gcc
-
o main ${OBJS} ${LIBS}
clean:
rm
-
f main ${OBJS}
bash shell script
的语法有点不太相同,变量的基本语法为:
1.
变量与变量内容以『
=
』隔开,同时两边可以具有空格;
2.
变量左边不可以有
<tab>
,例如上面范例的第一行
LIBS
左边不可以是
<tab>
3.
变量与变量内容在『
=
』两边不能具有『
:
』;
4.
在习惯上,变数最好是以『大写字母』为主;
5.
运用变量时,以
${
变量
}
$(
变量
)
使用;
6.
在该
shell
的环境变量是可以被套用的,例如提到的
CFLAGS
这个变数!
7.
在指令列模式也可以给予变量。
由于
gcc
在½行编译的行为时,会主动的去读取
CFLAGS
这个环境变量
,所以,你可以直½在
shell
定义出这个环境变量,也可以在
makefile
文件里面去定义,更可以在指令列当中给予这个咚咚呢!
例如:
[root@study ~]#
CFLAGS="
-
Wall" make clean main
#
这个动
作在上
make
½
编译时
去取用
CFLAGS
容!
也可以这样:
[root@study ~]#
vi makefile
LIBS =
-
lm
OBJS = main.o haha.o sin_value.o cos_value.o
CFLAGS =
-
Wall
main: ${OBJS}
gcc
-
o main ${OBJS}
${LIBS}
clean:
rm
-
f main ${OBJS}
咦!我可以利用指令列½行环境变量的输入,也可以在文件内直½指定环境变量,那万一这个
CFLAGS
的内容在指令列与
makefile
里面并不相同时,以那个方式输入的为主?呵呵!问了个好问
题啊!
环境变量取用的规则是这样的:
1.
make
指令列后面加上的环境变量为优先;