【发布时间】:2015-10-02 03:31:53
【问题描述】:
我正在尝试设置我的项目以使用自动工具构建系统进行分发。但是,在包含一些额外的库时我遇到了问题。
我的代码依赖于几个库:
我写的一个(我叫 libfoo)
第三方(我将调用 libbar)
Eigen3(只是头文件)
这些都已经编译并安装在我的 $HOME 目录中。我不需要将它们构建为这个项目的一部分。
我需要的标志是
-std=c++11 (Got this taken care of)
和
-I/path/to/include/libfoo (or libbar, or Eigen3)
和
-L/path/to/lib/ (Where libfoo and libbar reside)
和
-lfoo
编译和链接 libfoo 和 libbar
问题是我想检查是否存在 libfoo 和 libbar 及其标题(我已经检查了 Eigen3 设置)。问题是 AC_CHECK_HEADERS 和 AC_CHECK_LIB 之类的宏似乎不想包含所需的 CPPFLAGS 或 LDFLAGS,无论我如何尝试定义它们,因此配置步骤失败。
AC_LANG_PUSH([C++])
AC_CHECK_HEADERS([libfoo/foo.h], , [echo "Did not find libfoo headers"; exit -1])
AC_LANG_POP([C++])
读取 config.log 显示 configure 正在尝试使用编译头文件
g++ -std=c++11 (other flags...)
但由于上面缺少标志而失败(错误是“找不到 Eigen3/dense”或类似的,表示缺少 -I 标志)
我是 autotools 的新手,所以我可能遗漏了一些明显的东西,但我已经阅读了大量的帮助和手册,但到目前为止我还没有弄清楚我需要做些什么来设置它。
相关:如果需要,我希望用户能够通过 --with-libfoo-include (等)手动指定 libfoo 和 libbar 的位置,因此我还需要能够指定 configure 检测这些库的位置。如何做到这一点?
【问题讨论】:
标签: c++ autotools autoconf automake