2009-03-26 11 views
8

Estoy comenzando un proyecto de plataforma abierta de código abierto en C++. Mi entorno de desarrollo es Linux. Puede haber otros desarrolladores que se desarrollen desde diferentes plataformas también. Así que necesito ayuda para comenzar con la configuración del entorno de configuración y desarrollo, para que todos los desarrolladores de múltiples plataformas puedan desarrollarse fácilmente.Mejores prácticas para una aplicación de código abierto portátil de C++

siguientes son mis preguntas

  1. Compilador: Voy a utilizar g ++ y oído que es multiplataforma. ¿Es una buena elección?
  2. Crear archivos: He visto Code :: Blocks editor y genera archivos make on fly y no tiene que escribir uno manualmente. ¿Es esta la mejor práctica o necesito crear archivos make?
  3. ¿Cuáles son las otras configuraciones que deben tenerse en cuenta al desarrollar aplicaciones multiplataforma?

¿Alguna idea?

Editar

Gracias por las respuestas. Una pregunta más.

¿Creas makefiles a mano? ¿O hay alguna herramienta que pueda generarlo?

+0

¿Cómo plataforma cruzada? (como en, qué plataformas). GUI, o no GUI? –

+0

Una parte será una biblioteca compartida. Y, por supuesto, GUI estará allí. –

Respuesta

7

Lo más importante para su proyecto para ponerse al día es la portabilidad. Debería ser fácil construir & ejecutar para todos.

GCC (g ++) es de hecho el compilador de elección. Procede del mundo de las fuentes abiertas y, por lo tanto, es el que más lo adopta.

Sin embargo, un simple Makefile no lo cortará. Generarlo usando CodeBlocks o cualquier otro IDE tiene un problema: debido a su plataforma, otros desarrolladores probablemente tendrán que generar el suyo propio, pero no necesariamente tendrán CodeBlocks a la mano, o simplemente no quieren usarlo.

Existen varios sistemas de compilación diferentes multiplataforma, que son independientes de IDE. Algunos crean Makefiles, otros no usan make, sino que compilan por sí mismos.

  • El sistema de construcción más adoptado es Autotools. Sin embargo, es difícil de aprender, abarrotado y con un dolor en el culo.
  • De entre muchas otras opciones, Recomiendo Waf. Ya está probado en varios proyectos de código abierto más grandes, XMMS2 es un buen ejemplo (aunque no es un proyecto muy popular, tiene una compilación grande con muchos complementos y compilaciones en muchas plataformas, incluyendo OS X y Windows). Si bien el waf no se adopta de forma muy general, está destinado a ser enviado con la fuente y fácil de configurar. Mi recomendación para ti

Editar: para empezar con su proyecto Open Source, también recomendar this book por Karl Fogel (disponibles para su lectura en línea). ¡Que te diviertas!

+0

Gracias por la respuesta. –

1

Compilador: Planeo usar g ++ y escuché que es multiplataforma. ¿Es una buena elección?

Sí, pero ¿qué versión? ¿Tiene una lista de problemas conocidos para la versión que va a utilizar?

Crear archivos: He visto el editor Code :: Blocks y genera archivos make en marcha y no es necesario que escriba uno manualmente. ¿Es esta la mejor práctica o necesito crear archivos make?

Una opción clásica. Probablemente necesite modificarlos cuando el proyecto crezca.

¿Cuáles son las otras configuraciones que deben tenerse en cuenta al desarrollar aplicaciones multiplataforma?

Un puerto de g ++/makefile está disponible para la plataforma más grande. Entonces, una vez que se haya asegurado de no estar usando ninguna API o construcción específica de la plataforma, debería estar listo.

¿Qué tal lo siguiente?

  • 3rd party libraries? Asegúrese de no caer en una plataforma específica.
  • cuestiones de licencias (su código y otros)
  • SCM
+0

Tengo la última versión de G ++. Instalado usando el administrador de paquetes en ubuntu. –

+0

Realmente no necesito saberlo, pero deberías :) Solo asegúrate de anotar las versiones de las herramientas que estás usando. Puede salvar una gran cantidad de dolor en los próximos días. – dirkgently

2

Dependiendo de las plataformas específicas, Qt puede contener las respuestas. Especialmente con la nueva licencia.

+0

Qt y qmake. También lo recomiendo sobre wxWidgets, que es propagado por CodeBlocks. – ypnos

2
  • Comience a construir en múltiples plataformas ahora: expone los problemas desde el principio.
  • Si solo te preocupa Linux y Mac OS X, entonces g ++ debería estar bien. Hay varios IDEs y sistemas de compilación disponibles. Es posible que desee considerar el uso de autotools para ayudar con el soporte de configuración.
  • Si desea apuntar a Windows, se vuelve un poco más complicado. Puede usar cygwin y/o mingw, pero a veces puede ser complicado. Varios proyectos utilizan sistemas de compilación y configuración multiplataforma como CMake para ocuparse de muchos problemas para ellos.
3

El compilador GNU C++ es una relativamente buena opción para el trabajo multiplataforma, excepto que sólo en Windows una versión relativamente antigua (3.4) es compatible de forma nativa. Se está trabajando para portar una serie 4.x a Windows, pero hasta ahora no está lista para el horario de máxima audiencia.

En lugar de centrarme en qué compilador usar, prefiero centrarme en el idioma que utilizará. Escribir el estándar ANSI C++ contribuirá en gran medida a hacer que su código se multiplique. En la medida de lo posible, oculte el comportamiento específico de la plataforma detrás de un buen conjunto de herramientas, como Qt.

Para entornos de compilación multiplataforma, esto puede depender de qué conjunto de herramientas utilice. Qt tiene QMake, que es relativamente bueno. CMake es otra opción atractiva. Evitaría Autotools, ya que tiene una portabilidad muy pobre fuera de UNIX. Usar Autotools en Win32 es muy a menudo el tormento de los condenados.

Finalmente, comience a trabajar en múltiples plataformas ahora. VMware es invaluable para algo como esto. Obtenga su código para compilar en Linux, en FreeBSD y en Windows. Si puede alcanzar esos tres objetivos, mudarse a otras plataformas será enormemente más fácil en el futuro.

Cuestiones relacionadas