0

我已经向现有的大型应用程序添加了代码,并且需要使 GLib 成为一项要求,因为我的代码依赖于它。为了开发,我只是手动编辑了 Makefile 来添加

-lglib-2.0

到 LIBS= 变量和

-I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include $<

到以 ${CC} 开头的行。

但是,我不知道如何在应用程序中使其永久/可移植 - 即当有人在未来执行 ./configure 时,生成的 Makefile 还应该包括上述内容(酌情,因为这些取决于 pkg-config输出,我学到了)。我更新的代码库包括 gnu 工具链中的以下文件:

Makefile.in
Makefile.manual
config.h.in
configure
configure.in

我只有少量的 CS 学位和几年的开发经验,所以 GNU 工具链对我来说仍然是完全无法理解的。:-/ 通过谷歌搜索,我的印象应该是还有一个 configure.ac 文件或者我应该添加一个宏来要求 glib 的东西,但是包中没有包含这样的文件,我就是这样对整个 automake/autoconf/configure/makefile 业务的学习无助。提前感谢您的任何建议或指示!

4

1 回答 1

2
  1. 您不应手动编辑任何生成的文件。这包括用于构建应用程序的最终 Makefile。
  2. configure.ac中,列出了每个依赖项,因此应该在那里检查 GLib。从此文件configure中生成最终的 shell 脚本。
  3. GLib 提供了pkgconfig描述,因此您几乎总是希望使用它来获得正确的编译和链接标志。
  4. 结合 pkgconfig 和 Autotools 只是调用PKG_CHECK_MODULES宏的问题。Autotools Mythbuster是一个很好的资源,它描述了如何做到这一点。
  5. 最后归结为将这些行添加到您的configure.ac

    PKG_PROG_PKG_CONFIG
    PKG_CHECK_MODULES([GLIB], [glib-2.0])
    

    这些行到你的Makefile.am

    foo_CXXFLAGS = $(GLIB_CFLAGS)
    foo_LIBS = $(GLIB_LIBS)
    
于 2013-02-12T08:10:50.323 回答