2008-12-05 19 views
32

¿Cuál es la mejor solución para construir varios proyectos CDT C++ desde la línea de comandos? Los proyectos tienen referencias, por lo que no es posible crear proyectos únicos.Compilar varios proyectos CDT C++ desde la línea de comandos

+4

Esta es una de las grandes debilidades de Eclipse en general, creo.Las construcciones sin cabeza no son ciudadanos de primera clase en el mundo de Eclipse. – JesperE

+1

¿Ha considerado usar [Make] (http://en.wikipedia.org/wiki/CMake)? – Lawand

+1

Hacer utiliza los archivos .mk generados por CDT en la compilación. Por lo tanto, no es posible construir el proyecto desde cero. – mmmmmmmm

Respuesta

1

Si creó un proyecto Make en CDT, puede usar su shell favorito y ejecutar make en todos los directorios de proyectos.

+2

Usamos Eclipse para que no tengamos que meternos con Makefiles ... – mmmmmmmm

+0

Esta es la respuesta a su pregunta. Necesitas "perder el tiempo con Makefiles". Eclipse no es un sistema de compilación. –

+0

Consulte http://www.codinghorror.com/blog/archives/000988.html para obtener más información. –

0

Hacemos esto en nuestra construcción existente.

Ponga un makefile en todas sus referencias externas y su proyecto toplevel. En su "todo" regla, hacer que se ejecute: make -C ./externalref1 make -C ./externalref2 etc

que realmente definen las dependencias externas en una variable: EXT_DEP = externalref1 externalref2 a continuación, utilizar el comando subst (sustituto) para iniciar todas las subcategorías utilizando la llamada correcta.

55

Esta característica se ha agregado en CDT 6 (Final build con fecha del 15 de junio de 2009). Puede descargar la versión final del candidato desde la página de compilaciones: download.eclipse.org/tools/cdt/builds/6.0.0/.

El uso de un lanzamiento de Eclipse 3.5 + CDT 6, puede importar, construir y proyectos y el espacio de trabajo utilizando las siguientes opciones enviadas a Eclipse en la línea de comandos de limpieza de construcción:

eclipse -nosplash 
     -application org.eclipse.cdt.managedbuilder.core.headlessbuild 
     -import {[uri:/]/path/to/project} 
     -build {project_name | all} 
     -cleanBuild {projec_name | all} 

En Windows, el uso eclipsec.exe en lugar de eclipse.exe para tener salida de compilación escrita en stdout/stderr y para que la llamada bloquee hasta su finalización.

El modificador '-application' indica a Eclipse que ejecute el constructor sin cabeza CDT en lugar de iniciar el banco de trabajo. Los otros interruptores se pueden usar individualmente o juntos. Esto significa que puede verificar un proyecto usando un script de shell propio, '-importe' en un espacio de trabajo, y '-build' utilizando el generador sin cabeza de Managedbuilder.

Use la '-datos' modificador para especificar el espacio de trabajo para utilizar, que puede ser un directorio temporal vacío, consulte la documentación de ejecución para otros parámetros admitidos por el tiempo de ejecución de la plataforma: help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html

Ver bug 186847 comment 24 y en adelante para más detalles sobre la funcionalidad comprometida.

+0

Además, puede especificar una configuración única con: '-build {project_name [/ config_name] | todo} 'Ejemplo:' -build project_name/Release' –

1

Pre CDT 6 puede usar el JDT AptBuilder (incluido con Eclipse clásico, por ejemplo).

Esto le permite construir un espacio de trabajo ya configurado. Entonces usted: revise su fuente, configure un espacio de trabajo que apunte a los proyectos desprotegidos. Sus scripts de compilación automatizados pueden actualizar los registros y ejecutar AptBuilder sin necesidad de iniciar la GUI.

Cuestiones relacionadas