[译文] 如何开始一个真正的 GTK 项目(第二部分:配置 Au

2016-09-10  本文已影响0人  Leavers

原文地址:Advanced GTK Techniques


在这个教程中,你将学习如何创建一个空的 Autotools 编译系统。这是《如何开始一个真正的 GTK 项目》的第一章节。


首先,我们创建一个名为 app-skeleton1 的目录。在这个目录中再创建名为 Makefile.am 的空文件(可以在终端中使用 touch Makefile.am 命令),这是一个 Automake 文件,我们将在稍后在这里输入如何将代码转换成程序的指令。现在,我们需要使用 Autoconf 配置我们的项目。

在当前用目录下新建一个 configure.ac 文件,它是 Autoconf 的配置文件,定义了在编译工程时需要使用哪些工具。我们也需要在这里定义系统环境需求,这样 Autotools 可以检测系统是否满足要求。在 configure.ac 中,我们输入:

AC_INIT([App Skeleton], [1], [philip.chimento@gmail.com])
AM_INIT_AUTOMAKE([-Wall foreign])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

这个文件中包含了可以被 Autoconf 扩展成脚本的各种宏。以 AC_ 开头的是 Autoconf 自己的宏,以 AM_ 开头的则属于 Automake。宏的参数列表被包含在一对圆括号中,每个参数还被包含在一对方括号内。方括号在这里表示“引用”,在 Autoconf 的手册中有关于它的详尽介绍,我们只需要记住一点:每个参数都要用方括号括起来。接下来我们一个一个介绍这些宏。

我们现在需要“引导(bootstrap)”程序(即将项目从混沌状态初始化至编译系统可工作的状态)。Autoreconf 程序会帮我们完成这项工作,它会运行包括 AutoconfAutomake 在内的诸多程序,为项目配置好编译环境。在终端中输入:

autoreconf -i
configure.ac:2: installing `./install.sh'
configure.ac:2: installing `./missing'

终端中会打印出被创建的文件的信息(这项安装工作是由 -i 选项完成的,如果这些文件已经被创建,那么我们只需输入 autoreconf 即可)。不过,当我们浏览目录时会发现,新增的文件不仅仅是终端提到的几个,Makefile.inaclocal.m4configure 以及一个 autom4te.cache 都会在执行命令时被创建。

关于引导

其实,如果有人想从这里开始自行编译你的程序,他/她已经用不到 Autoconf 或者 Automake 了 —— shellMake 足矣。一个可供分发的源码包通常都配备了编译过程所需的各种文件,你不需要再被 Autotools 搞得痛不欲生。但如果项目源代码是从仓库中获取的,它就有可能还未被引导,这是因为维护者通常假定我们这些屌炸天的开发者们为了应对五花八门的开发环境已经在自己的电脑上安装了众多的编译工具。如果你下载的源代码符合这种情况,可以尝试用 autoreconf -i 自行引导。有时候项目会提供一个名为 autogen.shbootstrap 的文件帮助我们完成这项工作 —— 尤其是引导过程中需要完成一些额外工作时。如果存在这些文件,直接运行它就好了。

现在编译系统已经初始化完毕,我们可以开始常规的编译过程:

./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
configure: creating ./config.status
config.status: creating Makefile
make
make: Nothing to be done for `all'.

当然 make 目前无事可做。我们没有代码文件,Makefile.am 也是空的。不过,如果你查看生成的 Makefile 文件,它却并非一无所有:我的系统报告它有 14 KB。虽然我们的项目还未正式开始,我们已经有了一个灵活的编译系统。

为了展示系统的灵活性,我们输入 make dist,当前目录就会出现一个名为 app-skeleton-1.tar.gz 的文件。这是个源代码的 tarball 归档文件,可用于分发。即使用户的设备中没有 Autotools 也可以下载这个包进行编译,因为他们需要的是 configureMakefile 文件,这些已经预先打包了。

我们还可以做些别的事情,比如清理项目的目录。如果想查阅全部 make target 指令的话,可以去看看 Make manual


文章许可协议:Attribution-NonCommercial-ShareAlike 3.0 Unported

上一篇下一篇

猜你喜欢

热点阅读