c++ - 如何在 GNU Autotools 项目中包含 Boost?

标签 c++ boost makefile autotools

我的项目使用 GNU 自动工具编译(aclocal && autoconf && ./configure && make)。我想使用 Boost,并且我希望其他人也能够编译它。

  1. 我应该将 Boost 放在我的项目目录中,还是依赖于系统的 Boost?
  2. 我应该如何告诉 autotools 使用 Boost?我用谷歌搜索并发现许多声称可以执行此操作的 m4 文件 - 但我应该将这些 m4 文件放在哪里?我可以将一个存储在我的 /usr/share/aclocal 目录中,但这对其他想要使用 ./configure && make 编译项目的人没有帮助。

最佳答案

The ArchiveAX_BOOST_*

我切换到boost.m4有一段时间了,但速度太慢了,我可以在 boost.m4 完成对第二个库的测试之前在 vim 中手动编辑一个包含完整 Boost 路径的 Makefile。

我回到存档,很高兴得知 boost 宏再次得到积极维护;然后我开始从我的每个项目中清除 boost.m4。

一个用例的相关摘录(假设 ax_boost_*.m4 文件在 subdir m4 中):

./引导

aclocal -I m4 --install
...

./configure.ac

...
AC_CONFIG_MACRO_DIR([m4])
...
AX_BOOST_BASE([1.48],, [AC_MSG_ERROR([libfoo needs Boost, but it was not found in your system])])
AX_BOOST_SYSTEM
AX_BOOST_FILESYSTEM
...

./Makefile.am

ACLOCAL_AMFLAGS = -I m4
EXTRA_DIST = bootstrap ...
SUBDIRS = ... src ...
...

./src/Makefile.am

AM_CPPFLAGS = \
    ... \
    $(BOOST_CPPFLAGS) \
    ...

...

AM_LDFLAGS = ... \
    $(BOOST_LDFLAGS)

...

lib_LTLIBRARIES = libFoo.la

...

libFoo_la_LIBADD = \
    ... \
    $(BOOST_FILESYSTEM_LIB) \
    $(BOOST_SYSTEM_LIB) \
    ...

关于c++ - 如何在 GNU Autotools 项目中包含 Boost?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18281079/

相关文章:

c++ - C++类中的静态声明

c++ - 配置为可变性时,boost::heap::d_ary_heap保存的额外std::list的目的是什么?

c++ - 在 1_54 中破坏了 boost 变体?

variables - 如果未定义,如何提示特定于目标的 Makefile 变量?

android - 将 Makefile 转换为 Android.mk

c++ - 什么会导致页面缓冲池增加?

c++ - 错误 C2893 : Failed to specialize function template 'unknown-type std::less<void>::operator ()(_Ty1 &&,_Ty2 &&) const'

python - 如何在Makefile中将./扩展为绝对路径

c++ - 包含特征向量的类的奇怪大小

c++ - 如何使用 C++ 清除 OpenCV 中的白色背景?