头文件和链接

虽然我们已经给出了这个简单的例子的编译命令,但是你最好还是使用 automake 和 autoconf 工具,就像 G. V. Vaughan 等在《Autoconf, Automake, Libtool》中所描述的那样。本书中用到的例子都包含在 gtkmm-documentation 包内,同时附有适当的编译构建的文件,所以我们以后不会再给出任何编译命令。你只需要找到恰当的目录然后键入 make

为了简化编译的过程,我们使用了 pkg-config,它存在于所有的(也许已经安装的) gtkmm 安装文件中。这个程序“知道”编译使用了 gtkmm 的程序所需要的编译器选项。--cflags 选项使 pkg-config 输出一个包含编译时需要用到的头文件的目录列表;而使用 --libs 选项将得到一个需要编译器去链接的库列表和一个用于寻找它们的目录列表。试着在你的命令行提示符下运行它,看看在你的系统上会有什么样的结果。

然而,在标准的 configure.ac 中使用 PKG_CHECK_MODULES() 宏,并且运行 autoconf 和 automake 后,这变的更加简单。例如:

PKG_CHECK_MODULES([MYAPP], [gtkmm-4.0 >= 4.8.0])
这将会检查是否存在 gtkmm,并且定义了可以在你的 Makefile.am 文件中使用的 MYAPP_LIBS 和 MYAPP_CFLAGS 变量。

gtkmm-4.0 是当前稳定 API 的名字。更早期的 API 叫做 gtkmm-2.4和gtkmm-3.0,如果需要的话它可以和 gtkmm-2.4 ,gtkmm-3.0 同时安装到系统。gtkmm-2.4 有许多版本,例如,gtkmm-2.10,还有多个版本gtkmm-3.0的api。注意,API 的名字并不会随着每个版本变化而发生变化,因为如果这个发生变化了,则意味着 API 和 ABI 不再同以前保持兼容。理论上,将来可以有 gtkmm-5.0 API 与现在的 gtkmm-4.0 同时安装到系统,而现有应用程序不会受到影响。

注意,如果你提到了除 gtkmm-4.0 之外的模块,它们需要以空格分开,而不是逗号。

GNU网站上拥有更多autoconfautomake的相关信息。

如果你打算自己从小型应用程序开始试验,那么使用构建应用程序章节的Makefile.example文件从MakeFile开始比较容易。