2011-07-25 56 views
5

我有我需要在编译之前将自动生成一些文件的Eclipse项目。我不想将这个自动生成的文件放入我的存储库,所以每次编译projet时,我都会执行预生成以自动生成此文件。如何在预编译中编译自动生成的C文件?

的问题是,这个自动生成的文件* .c和* .h文件,而在我第一次编译项目,将出现以下情况(按照这个顺序):

  • 预建设:自动生成一些* .c和* .h
  • 构建:Eclipse将不会建立这个自动生成的文件

如果我重新编译,这个文件将被编译。也许这是由于eclipse将编译什么文件的发现过程而发生的。在开始编译之前,我们没有这个自动生成的* .c和* .h文件。

在我们编译第二次,我们已经有了这个自动生成的文件,所以这个文件进行编译。

回答

0

如果我正确理解你的问题,好像是建设项目在第一时间将自动生成必要的* .c和* .h源文件,但该项目将无法全力打造,因为这些源文件未立即找到。经过短暂的延迟后,Eclipse会识别出有新文件添加到项目中,然后您可以再次构建,一切都将正常进行。那个听起来是对的吗?

假如是这样的话,我立即想到的就是写一些类型的脚本或makefile文件,使所有这些操作都可以发生在正确的顺序,用一个单一的动作。根据您要有多脏让你的手,这里是一个链接;)

http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.cdt.doc.user/concepts/cdt_c_makefile.htm

4

如果您想在完全自定义生成步骤发生,哪些文件需要后,将被刷新完全控制环境,工作目录等。不要将其指定为简单的预构建步骤。转到项目属性 - >建造者 - >新建...并选择“程序”。

在出现的对话框中,你必须在你的工具的执行更多的控制。例如,您可以在保存XML文件时运行工具,并且可以让eclipse在运行时刷新所有自动生成的文件。

+0

谢谢,这解决了我的问题。只有一个注意:如果这个问题发生在多个项目上,则需要复制该构建器,因为看起来不可能导入相同的实例。建造者的名字必须不同(例如:最后加上(1))。可以通过'运行>外部工具>打开外部工具配置 - >新建'来创建模板,以便更容易地复制构建器,但是只有Workspace处于版本控制下时才能用于其他项目成员通常不是)。 – mMontu

+0

@mMontu您可以共享外部工具的配置,并保持他们的版本控制之下,如果你去到“常用”选项卡中的配置设置,然后选择“共享文件”选项。但是,我认为,最终,无论如何,任何不平凡的构建配置都应该依赖于任何IDE的构建系统。最终,正确的做法是使用一个真正的构建系统,如CMake。 – enobayram

+0

的确,我并不知道“共享文件”选项。我同意避免使用IDE的构建系统,但在处理遗留(和大型)项目时并不总是可行的。 – mMontu