使用Autotools构建纯C项目遇Makefile.am错误:CXX未定义
Autotools编译错误:
C++ source seen but 'CXX' is undefined 解决方法 问题根源
你提到仓库里没有.cc/.cxx/.cpp类型文件,但从你贴的Makefile.am代码里能明确看到:
libfoo_la_SOURCES = ... lib/foo_eval.cc
lib/foo_eval.cc是标准的C源文件后缀,Autotools会自动识别该后缀并尝试调用C编译器,但你的configure.ac里没有初始化C++编译环境(未添加AC_PROG_CXX),因此触发报错。之前编译正常是因为这个.cc文件没被列入编译源文件列表,添加新文件时才被加进来。
解决方法
根据实际情况二选一:
若该文件是C代码(后缀写错)
- 将
lib/foo_eval.cc重命名为lib/foo_eval.c - 修改
Makefile.am中libfoo_la_SOURCES对应的条目,把.cc改成.c - 重新执行
autoreconf -v -f -i,无需修改configure.ac,也不会引入C++编译器依赖
- 将
若该文件确实是C++代码
- 必须在
configure.ac中添加AC_PROG_CXX,因为编译C代码依赖C编译器,这是无法避免的
- 必须在
内容的提问来源于stack exchange,提问作者wirrbel
相关产品推荐
相关产品推荐

