简介
本文对应于automake官方文档的第二章,属于重点笔记,如果阅读发现问题可以参阅automake官方
Standard Makefile Targets
以下列出了一些GNU coding重要实用的目标
-
make install
从文件树中拷贝文件到系统目录
-
make install-strip
strip ELT文件,缩减文件大小
-
make uninstall
删除安装的文件
-
make clean
删除文件树中由make all产生的文件
-
make distclean
删除由./configure产生的文件
-
make check
运行单元测试
-
make installcheck
检查安装的可执行文件或者库文件
-
make dist
从资源文件中产生package-version.tar.gz
-
make distcheck
标准目录变量
目录变量 | 默认值 |
---|---|
prefix | /usr/local/ |
exec_prefix | ${prefix} |
bindir | ${exec_prefix} |
libdir | ${exec_prefix} |
includedir | ${prefix}/include |
datarootdir | ${prefix}/share |
datadir | ${datarootdir} |
mandir | ${datarootdir}/man |
infodir | ${datarootdir}/info |
docdir | ${datarootdir}/doc/${PACKAGE} |
… | … |
常用标准配置变量
配置变量 | 含义 |
---|---|
CC | C编译命令 |
CFLAGS | C编译标志 |
CXX | C++编译命令 |
CXXFLAGS | C++编译标志 |
LDFLAGS | 链接标志 |
CPPFLAGS | C/C++预编译标志 |
例子
使用config.site重写默认的配置
当要使用相同的配置安装许多packages,推荐使用prefix/share/config.site
文件,./configure在执行前会自动加载
例如在上面的例子中,创建~/usr/share/config.site
则任何使用--prefix ~/usr
,都会执行上面的脚本,定义这3个变量
“并行编译目录树”
GNU编译系统区分两颗树:目录树,编译树。为了使编译产生的文件不影响目录树,可以在子目录中进行编译
如下例子
交叉编译
交叉编译一般涉及两个变量--build=build
及--host=host
,--target=target
一般使用在编译编译工具时使用,一般情况不需要使用
例如编译win32的可执行文件:
安装时重命名程序
一般可以使用下面3个变量
-
–program-prefix=prefix
给安装的程序增加前缀
-
–program-suffix=suffix
给安装的程序增加后缀
-
–program-transform-name=program
对安装的程序使用sed
例如
此语句告诉automake四件事
编译安装包使用使用DESTDIR
直接看例子