2011-07-25 25 views
5

Tengo un proyecto de Eclipse que necesito para generar automáticamente algunos archivos antes de compilarlo. No quiero poner estos archivos autogenerados en mi repositorio, así que cada vez que compilo el proyecto realizo una preconstrucción para generar automáticamente estos archivos.¿Cómo puedo compilar archivos C autogenerados en preconstrucción?

El problema es que estos archivos son generados automáticamente * .C y archivos * .h, y en la primera vez que compila el proyecto, sucede lo siguiente (en este orden):

  • pre- construir: auto-generar algo * * .c y .h
  • construcción: Eclipse no va a construir este archivos generados automáticamente

Si puedo compilar de nuevo, serán compilados estos archivos. Tal vez esto esté sucediendo debido al proceso de descubrimiento de qué archivos se compilará eclipse. Antes de iniciar la compilación, no tenemos estos archivos * .c y * .h autogenerados.

En la segunda vez que compilamos, ya tenemos estos archivos generados automáticamente, por lo que estos archivos están compilados.

Respuesta

0

Si entiendo su pregunta correctamente, parece que la creación de su proyecto la primera vez generará automáticamente los archivos de origen * .c y * .h necesarios, pero el proyecto no se compilará por completo porque estos archivos de origen no son encontrado de inmediato. Después de un pequeño retraso, Eclipse reconoce que hay nuevos archivos agregados al proyecto y luego puede construirlos por segunda vez y todo continuará normalmente. ¿Eso suena bien?

Asumiendo que este es el caso, mi pensamiento inmediato es escribir algún tipo de script o makefile para que todas estas acciones puedan tener lugar en el orden correcto, con una sola acción. Dependiendo del grado de suciedad que desea obtener en sus manos, esto es un enlace;)

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

4

Si desea tener un control total sobre el momento exacto en el paso de generación se lleva a cabo, que necesitan ser renovado después de ella, el archivos entorno, el directorio de trabajo, etc. no lo especifique como un simple paso previo a la compilación. Vaya a las propiedades del proyecto -> Constructores -> Nuevo ... y elija "Programa".

En el cuadro de diálogo resultante, tiene mucho más control sobre la ejecución de su herramienta. Por ejemplo, puede hacer que su herramienta se ejecute siempre que se guarde el archivo XML, y puede decirle a eclipse que actualice todos los archivos generados automáticamente cada vez que se ejecute.

+0

Gracias, esto resolvió mi problema. Solo una nota: si este problema ocurre en más de un proyecto, será necesario duplicar este generador, ya que parece que no es posible importar la misma instancia. Los nombres de los constructores deben ser diferentes (por ejemplo, agregar (1) al final). Es posible hacer más fácil duplicar los constructores creando una plantilla a través de 'Ejecutar> Herramientas externas> Abrir configuraciones de herramientas externas -> Nuevo', pero esto solo funcionará para otros miembros del proyecto si el espacio de trabajo está bajo control de versión (y por lo general no lo es). – mMontu

+0

@mMontu Puede compartir las configuraciones de herramientas externas y mantenerlas bajo control de versiones si va a la pestaña "Común" en la configuración de configuración y selecciona la opción "Archivo compartido". Sin embargo, creo que, al final, ninguna configuración de construcción no trivial debería depender de cualquier sistema de compilación de IDE de todos modos. En última instancia, lo correcto es utilizar un sistema de compilación real como CMake. – enobayram

+0

De hecho, no tenía conocimiento de la opción "Archivo compartido". Estoy de acuerdo con evitar el sistema de compilación de IDE, pero no siempre es posible cuando se trata de proyectos heredados (y grandes). – mMontu

Cuestiones relacionadas