创建autotool项目

news/2024/12/23 21:22:10/

GNU Autotools是linux系统一套自动化编译工具,生成的项目可移植,通过configure && make即可生成目标程序。GNU Autotools组件有:autoscan, aclocal, autoconf, automake,autoheader等。
不用管这些工具的原理,只要知道他们都是干什么的就行。更不需要了解perl、m4语法,只需要了解autoconf、automake语法即可。

构建项目

Here are the steps to generate an autoconf C language project:

  1. 创建项目目录,创建子目录src,进入src目录创建main.cpp

  2. 运行autoscan命令生成configure.scan文件。 该文件包含稍后将生成的configure脚本的模板。

autoscan
  1. configure.scan重命名为configure.ac.
mv configure.scan configure.ac

自动生成的configure.ac内容如下:

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.AC_PREREQ([2.69])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_CONFIG_SRCDIR([src/main.cpp])
AC_CONFIG_HEADERS([config.h])# Checks for programs.
AC_PROG_CXX# Checks for libraries.# Checks for header files.# Checks for typedefs, structures, and compiler characteristics.# Checks for library functions.AC_OUTPUT
  1. 在项目根目录创建Makefile.am,内容如下:
#有几个子目录就添加几个
SUBDIRS = src
  1. 在src目录创建Makefile.am,内容如下:
#将test改为你要生成的可执行文件名
bin_PROGRAMS = test
test_SOURCES = main.cpp
  1. 修改configure.ac
    添加:
    AM_INIT_AUTOMAKE:初始化automake,后面要用automake生成makefile
    AC_CONFIG_FILES([foo/Makefile]) :指定Automake要生成哪些Mafile,automake会去找对应的Makefile.am,生成对应的Makefile.in文件。
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.AC_PREREQ([2.69])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AM_INIT_AUTOMAKE
AC_CONFIG_SRCDIR([src/main.cpp])
AC_CONFIG_HEADERS([config.h])
#有几个目录就添加几个
AC_CONFIG_FILES([src/Makefile])
AC_CONFIG_FILES([Makefile])# Checks for programs.
AC_PROG_CXX# Checks for libraries.# Checks for header files.# Checks for typedefs, structures, and compiler characteristics.# Checks for library functions.AC_OUTPUT

如果此时执行autoconf,会报错:

Makefile.am: error: required file './NEWS' not found
Makefile.am: error: required file './README' not found
Makefile.am: error: required file './AUTHORS' not found
Makefile.am: error: required file './ChangeLog' not found
  1. 执行aclocal命令生成aclocal.m4文件。该文件包含configure 脚本使用的宏。
aclocal
  1. 执行autoconf命令,autoconf读取configure.ac 文件,生成configure脚本
autoconf
  1. 添加必要的说明文件
    如果不添加这些文件automake会报错。
touch NEWS README ChangeLog AUTHORS
  1. 执行automake命令,automake读取Makefile.am生成Makefile.in文件
automake --add-missing
  1. 执行autoheader命令,该命令生成config.h.in文件。
    configure脚本会用config.h.in生成config.h头文件,编译时会将config.h添加到你程序所有头文件里。

  2. 执行configure脚本。
    configure脚本会从Makefile.in文件生成Makefile。

  3. 执行make命令。

语法

autotool的语法可以在GNU网站搜索。
automake:https://www.gnu.org/software/automake/manual/automake.html
autoconf:https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.71/html_node/index.html


http://www.ppmy.cn/news/382613.html

相关文章

Binder对象的流转(系统服务的调用过程、AIDL的使用过程)

零、Binder的传递 Android系统中,存在大量的 IPC 交互,同时也使用了大量的 Binder,那么Binder是怎么在各进程中进行对象的传递? 一、调用系统服务时,Binder的传递 回忆一下,Android系统的启动流程&#x…

仿神庙逃亡

跑酷游戏仿神庙逃亡 链接:https://pan.baidu.com/s/12Pj8KQl1eWKWDbWO3OxtZQ 提取码:283a

安卓手机软键盘弹起的问题

现如今很多API对于安卓系统,iOS系统有些会兼容,有些不兼容。就拿软键盘弹起的问题来说吧,如果一个系统上面有一个输入框,底部有个按钮(前提按钮用了position:fixed),当我用安卓手机点击输入框的时候,底部的…

安卓手机里能否安装钢琴键盘模拟器APP呢?

可以在手机里直接安装使用。对于我们模拟练习钢琴非常有用。首先我们先启动手机,然后进入手机里的应用市场,搜索【钢琴键盘模拟器】安装到手机桌面上。  然后我们点 击【钢琴键盘模拟器】的图标,进入可操作界面。这时候会制动跳转到手机横屏…

分享安卓手机里的钢琴键盘模拟器给大家

安卓手机里的钢琴键盘模拟器,对于我们模拟练习钢琴非常有用。我们先打开手机,然后启动手机桌面上的【钢琴键盘模拟器】今天就和大家分享一下。 点 击【钢琴键盘模拟器】的图标,进入可操作界面。这时候会制动跳转到手机横屏界面。我们可以看到…

【LeetCode】HOT 100(11)

题单介绍: 精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍&#…

乐曲软件APP,钢琴键盘模拟器分享

手机里有可以弹奏出钢琴乐曲的软件钢琴键盘模拟器,非常受年轻的朋友喜欢。今天我就在这里和大家分享一下,使用钢琴键盘模拟器弹奏钢琴乐曲的软件。 先启动手机,运行钢琴键盘模拟器软件APP,点 击【钢琴键盘模拟器】图标进入可操作…

解密神庙逃亡类跑酷游戏地图无限的原因

解密神庙逃亡类跑酷游戏地图无限的原因 1.无限之谜 众所周知,跑酷类游戏像神庙逃亡给玩家的一种感觉就是地图无限多。有人说神庙逃亡跑1亿分就结束了,但这些其实都是假象,在程序猿眼中,这些人都是无知的。 这是一个最简单的跑酷…