1.5 Make脚本
Make脚本多用于自动编译,Make脚本语法:
目标(target): 条件(prerequest)
(TAB 键)命令
目标可以是任意字符串或者文件,条件可以是别处目标或者文件,执行make脚本时,当目标和条件都是文件且目标和条件的时间戳不同时,解释器将执行命令,命令是任何和执行程序。
自动编译的基本原理就是将目标作用于目标,将源文件作用于条件,当条件修改时,目标的时间戳会先于条件,命令将会自动执行。
Make脚本不仅适用于自动编译,所有基于时间戳来操作的场合都可以考虑Make脚本。
1.5.1 一个简单的MakeFile 文件
#this is a sample mikefile
$(info start woking)
hello: helloLinux.c
echo "nothing"
hello.bin: helloLinux.c
@echo "start compile hello.bin"
gcc helloLinux.c -o hello.bin
.PHONY he:
he: helloLinux.c
@echo "start compile he"
#代表注释。
$函数调用符号,info函数名,作用是输出一段内容。还有error,warning。
目标定义前不能加空格,命令行前必须以TAB键开始。
.PHONY声明目标,.PHONY 声明的目标总是执行其命令(注:书中he后没有:但是我测试时,总是运行错误,提示没有分割符,加上后运行通过)
@表示不输出执行的命令。默认情况下会输出执行的命令。
hello.bin和helloLinux.c都是文件,只有当helloLinux.c发生改变的时候才会执行命令。hello,he不是具体文件,每次make都会执行命令。
使用make -f Makefile hello执行上述脚本,-f用于指定脚本,假如没有指定,则系统会自动在当前目录下寻找Makefile文件,没有的话则运行失败。
hello是具体要运行的目标,如果没有指定的话,则执行脚本定义的第一个目标。
Make脚本多用于自动编译,Make脚本语法:
目标(target): 条件(prerequest)
(TAB 键)命令
目标可以是任意字符串或者文件,条件可以是别处目标或者文件,执行make脚本时,当目标和条件都是文件且目标和条件的时间戳不同时,解释器将执行命令,命令是任何和执行程序。
自动编译的基本原理就是将目标作用于目标,将源文件作用于条件,当条件修改时,目标的时间戳会先于条件,命令将会自动执行。
Make脚本不仅适用于自动编译,所有基于时间戳来操作的场合都可以考虑Make脚本。
1.5.1 一个简单的MakeFile 文件
#this is a sample mikefile
$(info start woking)
hello: helloLinux.c
echo "nothing"
hello.bin: helloLinux.c
@echo "start compile hello.bin"
gcc helloLinux.c -o hello.bin
.PHONY he:
he: helloLinux.c
@echo "start compile he"
#代表注释。
$函数调用符号,info函数名,作用是输出一段内容。还有error,warning。
目标定义前不能加空格,命令行前必须以TAB键开始。
.PHONY声明目标,.PHONY 声明的目标总是执行其命令(注:书中he后没有:但是我测试时,总是运行错误,提示没有分割符,加上后运行通过)
@表示不输出执行的命令。默认情况下会输出执行的命令。
hello.bin和helloLinux.c都是文件,只有当helloLinux.c发生改变的时候才会执行命令。hello,he不是具体文件,每次make都会执行命令。
使用make -f Makefile hello执行上述脚本,-f用于指定脚本,假如没有指定,则系统会自动在当前目录下寻找Makefile文件,没有的话则运行失败。
hello是具体要运行的目标,如果没有指定的话,则执行脚本定义的第一个目标。