【发布时间】:2013-11-22 11:19:44
【问题描述】:
我正在向一个库项目添加自动工具支持。它依赖于另一个不一定在默认库路径中的自写库。所以我会在配置的时候设置LDFLAGS。
不过,我想检查库以警告用户正确设置 LDFLAGS。因此我输入了这一行:
AC_CHECK_LIB([foo], [foo_func],
[AC_DEFINE([HAVE_FOO, [1],
[Define if you have libfoo])],
[AC_MSG_WARN([libfoo not found.])])
现在,如果我不设置 LDFLAGS,检查将按预期失败并打印警告。但是:当我运行make 时,代码仍然可以编译,因为我在环境变量LD_LIBRARY_PATH 中设置了库路径。我觉得这很令人困惑...我希望检查失败并且代码不编译,或者检查不失败并且代码编译。
我误解了 AC_CHECK_LIB 的含义还是我做错了什么?
【问题讨论】:
-
这个
AC_CHECK_LIB对我来说似乎意味着libfoo是可选 并且可以使用或不使用它来构建代码(HAVE_FOO未定义,代码将“解决”没有libfoo)。如果libfoo真的是必需的,它应该会出错而不是警告。
标签: shared-libraries autotools autoconf