make命令
选项及参数
常用的3个选项
-k: make命令发现错误时继续执行,这个选项操作可以一次发现所有未编译成功的源文件。
-n: make命令输出将要执行的操作步骤,而不是真正执行这些操作。
-f<filename>: 告诉make命令将哪个文件作为Makefile文件,未使用此选项情况下,标准版make命令会在当前目录下先寻找makefile,如果没有继续寻找Makefile文件。如果是Linux系统下,使用的可能是GNUMake,这个版本,它将首先查找GNUmakefile文件。
依赖关系
规则写法:先写目标名称,然后紧跟冒号,接着空格或制表符tab,最后是隔开的文件列表(这些文件用于创建目标文件)。
Myapp: main.o test.o
main.o: main.c main.h
test.o: test.c test.h
规则
makefile文件中空格和tab是有区别的。规则所在行必须以tab开头,用空格是不行的,Makefile文件中某行以空格结尾,也可能导致make命令执行失败。
规则都包含一个简单的命令,该命令也可以在命令行上执行
Myapp: main.o test.o
gcc -o Myapp main.o test.o
main.o: main.c main.h
gcc -c main.c
test.o: test.c test.h
gcc -c test.c
注释
Makefile中注释以#号开头
宏
MACRONNAME=value 定义宏
$( MACRONNAME) 调用宏
CC = gcc
CXX = g++
Myapp: main.o test.o
$( CC) -o Myapp main.o test.o
main.o: main.c main.h
$( CC) -c main.c
test.o: test.c test.h
$( CC) -c test.c
make命令时给出宏定义
make “CC = gcc”
make内置特殊的宏定义
$? 当前目标所依赖的文件列表中比当前目标文件还要新的文件
$@ 当前目标的名字
$< 当前依赖文件的名字
$* 不包括后缀名的当前依赖文件的名字
多个目标
(未完待续)