我使用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中都有类似的错误或知道解决方法吗?
答案 0 :(得分:1)
我能想到的显而易见的事情是,您在更改automake
之后没有重新执行autoreconf
(或更正确Makefile.am
),无论出于何种原因(还有更多) <没有几种方法可以实现)你没有启用维护模式。
但是,假设您实际上是在编辑Makefile.am
。如果您实际编辑了Makefile
,那么它就是相反的问题,automake
正在做正确的事情,并通过重新生成不应编辑的文件完全忽略您的更改。
答案 1 :(得分:0)
git clean -fx
没有删除.deps目录。
手动删除它们解决了这个问题。