如何使用Autoconf检测Perl头文件可用性(已解决)
如何用Autoconf检查Perl头文件可用性?
我正在开发一个开源应用,需要有条件地集成Perl用于文本处理(此仅为信息说明,请勿质疑该理念:-))。想请教下,通常如何用autoconf检查Perl头文件是否可用?
在我的configure.ac中,对于带有pkg-config文件的组件,我使用如下配置:
PKG_CHECK_MODULES(GTK, gtk+-3.0, [AC_DEFINE([HAVE_GTK_3], 1, [Define to 1 if GTK+ 3 is present])]) PKG_CHECK_MODULES(SQLITE, sqlite3, [AC_DEFINE([HAVE_SQLITE], 1, [Define to 1 if SQLite is present])])
但遗憾的是,Perl并未提供.pc文件。目前我在Makefile.in中使用perl -MExtUtils::Embed -e ccopts -e ldopts生成编译器标志,而非调用pkg-config。想知道有没有更规范的实现方式?
我曾尝试以下配置:
AC_CHECK_HEADER([perl.h], AC_DEFINE(HAVE_PERL, 1, [Define to 1 if Perl headers are present]))
但结果并不奏效:
checking for perl.h... no
在我的系统中(大部分系统应该都是如此),perl.h并不在/usr/include目录下:
gforgx@shinjitsu nf $ locate perl.h | tail -n 1 /usr/lib64/perl5/CORE/perl.h
是否存在一种不使用automake及AM_宏的合规方式,来扩展AC_CHECK_HEADER的搜索路径?
我尝试修改CPPFLAGS后情况有所改善,但仍存在问题(可能是由于perl.h依赖其他头文件),出现如下警告:
configure: WARNING: perl.h: present but cannot be compiled configure: WARNING: perl.h: check for missing prerequisite headers? configure: WARNING: perl.h: see the Autoconf documentation configure: WARNING: perl.h: section "Present But Cannot Be Compiled" configure: WARNING: perl.h: proceeding with the compiler's result configure: WARNING: ## ------------------------------------ ## configure: WARNING: ## Report this to gforgx@protonmail.com ## configure: WARNING: ## ------------------------------------ ## checking for perl.h... no
更新:可行配置
最终以下配置可以正常工作:
PERL_CPPFLAGS=`perl -MExtUtils::Embed -e ccopts` PERL_LIBS=`perl -MExtUtils::Embed -e ldopts` old_CPPFLAGS="$CPPFLAGS" old_LIBS="$LIBS" CPPFLAGS="$CPPFLAGS $PERL_CPPFLAGS" LIBS="$LIBS $PERL_LIBS" # TODO: figure out why first option doesn't work #AC_CHECK_HEADER([perl.h], AC_DEFINE(HAVE_PERL, 1, [Define to 1 if Perl headers are present])) AC_CHECK_FUNCS(perl_construct, AC_DEFINE(HAVE_PERL, 1, [Define to 1 if Perl headers are present])) CPPFLAGS="$old_CPPFLAGS" LIBS="$old_LIBS"
内容的提问来源于stack exchange,提问作者Sergey S.
相关产品推荐
相关产品推荐

