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

问题描述 投票:2回答:2

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

c++ c makefile automake
2个回答
1
投票

我能想到的显而易见的事情是你在改变automake之后没有重新执行autoreconf(或更恰当的Makefile.am),并且无论出于何种原因(有多种方法可以实现)你没有维护者-mode已启用。

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.