Eclipse CDT: 没有规则可生成目标“all”

45

当我尝试编译以下代码时,我的Eclipse CDT会不停地抱怨“make: *** no rule to make target all”:

#include <iostream>
using namespace std;

int main() {
  cout << "Hello World!!!" << endl; // prints Hello World!!!
  return 0;
}

有人知道如何解决这个问题吗? 我已经阅读了标题类似的帖子: make: *** No rule to make target `all'. Stop. Eclipse error 但是那些答案都没有帮到我...

非常感谢!


我刚从CDT官网下载了软件包,但还没有对其进行任何操作。实际上,在我编辑test.cpp之前,这个问题就已经存在了。 - Mark Z.
你选择了哪个工具链来进行项目开发? - Torsten
11个回答

44

您需要更改项目设置,以便Eclipse-CDT为您管理Makefile。

  1. 从菜单栏中选择项目->属性。
  2. 在弹出的对话框中,单击左侧的C/C++ Build。
  3. 在右侧的“ Builder Settings”选项卡下,在“ Makefile generation”部分中选择“自动生成Makefile”。
  4. 单击“ 确定”并重新构建。

41
“Generate Makefiles automatically”对我而言是被阴影覆盖的! - Mike Vella
1
如果您使用“包含makefile的现有项目”构建了项目,则可以通过取消选中“自动生成makefile”来解决我的问题。但是,现在在我家里的工作笔记本电脑上,我遇到了完全相同的错误,但无论如何都无法解决。 - JoeManiaci

19

"all"是默认设置,即使Behavior->Build (Incremental build)标签没有变量。我解决方法如下:

  1. 进入项目属性 > C/C++ 构建 > 行为选项卡。
  2. 勾选构建(增量构建)复选框。
  3. 在构建(增量构建)旁边的文本框中输入“test”。
  4. 构建项目,您将看到错误消息。
  5. 返回到构建(增量构建)并删除“test”。
  6. 再次构建项目。

4
哈哈!!这太不直观了,但是却奏效了! :0 - deepdive
2
它起作用了。我不知道为什么。这是一个稳定的解决方案吗?它一直在抱怨项目使用的.so文件。 - huseyin tugrul buyukisik

13
  1. 从菜单栏中选择项目->属性。

  2. 在弹出的对话框中,单击左侧的C/C++构建。

  3. 在右侧的“构建设置”选项卡下,检查并确保“构建位置”正确。

10
在C/C++ Build -> Builder Settings中,选择内部构建器(而不是外部构建器)。
对我有效。

6
我刚刚解决了这个问题,甚至参考了这个问题。
我假设您还没有编写Eclipse正在抱怨的“all”规则。 如果是这种情况,请执行以下步骤:
  1. 转到项目属性> C / C ++ Build>行为选项卡。
  2. 保留Build(增量构建)已选中。
  3. 从Build(Incremental Build)旁边的文本框中删除“all”。
  4. 开始编译!
这样可以让Eclipse知道您不想使用名为“all”的make目标。由于某种原因,这是默认设置。

4
您有两种情况:
  • 如果您自己创建Makefile,请按照以下步骤进行:
  1. 从菜单栏中选择“项目-属性”。
  2. 在弹出的对话框中,单击左侧的“C/C++ Build”。
  3. 禁用自动生成Makefile -> 在右侧的“构建设置”选项卡下,检查并确保“构建位置”正确(该位置是您的Makefile所在位置)。
  • 如果您没有Makefile -> 您需要使用Eclipse DS-5来帮助您创建Makefile
  1. 从菜单栏中选择“项目-属性”。
  2. 在弹出的对话框中,单击左侧的“C/C++ Build”。
  3. 启用自动生成Makefile。

我建议您自己创建Makefile。


1
“构建位置”提示对我很有帮助。 - AlbusMPiroglu

2

在重命名和移动源文件后,我遇到了同样的错误。所有提出的解决方案都对我无效,我发现问题出在 Debug 目录下的元文件没有更新。删除整个 Debug 目录并重新构建项目解决了我的问题。


2

对我来说,通过执行“项目 -> 清理 -> 清理所有项目”然后再执行“项目 -> 构建项目”解决了我的问题(在此之前,我取消了自动生成makefile的选项,然后重新勾选)。这是针对AVR(微处理器编程)项目,使用eclipse Juno中的AVR CDT插件。


2
有时候,如果您正在通过make文件创建目标,请仔细检查所有的c文件是否以正确的文件结构命名。

0
如果上述解决方案对你无效,可能是因为你没有正确安装 C++ 编译器包,请按照以下步骤操作: (Win7,32位/64位说明)
  1. 确保正确安装了一个或多个支持C++编译器包:

    (我安装了MinGW(如何安装视频可以在YouTube上找到))

    如果您选择安装MinGW软件包:

    • 从上面的安装页面下载MinGW安装程序
    • 运行MinGW安装程序,并确保选择以下软件包:

      - mingw-developer-toolkit
      - mingw32-base
      - mingw32-gcc-g++
      - msys-base

    • 将MinGW和MSYS bin路径添加到您的PATH环境变量中,如果您没有更改默认安装文件夹,则应添加:

    C:\MinGW\msys\1.0\bin;C:\MinGW\bin;
    • 注销并重新登录以确保环境变量生效
  2. 在eclipse中创建一个新的C++项目:

    • 新建 -> C++项目
    • 选择项目类型:可执行文件 -> Hello World C++项目
      (现在,在右侧的工具链下,您应该会看到MinGW GCC)
    • 从工具链列表中选择MinGW GCC
    • 点击完成
  3. 在您的Hello World项目中,您将看到+ src文件夹和+ Includes(如果是这样,您可能已经准备好了)。

  4. 构建项目
  5. 运行它!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接