我使用autoconf / automake在C中有一个源代码库,现在应该使用C ++编译器进行编译。
所以我已经将.c的所有文件重命名为.cpp并相应地更改了所有的makefile。但是我收到以下错误(例如):
make[3]: *** No rule to make target 'tmsConfigFiles.c', needed by 'tmsConfigFiles.o'. Stop.
Makefile基本上由
bin_PROGRAMS = configparser
configparser_SOURCES = tmsConfigFiles.cpp tmsMoreFiles.cpp tmsEvenMoreFiles.cpp
AM_CXXFLAGS = -I .. -DSOME_DEFINE -Wall -Wextra -etc
这适用于源代码的压倒性部分(其中一些是从开始的cpp),但对于某些文件,出现上面的错误消息。尝试清理和autoreconf -is等无济于事。
相同的版本适用于Centos 6,有时在Centos 7上失败,总是在我的Arch框上失败。
任何人在autotools中有类似的错误或知道解决方法?
我能想到的显而易见的事情是你在改变automake
之后没有重新执行autoreconf
(或更恰当的Makefile.am
),并且无论出于何种原因(有多种方法可以实现)你没有维护者-mode已启用。
但是,假设您实际上是在编辑Makefile.am
。如果您实际编辑了Makefile
,那么这是相反的问题,automake
正在做正确的事情,并通过重新生成不应编辑的文件完全忽略您的更改。
git clean -fx
没有删除.deps目录。
手动删除它们解决了这个问题。