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内置特殊的宏定义

$? 当前目标所依赖的文件列表中比当前目标文件还要新的文件

$@ 当前目标的名字

$< 当前依赖文件的名字

$*  不包括后缀名的当前依赖文件的名字

 

多个目标

(未完待续)