转到c ++:file.o不需要生成目标file.c的规则

时间:2016-03-18 08:42:10

标签: c++ c makefile automake

我使用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中都有类似的错误或知道解决方法吗?

2 个答案:

答案 0 :(得分:1)

我能想到的显而易见的事情是,您在更改automake之后没有重新执行autoreconf(或更正确Makefile.am),无论出于何种原因(还有更多) <没有几种方法可以实现)你没有启用维护模式。

但是,假设您实际上是在编辑Makefile.am。如果您实际编辑了Makefile,那么它就是相反的问题,automake正在做正确的事情,并通过重新生成不应编辑的文件完全忽略您的更改。

答案 1 :(得分:0)

git clean -fx没有删除.deps目录。

手动删除它们解决了这个问题。