目录
在源码包根目录中无参数运行 automake命令就会生成所有的 Makefile.in。 automake通过读取 configure.ac找到每个 Makefile.am,并对每个 Makefile.am生成一个对应的 Makefile.in。注意 automake认为一个源码包只在其根目录中有一个 configure.ac文件。如果某个源码包中包含多个 configure.ac,需要在每个包含 configure.ac的目录中运行 automake命令,以生成对应目录层次下的所有 Makefile.in。(可以通过Autoconf的 AC_CONFIG_SUBDIRS宏使包含多个 configure.ac的源码包只在根目录中执行一次 automake)
可以传递给 automake一个参数,该参数附加上 .am就是 automake是输入文件名称。这种方式一般只用于自动重新构建一个过期的 Makefile.in。( 测试过程中手动执行automake Makefile后 只更新了根目录下的 Makefile.in)。注意: automake只能在源码包根目录中运行,即使是为了重新生成某些子目录中的 Makefile.in。这不仅是因为 automake需要读取 configure.ac,也是因为 automake在更新某个子目录中的 Makefile.in时,需要知道“要更新的 Makefile.in在子目录中”这件事,以此更改 automake的一些动作。
Automake会运行 autoconf来读取 configure.ac和它的依赖关系(如 aclocal.m4和其他包含的文件),因此 autoconf必须在 PATH环境变量中。如果环境变量中有一个 AUTOCONF变量,则该变量会覆盖 PATH变量中的 autoconf,该特性允许你指定一个Autoconf的特定版本。注意,上述所说的 automake运行 autoconf读取 configure.ac只是读取而已,并不会生成 configure脚本,所以还是需要在执行 automake前手动执行 autoconf。
automake接受以下参数:
- -a
–add-missing
Automake在特定条件下需要特定的通用文件。例如,如果configure.ac使用了AC_CANONICAL_HOST宏,Automake就需要config.guess文件。Automake在发布时携带了几个这样的通用文件,这个选项使Automake在源码包中发现某些需要的通用文件缺失时,如果自己的发布中包含该文件会自动将缺失的文件拷贝到源码包中。如果automake上报某些文件缺失,可以尝试该选项。默认情况下,Automake在源码包中创建缺失文件的符号链接指向自己发布中携带的相应通用文件,可以通过 –copy选项改变默认动作。
很多可能缺失的文件是一些存储位置由AC_CONFIG_AUX_DIR宏指定了的通用文件。所以AC_CONFIG_AUX_DIR设置后不仅会影响判断哪些文件缺失了,还会影响缺失的文件会被添加到哪。
在某些严格模式下,一些额外的文件会被安装。 - –libdir=dir
在该选项指定的目录dir中查找Automake数据文件而不是在Automake安装路径中查找。这通常用于调试。
环境变量AUTOMAKE_LIBDIR也可以指定Automake数据文件查找目录,但该选项会覆盖掉它。
(例如ubuntu下apt install安装Automake安装时会在/usr/share/automake-1.15目录下安装am/header-vars.am等数据文件) - –print-libdir
打印Automake安装时的脚本和数据文件(如texinfo.texi和install-sh)安装位置。 - -c
–copy
与 –add-missing选项同时使用是会拷贝缺失的文件,而不是创建这些文件的符号连接。 - -f
–force-missing
与 –add-missing选项同时使用时,会强制添加Automake需要的所有标准文件,即使某些文件已经存在。这会导致source tree中已经存在的标准文件被删除,然后以与处理缺失文件相同的方式创建符号连接指向Automake自身携带的相应文件。(如果再加上**–copy**,直接拷贝而不是创建符号连接) - –foreign
设置全局严格性检查等级为foreign。3.2节讲述有有关严格性检查的内容。 - –gnits
设置全局严格性检查等级为gnits - –gnu
设置全局严格性检查等级为gnu - –help
打印一些命令行选项的摘要,然后退出Automake。 - -i
–ignore-deps
关闭在生成Makefiles文件时的依赖关系跟踪。 - –include-deps
使能在生成Makefiles文件时的依赖关系跟踪。该特性是默认开启的。该选项是由于历史原因添加,一般不使用。 - –no-force
通常automake生成所有configure.ac提到的Makefiles对应的Makefile.ins。该选项使automake只更新那些相对于其依赖已经变旧的Makefile.in。 - -o dir
–output-dir=dir
将生成的Makefile.in放到指定目录dir中。通常Makefile.in与其对应的Makefile.am在同一目录。 - -v
–verbose
使Automake打印一些关于正在读取或生成的文件的信息。 - –version
打印Automake的版本信息,然后退出。 - -W CATEGORY
–warnings=category
输出关于category的警告信息。category可以是下列类别中的一个:
1)gnu
与GNU Coding Standards相关的警告
2)obsolete
废弃的特性或结构
3)override
用户重复定义的Automake规则或变量
4)portability
移植性问题
5)extra-portability
额外的与某些模糊工具相关的移植性问题。类似的工具比如Microsoft lib archiver。
6)syntax
奇怪的语法问题,未使用的变量,错别字等
7)unsupported
不支持或未实现的特性
8)all
所有警告
9)none
关闭所有警告
10)error
将警告上报为错误
上述每种警告类型都可以在名字前边加前缀no- 来关闭它。比如,-Wno-syntax会隐藏未使用变量相关的警告。默认情况下Automake会打印‘obsolete’,、‘syntax’ 和‘unsupported’三种警告。此外,‘gnu’ 和‘portability’警告在 –gnu 或 –gnits严格性检查级别下也会打印。
关闭‘portability’也会关闭‘extra-portability’,类似的开启 ‘extra-portability’也会开启‘extra-portability’。但是,打开 ‘portability’ 或关闭 ‘extra-portability’ 不会影响自身外的警告类型。
环境变量WARNINGS可以定义一个以逗号分隔的要使能的警告类型列表。在命令行执行时会考虑到该环境变量,但命令行的 -Wnone选项的效果会覆盖掉环境变量WARNINGS。该环境变量还会被其他工具如autoconf使用,所以不识别的警告类型会忽略掉。
如果环境变量AUTOMAKE_JOBS定义为正数值,该值表示automake可以启动多少个Perl线程来并发生成多个Makefile.in文件。这是个正在实验中的特性。