使用gnu工具链(configure,Makefile等)将GLib添加到现有应用程序

时间:2013-02-12 03:22:05

标签: makefile configure glib autoconf automake

我已经将代码添加到现有的大型应用程序中,并且需要使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工具链对我来说仍然是完全无法穿透的。 : - /从谷歌搜索,我的印象应该是be a configure.ac file或我应该添加一个宏来要求glib的东西,但是包中没有包含这样的文件而我正处于学习了整个automake / autoconf / configure / makefile业务的无助感。提前感谢任何建议或指示!

1 个答案:

答案 0 :(得分: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)