【问题标题】:Moving to c++: no rule to make target file.c needed by file.o迁移到 c++:没有规则使 file.o 需要目标 file.c
【发布时间】:2016-03-18 08:42:10
【问题描述】:

我有一个使用 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


    【解决方案1】:

    我能想到的显而易见的事情是,在更改Makefile.am 之后,无论出于何种原因,您都没有重新执行automake(或更准确地说是autoreconf)(有多种方法)发生)你没有启用维护模式。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-20
        • 1970-01-01
        • 2023-03-10
        • 2023-01-10
        • 1970-01-01
        相关资源
        最近更新 更多