Eclipse - “这个项目不是CDT项目”

时间:2013-09-09 07:12:49

标签: c eclipse project

我有现有的C代码和现有的Makefile,我想将其包装到Eclipse C-Project中(使用Eclipse 3.4 Ganymede)。守则的组织方式如下:

主要目录:/Project/Software

来源和页眉文件:../Project/Software/CodeDir1 ../Project/Software/CodeDir2等。

到目前为止,我一直在做这些步骤:

  1. 将Eclipse workapce设置为/ Project /
  2. 创建名为Software的新C-Project - >现在Eclipse将所有Source文件等集成到Project
  3. 转到属性 - > C / C ++构建并设置为“自定义构建选项”
  4. 我第一次这样做,一切正常。我把输出到我的控制台,一切都很酷。但随后“Build Icon”(小锤子)变灰了,我再也无法点击它了。如果我现在转到项目属性 - > C / C ++构建它只是说“这个项目不是CDT项目”,而且我得到一个带有“java.lang.NullPointerException”的错误。

    如何获得有效的项目?

    修改

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

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

4 个答案:

答案 0 :(得分:23)

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

  • Project Explorer标签中选择项目
  • 点击文件 - >新建 - >转换为C / C ++项目

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

答案 1 :(得分:3)

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

这个link告诉你如何创建一个makefile项目:

  

创建项目:

     

选择文件>新>项目

     

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

     

选择要创建的项目类型。在本教程中,展开   C / C ++文件夹并选择C ++ Project。 “C ++项目”向导将打开。   点击这里查看插图。

     

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

     

在“项目名称”字段中,键入HelloWorld。保留使用默认值   选择了位置选项。

     

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

     
      
  1. 共享库 - 单独编译和链接的可执行模块。创建使用共享库的项目时   (libxx.so),您将共享库的项目定义为项目   参考您的应用程序。对于此项目类型,CDT   将目标文件组合在一起并加入它们,以便它们可以重新定位   并且可以被许多进程共享。共享库使用命名   格式为libxx.so.version,其中version是带默认值的数字   1. libxx.so文件通常是最新的符号链接   版。将自动创建此项目类型的makefile   由CDT。
  2.   
  3. 静态库 - 可以链接到另一个应用程序(libxx.a)的目标文件的集合。 CDT结合了目标文件   (即 .o)到直接链接到的存档( .a)中   可执行文件。此项目类型的makefile是自动的   由CDT创建。
  4.   
  5. Makefile Project - 创建没有元数据文件的空项目。此选择对于导入和修改现有选项很有用   基于makefile的项目;不为此创建新的makefile   项目类型。
  6.   

答案 2 :(得分:0)

问题的根源不在Eclipse中,它位于makefile中。

整个项目的目录结构如下:

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中添加两行:在移动命令之前移动命令:attrib +r +s *.projectattrib -r -s *.project。 (.cproject相同)。这可以防止makefile移动文件

答案 3 :(得分:0)

我能够通过安装/更新相应的CDT插件来解决这个问题,例如' Visual C ++支持'。