[✔️]AutoMake入门指南

简介: [✔️]AutoMake入门指南

AutoMake是什么


如果你知道CMake,那么就非常好理解AutoMake,无论是CMake还是还是AutoMake,他们的最终目的都是为了方便程序进行跨平台编译。


CMake的产生晚于AutoMake,在设计理念和思路上都有差异,从个人的使用体验上来说,CMake更加现代化。


AutoMake的几个核心文件的关系


image.png


  • autoreconf读取Makefile.amconfigure.ac产生Makefile.in


  • 生成的configure脚本,读取Makefile.in产生Makefile,编译可配置变量可以通过./configure --help查看


  • 执行make命令,进行程序的编译


以上就是使用AutoMake时,大概发生的一个流程逻辑,AutoMake目的就是让程序员只写一个规则:.am文件、ac文件,就能生成适合各种配置、平台的Makfiles。


一个最简单的程序:Hello Automake


我在Github上编写了一个HelloWorld,从仓库中可以看到对于一个Automake程序,有效的文件有:


  • Makefile.am


  • configure.ac


通用的编译过程为:


autoreconf --install
./configure
make


AutoMake语法


这里仅仅是记录了自己所了解到的语法,并没有深究具体的含义


关键字 解释
SUBDIRS 指定需要递归automake的子文件夹,即存在Makefile.am的子文件夹
xxx_SOURCES 程序的源代码
xxx_PROGRAMS 程序的名字


举个例子:


SUBDIRS = lib include doc tests m4 $(EXAMPLES_DIR)


很明显,源码就在lib、include等,AutoMake会自动去递归检索这些目录,重新遍历Makefile.am


更多的语法就不再展开了,毕竟相对CMake来说,AutoMake已经是非常古老的轮子了,只有非常老旧的项目在使用,大部分的项目慢慢都选择了CMake。


如何跨平台编译


需要在对应的平台上执行通用的编译过程,AutoMake会根据运行环境,生成不同的Makefile。


目录
相关文章
|
4天前
|
存储 JavaScript 算法
Nodejs 第二十四章(zlib)
Nodejs 第二十四章(zlib)
30 0
|
11月前
|
Ubuntu
【经验分享】zlib库在Ubuntu下的安装和配置
【经验分享】zlib库在Ubuntu下的安装和配置
818 0
|
12月前
|
TensorFlow Scala 算法框架/工具
[✔️]Python多版本管理工具:Conda
[✔️]Python多版本管理工具:Conda
144 0
|
12月前
|
API
[✔️]FFMpeg与视频的基础知识
[✔️]FFMpeg与视频的基础知识
73 0
|
12月前
|
编译器 Linux 数据库
[✔️]FFMpeg编译32位踩坑指南
[✔️]FFMpeg编译32位踩坑指南
775 0
【技术分享】Mac使用Homebrew安装httpd
【技术分享】Mac使用Homebrew安装httpd
330 0
【技术分享】Mac使用Homebrew安装httpd
|
Ubuntu 编译器 C语言
zlib开发笔记(三):zlib库介绍、在ubuntu上进行arm平台交叉编译
zlib开发笔记(三):zlib库介绍、在ubuntu上进行arm平台交叉编译
zlib开发笔记(三):zlib库介绍、在ubuntu上进行arm平台交叉编译
|
Windows
开源项目推荐:Zlib,libPng,libJpeg for Windows
开源项目推荐:Zlib,libPng,libJpeg for Windows
663 0
|
前端开发 Linux 编译器
CentOS 7安装cmake 2.8.12.2,请重点关注CMake Practice教程
CentOS 7安装cmake 2.8.12.2,请重点关注CMake Practice教程
419 0
|
关系型数据库 Linux PostgreSQL