我有现有的C代码和现有的Makefile,我想将其包装到Eclipse C-Project中(使用Eclipse 3.4 Ganymede)。守则的组织方式如下:
主要目录:/Project/Software
来源和页眉文件:../Project/Software/CodeDir1 ../Project/Software/CodeDir2
等。
到目前为止,我一直在做这些步骤:
Software
的新C-Project - >现在Eclipse将所有Source文件等集成到Project 我第一次这样做,一切正常。我把输出到我的控制台,一切都很酷。但随后“Build Icon”(小锤子)变灰了,我再也无法点击它了。如果我现在转到项目属性 - > C / C ++构建它只是说“这个项目不是CDT项目”,而且我得到一个带有“java.lang.NullPointerException”的错误。
如何获得有效的项目?
修改
为了避免一个简单的错误,我尝试使用新版本的Eclipse(Kepler)。我得到相同的错误(“没有CDT项目”),但没有Null指针异常。
但是我可以稍微缩小一下这个问题:第一次时间我开始make过程总是有效。如果构建过程失败,我仍然可以转到我的构建属性。只要我得到一个完整且无错误构建运行,就会出现此问题。关于这一点,它只发生在我的make调用是从Eclipse完成的。如果我从命令行调用它,我仍然可以从eclipse中运行一次。
答案 0 :(得分:23)
如果要导入现有CDT项目并看到“此项目不是CDT项目”,则可能是项目是在较早版本的Eclipse上创建的,您需要:
Project Explorer
标签中选择项目这将添加一个新的.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。
- 共享库 - 单独编译和链接的可执行模块。创建使用共享库的项目时 (libxx.so),您将共享库的项目定义为项目 参考您的应用程序。对于此项目类型,CDT 将目标文件组合在一起并加入它们,以便它们可以重新定位 并且可以被许多进程共享。共享库使用命名 格式为libxx.so.version,其中version是带默认值的数字 1. libxx.so文件通常是最新的符号链接 版。将自动创建此项目类型的makefile 由CDT。
- 静态库 - 可以链接到另一个应用程序(libxx.a)的目标文件的集合。 CDT结合了目标文件 (即 .o)到直接链接到的存档( .a)中 可执行文件。此项目类型的makefile是自动的 由CDT创建。
- Makefile Project - 创建没有元数据文件的空项目。此选择对于导入和修改现有选项很有用 基于makefile的项目;不为此创建新的makefile 项目类型。
醇>
答案 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很难找到它们并打开项目属性。
两个解决方案:
\Project_Dir\
,因为它无论如何都是项目相关的东西attrib +r +s *.project
和attrib -r -s *.project
。 (.cproject
相同)。这可以防止makefile移动文件答案 3 :(得分:0)
我能够通过安装/更新相应的CDT插件来解决这个问题,例如' Visual C ++支持'。