linux学习笔记-读《Linux编程技术详解》(2)-make与makefile

Make 通过读入配置好的文本文件,并根据文本文件中预先定义的规则和步骤,完成代码的编译和链接工作,最终生成所需要的项目文件。这个文本文件在缺省情况下文件名为makefileMakefile

 

Make 程序支持的命令选项

-b -m

忽略兼容性

-B –always-make

无条件编译所有目标

-d

打印调试信息

-e --environment-overrides

makefile中不替换环境变量的值

-f FILE --file=FILE --makefile=FILE

指定FILE文件为makefile

-h --help

显示make命令帮助信息

-I --ignore-errors

忽略命令中的错误信息

-I DIRECTORY --include-dir=DIRECTORY

搜索指定目录中的makefile文件

-k --keep-going

即使某些目标无法编译,仍然继续编译工作

-o FILE, --old-file=FILE --assume-old=FILE

即使这些文件已经做过修改但仍然不编译该文件

-p --print-data-base

打印make 的内部数据库信息

-r --no-builtin-rules

禁用编译中的隐式规则

-s --silent --quiet

不显示编译中的命令

-v --version

显示make 命令的版本号

 

make 中规定每一Shell命令之前的开头必须使用<tab>字符。

 

makefile 支持的预定义变量及其意义

变量名

含义

$@

 表示当前规则中的目标文件名

$?

新修改过的依赖文件列表

$*

不包含扩展名的目标文件名

$<

当前规则中的第一个依赖文件名

$%

当目标文件为库文件时,该变量为库文件名;如果不是库文件,该变量为空值

$^

当前规则中的所有文件列表

AR

归档程序名称,默认为AR

ARFLAGS

归档程序选项

CC

C编译器命令名,默认为CC

CFLAGS

C 编译器编译参数

 

make的隐含规则:

将后缀为.c的文件编译为.o文件;

支持一个目标对应多个依赖模式,可根据不同的源文件(判断依据主要是文件的后缀),调用不同的编译器完成编译。在隐含规则中,对.c文件的隐含规则在对.p文件之前。

  

常见隐含规则列表

规则

说明

C程序编译

.o文件自动由同名的.c文件生成,编译命令为: $(CC) -c $(CPPFLAGS) $(CFLAGS)

C++ 程序编译

.o 文件自动由同名的.cc或同名的.c文件生成,编译命令为: $(CXX) -c $(CPPFLAGS) $(CFLAGS),  也就是说如果要让makeC++代码执行隐含规则,C++代码的后缀必须为.cc .c

Pascal 程序编译

.o 文件自动由同名的.p生成,编译命令为:

$(PC) -c $(PFLAGS)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           &nbs

你可能感兴趣的:(编程,linux,工作,File,makefile,编译器)