2012-02-01 24 views
5

Existen varias formas de administrar una compilación de un proyecto. Yo sé de estas posibilidades:¿Cuál es la forma correcta de construir un proyecto C++? Hacer/IDE/Ant ...?

  • Hacer
  • IDE
  • Ant
  • Maven

Podemos decir que algunos de ellos (o incluso alguna otra que no lo sé?) es en general superior a los demás y debe ser definitivamente preferido en un nuevo proyecto?

En este momento uso en mi proyecto una compilación administrada por Eclipse IDE y considero la migración a archivos make. De alguna manera, creo que será más manejable, pero, por otro lado, es en realidad el objetivo de los IDE hacer las cosas más manejables. Entonces, ¿voy a hacer un trabajo dañino tratando de regresar a algo anticuado? Tengo una gran experiencia con Maven de un proyecto de Java, pero ¿es una buena idea forzarlo con C++ (aunque sé que es posible ...)?

+0

¿La plataforma cruzada es una prioridad o estamos hablando de una plataforma específica? –

Respuesta

10

La mayor parte de C++ construir sistemas que aún existen, hacer tales por una razón. Lo que quiere decir que son mejores que las alternativas de alguna manera. (Excepto los sistemas de compilación que lo tienen escrito XML, lo siento ANT)

Pero en general, vemos algunos patrones de uso emergen.

En general, solo verá proyectos IDE utilizados para MSVC y XCode. Esto se debe a la mejor integración, con el IDE, sí. Pero más importante, la Plataforma. VC++ está especialmente bien respaldado por los proyectos IDE, y generalmente tiene muy poco soporte, excepto por las cosas que terminan generando los proyectos. Nunca he visto un proyecto de C++ que se construya con Eclipse, pero eso puede estar relacionado con no ver nunca a los programadores de C++ que codifican en Eclipse.

En las plataformas Unix, generalmente se ve una variante de Makefiles que se utiliza. Parece que esto está relacionado con querer un buen demonitor menos común para construir proyectos, ya que la mayoría del código se distribuye en forma de fuente.

Los proyectos como CMake (generadores de proyectos) se utilizan a menudo cuando la independencia de la plataforma es una prioridad, gana un poco de sobrecarga debido a la generación-> pasos de construcción, pero gana la posibilidad de construir el proyecto en múltiples plataformas desde un único buildbase.

Realmente solo he visto a ANT acostumbrada a realizar compilaciones continuas, y aun así, generalmente se llama a un paso de compilación separado, no estoy seguro de por qué es así.

Luego también he visto un montón de uso para cosas como Jam (make replacements) en proyectos patentados que se dirigen a * nix/Mac u otras plataformas menos comunes. Particularmente en el desarrollo de juegos, creo que esto es generalmente de equipos que prefieren a Make en teoría (el concepto de tratar tu fuente de construcción como tratas tu código, no WYSIWYG y similares) pero entiendes que Make está roto. Sin embargo, tenga el lujo de no tener que hacer distribuciones de fuentes.

Esto es solo un montón de patrones que he observado, y tratando de racionalizarlo, muy poco de esto se basa en verdades objetivas.

+0

compilar C++ con Eclipse no es tan difícil de instalar – user1387622

+0

Eso parece probable. No quise dar a entender que Eclipse era difícil de usar en ese sentido. Solo que no vemos muchos proyectos de C++ distribuidos con proyectos de construcción de Eclipse de la misma manera que hacemos para Visual Studio y XCode. – Arelius

6

Al buscar la independencia de la plataforma, he logrado buenos resultados usando Cmake. Su configuración se basa en archivos de texto y produce scripts de compilación "reales" como Makefiles o los proyectos apropiados para IDE. Si no tiene ningún problema con la introducción de algún tipo de paso previo a la compilación, lo intentaré.

En los casos en que puedo seguir dependiendo de la plataforma, simplemente sigo con lo que prefiera. Típicamente proyectos/soluciones de Visual Studio en Windows y Makefiles en Linux.

1

Supongo que está utilizando el Eclipse CDT. El proceso de compilación ya está basado en el archivo Makefile. Sin embargo, creo que el CDT genera el archivo Makefile en tiempo de compilación. Quizás alguien más podría verificar eso por mí. De todos modos, en el CDT puede crear un proyecto "Makefile". Ese tipo de proyecto le permite usar una fuente preexistente y su archivo Makefile en lugar de comenzar desde cero.

Otro aspecto a tener en cuenta es si tiene un requisito para admitir construcciones sin cabeza (por ejemplo, como parte de un CI u otro proceso de construcción automatizado)? Si es así, entonces definitivamente querrá elegir una tecnología de compilación compatible (como Make).

Para información sobre cómo utiliza CDT Makefile: Eclipse documentation

Cuestiones relacionadas