【发布时间】:2023-03-11 00:11:01
【问题描述】:
对于我的项目(库),我使用 configure with libtool 和 automake 在 linux 主机下构建。该库由一个 C API 和一个可选的 C++ 扩展组成。所以,既然 AC_PROG_CXX 必须全局调用,我使用 automake 条件:
*configure.ac*:
AC_PROG_CC
AC_PROG_CXX
AM_PROG_AR
LT_INIT
... some tests to figure out 'build_cxx' ...
AC_CONDITIONAL([CXX], [ test x$build_cxx = xyes ])
在 Makefile.am 中
sources = files.c
if CXX then
cxx_sources = files.cpp
else
cxx_sources =
endif
sources = $sources $cxx_sources
然而,当 configure 无法找到 g++ 时,整个事情就不起作用了(这实际上扼杀了 c++ 扩展的额外逻辑)。经过一番研究,我得出的结论是 AC_PROG_CXX 以某种方式告诉 libtool 假设 c++ 支持。我还惊讶地发现如果 AC_PROG_CXX 失败,它会将 CXX 设置为 'g++'!!!
无论如何,有条件地调用 AC_PROG_CXX 会产生类似“am_fastdepCXX is never defined”之类的错误,这对我来说似乎是合乎逻辑的。最糟糕的是,在 configure 运行时该错误未显示,但它在链接阶段稍后出现,以“未知 libtool 选项-o”的形式出现(哎哟)。
完整的源代码可以在这里找到 -> http://bitbucket.org/sdlu/sdlu/src
有人可以帮帮我吗?
提前谢谢...
【问题讨论】:
标签: c++ configure autotools automake libtool