2009-06-18 8 views
8

Tenemos un programa que se ejecuta por separado, ejecutado con un comando execvp. Por lo tanto, necesita un método principal, pero creo que plantea un problema eclipsar con una marca administrada. ¿Tenemos que mantener este código segregado en un proyecto separado, o hay alguna manera de incorporarlo en el mismo proyecto de eclipse?Cómo crear dos líneas principales en un eclipse Proyecto C++

Respuesta

1

Si el archivo MAKE que se invoca no compila los 2 métodos principales() en el mismo ejecutable, no causará ningún problema. No sé cómo se manejan los proyectos de eclipse: si es como VS, donde "proyecto" significa un único ejecutable o biblioteca, y "solución" es un grupo de "proyectos", entonces parece que necesitaría más de uno proyecto. Si, OTOH, un "proyecto" puede contener diferentes "subproyectos" donde un "subproyecto" es un archivo ejecutable o una biblioteca, usted debería ser capaz de manejarlo fácilmente.

3

Guárdelo en el mismo proyecto y el preprocesador de uso define cuál se define de forma diferente según el tipo de elemento principal que desee incluir en el proyecto actual. Aquí los principales están en el mismo archivo, pero pueden residir en diferentes archivos.

#if defined(MAIN_ONE) 
int main() 
{ 
    // Do stuff 
} 
#elif defined(MAIN_TWO) 
int main() 
{ 
    // Do some other stuff 
} 
#endif 
1

No conozco ninguna forma fácil de construir dos líneas principales utilizando el sistema de compilación Eclipse. El cambio más pequeño que necesita hacer puede ser pasar a makefiles y usar los objetivos de makefile para compilar.

En su lugar, le aconsejo que pase a utilizar CMake. CMake se puede usar para generar archivos MAKE para ser usados ​​con Eclipse. La ventaja que obtiene al usar CMake es que puede indicar fácilmente cómo crear las bibliotecas y vincular las bibliotecas para formar los archivos ejecutables. CMake puede generar compilaciones para Eclipse, Visual Studio, Code Blocks o makefiles (para que pueda usar el símbolo del sistema).

7

Cree un proyecto para cada ejecutable que tenga una función main() y cree un proyecto adicional para representar el software como un todo (un tipo de proyecto de "contenedor"). Eclipse le permite especificar proyectos como dependencias de otros proyectos y, en este caso, deseará configurar el proyecto de contenedor para enumerar los otros proyectos como "Proyectos referenciados".

Para hacer esto, cree el proyecto de contenedor, luego haga clic derecho en el proyecto en la columna de la izquierda (explorador de proyecto) y haga clic en "Propiedades". Un cuadro de diálogo aparecerá. Seleccione el elemento "Referencias del proyecto" en la lista en el lado izquierdo y verá una lista de todos los proyectos con los que Eclipse está trabajando actualmente. Marque las casillas junto a los proyectos para sus ejecutables individuales, luego haga clic en Aceptar. Ahora, cuando realiza una compilación en el proyecto contenedor, Eclipse también debe realizar automáticamente una compilación en estos proyectos dependientes.

Al utilizar subproyectos de esta manera, personalmente he encontrado útil crear un conjunto de trabajo que incluya el proyecto de contenedor y todos los subproyectos (esto puede facilitar la búsqueda de todo el proyecto de software).

+0

¿Cómo se puede evitar que el proyecto contenedor se queje de que no tiene objetivos "todos" o "limpios"? En segundo lugar, ¿cómo se especifica el orden en que se construirán los subproyectos? (En este momento mi conjunto de proyectos incluye un proyecto que construye una biblioteca en la que todos los otros proyectos cuentan, pero la biblioteca no está construida primero (los caprichos de nombrar) lo que significa que necesito construir el proyecto contenedor dos veces) – Urhixidur

+0

@Urhixidur - Tendría que marcar la biblioteca como una dependencia de los programas que la usan, pero no recuerdo de improviso cómo hacerlo en la interfaz de usuario de Eclipse. Sin embargo, es bastante simple si está escribiendo sus propios archivos make. Para la primera pregunta, simplemente defina los objetivos de marca (incluso si en realidad no hacen nada). – bta

0

Esto está construido en el lenguaje C++. Tendría que modificarlo para obtener su resultado. Hay algo que hacer 2 cosas a la vez si eso es lo que quieres.

Cuestiones relacionadas