首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Autoreconf查找Boost::Date-time的更好方法

Autoreconf查找Boost::Date-time的更好方法
EN

Stack Overflow用户
提问于 2013-06-22 01:13:40
回答 2查看 486关注 0票数 0

我正在尝试使用自动工具编译一些代码,但在尝试包含boost::date-time和boost::regex时遇到了问题。我得到了一个定义boost::date-time的configure.in文件,如下所示

代码语言:javascript
复制
AC_CHECK_LIB(boost_date_time-gcc-mt, main, , [
        AC_CHECK_LIB(boost_date_time-mt, main, , [
                AC_CHECK_LIB(boost_date_time, main, , [
                        AC_MSG_ERROR("Linking against boost::date-time library failed.")])
        ])
])

根据谷歌的说法,这似乎是标准方式。但是当我运行autoreconf时:

代码语言:javascript
复制
$ autoreconf -f -s -i
libtoolize: putting auxiliary files in `.'.
libtoolize: linking file `./ltmain.sh'
libtoolize: Consider adding `AC_CONFIG_MACRO_DIR([m4])' to configure.in and
libtoolize: rerunning libtoolize, to keep the correct libtool macros in-tree.
libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am.

和./configure:

代码语言:javascript
复制
$ CXXFLAGS="-g -w" ./configure --prefix=$INSTALL_PATH
...
checking for main in -lboost_date_time-gcc-mt... no
checking for main in -lboost_date_time-mt... no
checking for main in -lboost_date_time... no
configure: error: "Linking against boost::date-time library failed."

找不到它。我知道它们在那里,因为我从头开始编译了boost 1.53。这里会有什么问题呢?

在此之前非常感谢。

EN

回答 2

Stack Overflow用户

发布于 2013-06-22 02:31:26

GNU Autoconf Archive中有用于boost::date-timeboost::regex的宏。也许他们会更合适。

找不到它。我知道它们在那里,因为我从头开始编译了boost 1.53。这里会有什么问题呢?

你必须咨询config.log才能确定这一点。由于您要在这些库中查找main函数(这些库不在这些库中,但这是另一个问题),AC_CHECK_LIB测试将生成invalid C++ code,这可能就是您的问题所在。

票数 0
EN

Stack Overflow用户

发布于 2013-06-22 02:59:07

有一个很棒的boost.m4宏。您可以将其复制到顶级./m4目录中。

使用aclocal -I m4 --install的顶级Makefile.am

  • invoke

  • ACLOCAL_AMFLAGS = -I m4 --install中的
  • AC_CONFIG_MACRO_DIR([m4]) in configure.ac aclocal

configure.ac中使用结果非常容易,例如,对于Boost.Filesystem:

代码语言:javascript
复制
BOOST_REQUIRE([1.53], [ACTION-IF-NOT-FOUND])
AC_SUBST(BOOST_CPPFLAGS)
MY_PROJECT_CPPFLAGS+="$BOOST_CPPFLAGS"

BOOST_FILESYSTEM([mt])
AC_SUBST(BOOST_FILESYSTEM_LIBS)
AC_SUBST(BOOST_FILESYSTEM_LDFLAGS)
MY_PROJECT_LIBFLAGS+="$BOOST_FILESYSTEM_LDFLAGS $BOOST_FILESYSTEM_LIBS"

它甚至会添加像Boost.System这样的依赖项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17240822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档