我需要为一个使用基于 autoconf 的系统构建的项目包含GLib头文件以实现可移植性。
如何以可移植的方式安全地导入 GLib 标头?我知道pkg-config,但这并不完全可移植(因为某些系统没有它,我宁愿只依靠 autoconf 进行配置)。
我需要为一个使用基于 autoconf 的系统构建的项目包含GLib头文件以实现可移植性。
如何以可移植的方式安全地导入 GLib 标头?我知道pkg-config,但这并不完全可移植(因为某些系统没有它,我宁愿只依靠 autoconf 进行配置)。
通过使用该PKG_CHECK_MODULES
宏,Autoconf 生成的configure
脚本可以自动检索 pkg-config 数据。例如,将此行添加到您的configure.ac
文件中:
PKG_CHECK_MODULES([DEPS], [glib-2.0 >= 2.24.1])
将导致生成的configure
脚本确保已安装的 glib-2.0 版本大于或等于 2.24.1 版本,并分别附加到变量DEPS_CFLAGS
和 和DEPS_LIBS
的输出。然后在and初选中使用and变量:pkg-config --cflags glib-2.0
pkg-config --libs glib-2.0
$(DEPS_CFLAGS)
$(DEPS_LIBS)
_CFLAGS
_LDADD
bin_PROGRAMS = hello
hello_CFLAGS = $(DEPS_CFLAGS)
hello_SOURCES = hello.c
hello_LDADD = $(DEPS_LIBS)
GLib 2.22INSTALL
文件指出这pkg-config
是安装此库的要求。我不是 GLib(双关语!);此要求的声明是INSTALL
文件顶部的第一件事。
从周围的文本中不清楚是否pkg-config
需要编译 GLib 本身,但是很明显,GLib 2.22 作者不打算让任何用户在没有 pkg-config 的情况下针对 GLib 进行编译。特别是,GLibmake install
将适当地安装.pc
文件。
为了平台的可移植性,请指导用户进行$PKG_CONFIG_PATH
适当的设置。