文章出处:http://zonghe.17xie.com/book/10354059/32909.html
下面是Makefile中的一些约定俗称的目标名称及其含义:
all
编译整个软件包,但不重建任何文档。一般此目标作为默认的终极目标。此目标一般对所有源程序的编译和连接使用“-g”选项,以使最终的可执行程序中包含调试信息。可使用strip程序去掉这些调试符号。
clean
清除当前目录下在make过程中产生的文件。它不能删除软件包的配置文件,也不能删除build时创建的那些文件。
distclean
类似于“clean”,但增加删除当前目录下的配置文件、build过程产生的文件。
info
产生必要的Info文档。
check 或 test
完成所有的自检功能。在执行检查之前,应确保所有程序已经被创建(但可以尚未安装)。为了进行测试,需要实现在程序没有安装的情况下被执行的测试命令。
install
完成程序的编译并将最终的可执行程序、库文件等拷贝到指定的目录。此种安装一般不对可执行程序进行strip操作。
install-strip
和“install”类似,但是会对复制到安装目录下的可执行文件进行strip操作。
uninstall
删除所有由“install”安装的文件。
installcheck
执行安装检查。在执行安装检查之前,需要确保所有程序已经被创建并且被安装。
installdirs
创建安装目录机器子目录。它不能更改软件的编译目录,而仅仅是创建程序的安装目录。
下面是Makefile中一些约定俗成的变量名称及其含义:
这些约定俗成的变量分为三类:
第一类代表可执行程序的名字,例如 CC代表编译器这个可执行程序;
第二类代表程序使用的参数(多个参数使用空格分开),例如 CFLAGS代表编译器执行时使用的参数(一种怪异的做法是直接在CC中包含参数);
第三类代表安装目录,例如prefix等等,含义简单,下面只列出它们的默认值。
AR 函数库打包程序,可创建静态库.a文档。默认是"ar"
AS 汇编程序,默认是"as"
CC C编译程序。默认是"cc"
CXX C++编译程序,默认是"g++"
CPP C/C++预处理器,默认是"$(CC) -E"
FC Fortran编译器,默认是"f77"
PC Pascal语言编译器,默认是"pc"
YACC Yacc文法分析器,默认是"yacc"
ARFLAGS 函数库打包程序的命令行参数,默认值是"rv"
ASFLAGS 汇编程序的命令行参数
CFLAGS C编译程序的命令行参数
CXXFLAGS C++编译程序的命令行参数
CPPFLAGS C/C++预处理的命令行参数
FFLAGS Fortran编译器的命令行参数
PFLAGS Pascal编译器的命令行参数
YFLAGS Yacc文法分析器的命令行参数
LDFLAGS 链接器的命令行参数
prefix /usr/local
exec_prefix $(prefix)
bindir $(exec_prefix)/bin
sbindir $(exec_prefix)/sbin
libexecdir $(exec_prefix)/libexec
datadir $(prefix)/share
sysconfdir $(prefix)/etc
sharedstatedir $(prefix)/com
localstatedir $(prefix)/var
libdir $(prefix)/lib
infodir $(prefix)/info
includedir $(prefix)/include
oldincludedir $(prefix)/include
mandir $(prefix)/man
srcdir 需要编译的源文件所在的目录,无默认值