15

我有现有的 C 代码和现有的 Makefile,我想将它们包装到 Eclipse C 项目中(使用 Eclipse 3.4 Ganymede)。代码的组织方式如下:

主目录:/Project/Software

源文件和头文件:../Project/Software/CodeDir1 ../Project/Software/CodeDir2等等。

到目前为止,我一直在执行以下步骤:

  1. 将 Eclipse 工作区设置为 /Project/
  2. 使用名称创建新的 C-Project Software--> 现在 Eclipse 将所有源文件等集成到项目中
  3. 转到属性-> C/C++ 构建并设置为“自定义构建选项”

我第一次这样做,一切正常。我将输出输入我的控制台,一切都很酷。但是后来“构建图标”(小锤子)变灰了,我不能再点击它了。如果我现在转到项目属性 - > C/C++ 构建它只是说“这个项目不是 CDT 项目”,而且我得到一个带有“java.lang.NullPointerException”的错误。

我怎样才能得到一个工作项目?

编辑:

为了避免一个简单的错误,我尝试了新版本的 Eclipse (Kepler)。我得到相同的错误(“无 CDT 项目”),但没有空指针异常。

但我可以稍微缩小问题范围:我一次启动 make 过程时它总是有效的。如果构建过程失败,我仍然可以转到我的构建属性。一旦我获得一个完整且无错误的构建运行,就会出现此问题。关于这一点,只有当我的 make call 是从 Eclipse 完成时才会发生。如果我从命令行调用它,我仍然可以从 eclipse 中运行一个。

4

4 回答 4

30

如果您正在导入现有的 CDT 项目并看到“此项目不是 CDT 项目”,则可能是该项目是在旧版本的 Eclipse 上创建的,您需要:

  • Project Explorer在选项卡中选择项目,
  • 单击文件->新建->转换为 C/C++ 项目

这将添加一个新.cproject文件,然后您就可以开始了。

于 2015-07-15T11:36:15.570 回答
3

创建新项目时,您需要将其创建为makefile项目 - 然后它将使用 make 来构建项目,但设置构建属性需要通过您的 makefile 和 make 调用。

链接告诉您如何创建 makefile 项目:

创建项目:

选择文件 > 新建 > 项目。

创建新项目时,需要指定项目类型。此项目类型将确定 CDT 使用/显示的工具链、数据和选项卡。

选择要创建的项目类型。对于本教程,展开 C/C++ 文件夹并选择 C++ 项目。C++ 项目向导打开。单击此处查看插图。

默认情况下,CDT 根据您为本教程选择的 C++ 项目向导的语言支持过滤当前显示在这些列表中的工具链和项目类型。

在项目名称字段中,键入 HelloWorld。选择使用默认位置选项。

接下来,您要选择要创建的项目类型。在新建 CDT 项目向导中,您可以从以下项目类型中进行选择: 可执行 - 提供可执行应用程序。此项目类型文件夹包含三个模板。Hello World C++ 示例提供了一个带有 main() 的简单 C++ Hello World 应用程序。Hello World ANSI C 示例提供了一个带有 main() 的简单 C Hello World 应用程序。Empty Project 提供了一个不包含文件的单一源项目文件夹。选择此模板后,结果是一个项目,其中仅包含项目类型所需的元数据文件。您应该为项目的目标提供源文件。可执行项目类型的生成文件由 CDT 自动创建。

  1. 共享库 - 单独编译和链接的可执行模块。当您创建使用共享库 (libxx.so) 的项目时,您将共享库的项目定义为应用程序的项目引用。对于这种项目类型,CDT 将目标文件组合在一起并将它们连接起来,这样它们就可以重新定位并且可以被许多进程共享。共享库使用格式 libxx.so.version 命名,其中 version 是一个默认值为 1 的数字。libxx.so 文件通常是指向最新版本的符号链接。此项目类型的 makefile 由 CDT 自动创建。
  2. 静态库 - 您可以链接到另一个应用程序 (libxx.a) 的对象文件的集合。CDT 将目标文件(即.o)组合成一个存档( .a),该存档直接链接到可执行文件中。此项目类型的 makefile 由 CDT 自动创建。
  3. Makefile Project - 创建一个没有元数据文件的空项目。此选择对于导入和修改现有的基于 makefile 的项目很有用;没有为此项目类型创建新的 makefile。
于 2013-09-09T07:23:16.250 回答
0

问题的根源不在 Eclipse 中,而是在 makefile 中。

整个Project的目录结构如下:

Project_Dir\Documentation\
Project_Dir\Output\
Project_Dir\Software\
Project_Dir\Tools\

源文件都位于\Software\目录中。所以我选择Project_Dir\Software\作为项目文件夹,这意味着.project.cproject文件位于那里。

makefile 本身也会临时将输出文件写入\Software\文件夹中。最后它将所有文件从Software目录复制到Output (实际上是一个move *.* Project_Dir\Output\命令)

该命令还移动了 Eclipse 项目文件,因此 Eclipse 很难找到它们并打开项目属性。

两种解决方案:

  1. 将eclipse中的项目目录更改为,\Project_Dir\因为无论如何它都是与项目相关的东西
  2. 在 makefile 中添加两行:在 move 命令之前:attrib +r +s *.projectattrib -r -s *.project在 move 命令之后。(对于 相同.cproject)。这可以防止 makefile 移动文件
于 2013-09-09T11:49:16.417 回答
0

我能够通过安装/更新相应的 CDT 插件(如“Visual C++ 支持”)来克服这个问题。

于 2018-02-15T15:11:58.903 回答