【问题标题】:can't find boost c++ using configure.ac使用configure.ac找不到boost c++
【发布时间】:2011-09-01 01:32:18
【问题描述】:

我写了一个configure.ac来查找boost c++包含的路径,但是找不到任何东西。如果我指定路径,它可以编译。有人可以帮我吗? 这是我的configure.ac

AC_PREREQ([2.67])
AC_INIT(pkg, 1.1.01)
AC_PROG_CXX

AC_ARG_WITH(
[boost],
[AS_HELP_STRING(
    [--with-boost=DIR],
    [path to look for Boost])
],
[boostpath=$withval],
   [boostpath=]
)

if test -n "$boostpath"; then
boostinc="-I$boostpath/include"
fi

CXXFLAGS="$CXXFLAGS ${boostinc}"

AC_SUBST([CXXFLAGS])

AC_CONFIG_FILES([Makevars])
AC_OUTPUT

非常感谢。

【问题讨论】:

  • -I 参数属于 CPPFLAGS,而不是 CXXFLAGS
  • 你在哪里调用 AC_CHECK_HEADERS?标准用法是让您在 configure.ac 中调用 AC_CHECK_HEADERS,如果标头安装在非标准位置,请让用户在 CPPFLAGS 中指定位置:./configure CPPFLAGS=-I/p/a/t/h .

标签: c++ r boost package autoconf


【解决方案1】:

只需使用autoconf-archive 中的AX_BOOST_BASE

如果您尝试AC_CHECK_HEADERS 来验证boost 标头是否存在,请记住您需要先AC_LANG_PUSH([C++]),否则您将收到“标头存在但无法编译”错误。

【讨论】:

  • 感谢您的回答。我正在尝试使用 AX_BOOST_BASE([1.45]),但它给了我错误消息:
  • 然后将错误消息发布为对原始问题的编辑。我不是通灵者。
  • 对不起,我使用 ./configure 来检查它是否可以运行,错误消息是:./configure: line 2666: syntax error near unexpected token '1.45' ./configure: line 2666" 'AX_BOOST_BASE(1.45>'
  • 你需要从 autoconf-archive 中下载.m4 文件并将其放在aclocal 的某个位置会看到它(例如./m4/ax_boost_base.m4)。在 configure.ac 中调用 AC_CONFIG_MACRO_DIR([m4]) 和在 Makefile.am 中调用 ACLOCAL_AMFLAGS = -I m4(如果您使用 automake),然后运行 ​​autoreconf。或者,通过包管理器安装 autoconf-archive。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-21
  • 1970-01-01
  • 1970-01-01
  • 2013-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多