我正在尝试设置我的项目,以使用自动工具生成系统进行分发。然而,当涉及到包含一些额外的库时,我遇到了一个问题。
我的代码依赖于几个库:
这些都已经编译并安装在我的$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显示,配置正在尝试使用
g++ -std=c++11 (other flags...)但是由于上面缺少标志而失败(错误是“无法找到特征3/稠密”,或类似,指示缺少的-I标志)
我是自动工具的新手,所以我可能遗漏了一些显而易见的东西,但我已经阅读了大量的帮助和手册,到目前为止还没有弄清楚我需要做些什么来设置它。
相关:如果需要的话,我希望用户能够通过-with include(等)手动指定libfoo和libbar的位置,所以我还需要能够指定configure检测到这些库的位置。这是如何做到的呢?
发布于 2015-07-15 15:47:33
你要做的就是:
为
-std=c++11 (搞定这件事)
使用11.m4很好
要使用它,您需要从上面的链接下载并在$(project_top)/m4/中设置它。
接下来,您在configure.ac中编写如下所示:
AX_CXX_COMPILE_STDCXX_11([noext], [mandatory])而且,您可以在平台中检查是否可以使用C++11特性
$ autoreconf -vi -I m4
$ ./configure和
-I/path/to/include/libfoo (或libbar,或Eigen3) -L/path/to/lib/ ( libfoo和libbar居住在其中) -lfoo
很难简单地解释,
$CURLCONFIG --libs CURL_CFLAGS=$CURLCONFIG --cflagshttps://stackoverflow.com/questions/31390648
复制相似问题