tipos Manejo de dependencias de C++(plataforma cruzada)



tipos de variables en c++ y sus rangos (1)

Yo recomendaría no construir el tuyo.

Usamos ant / ivy / Hudson para automatizar nuestras compilaciones multiplataforma (Windows y Linux). También usamos Nexus (Maven) como nuestro repositorio de artefactos que contiene compilaciones específicas de plataforma de nuestras bibliotecas de terceros, así como nuestra propia aplicación. Hudson se integra perfectamente con Perforce (nuestro repositorio de software).

También estamos en el proceso de crear artefactos separados de 32 y 64 bits de todo y ant / ivy lo hará significativamente más fácil.

Ha funcionado muy bien para nosotros.

Tengo la impresión de que esta pregunta fue hecha cientos de veces, pero nunca respondí completamente.

Estoy trabajando en un proyecto pequeño, que en algún momento debería lanzarse para las tres grandes plataformas de PC (Windows, Mac y GNU / Linux), por lo que enrolarse en la tecnología para principios es una mala idea. Por suerte, pero también desafortunadamente, por ahora, durante el desarrollo temprano, solo apostamos por Windows de 32 bits.

A nivel de código, el desarrollo multiplataforma es relativamente fácil, si selecciona las bibliotecas correctas. También construir software en múltiples plataformas es relativamente directo, estoy buscando usar GYP o CMake.

El problema son las dependencias. Para compilar el proyecto que necesita: SDL, SDL_image, SDL_ttf, iconv, libxml2, libxmlmm, sigc ++, wxWidgets, glew, bullet, openALsoft y quizás más agregado más adelante.

Hasta ahora he encontrado tres opciones:

  1. verificar las fuentes y compilarlas como parte del proyecto
  2. comprobar en binarios
  3. gestionar dependencias fuera del árbol fuente

El primero parece excesivo, ya que básicamente necesitas mantener tu fork de la biblioteca y tu sistema de compilación personalizado.

La segunda opción suena como lo que se debe hacer cuando su objetivo es solo una o quizás dos plataformas. Pero si cuenta todos los objetivos diferentes, incluidas las variantes de 32/64 bits, esto también comienza a convertirse en algo apenas manejable.

La tercera opción depende del entorno. Si dejas que tus desarrolladores manejen las dependencias manualmente, nunca dormirás cerca. Solo obtener todas y cada una de las dependencias construidas y listas para ser usadas es casi imposible. Sin mencionar que no puedes asegurarte de que cada desarrollador use la versión correcta.

Si miras otros idiomas, resuelven el problema de manera diferente. Con sistemas como npm, marvin o phing, solo mantiene un archivo de configuración en el proyecto y las herramientas luego busca las dependencias necesarias.

Estaba pensando en construir las dependencias centralmente, empaquetarlas en paquetes zip / deb / rpm / whatever y ponerlas en un repositorio. Luego, cada desarrollador copiará las dependencias de su plataforma en el repositorio (pero no las controlará) antes de compilar. Esto se haría preferiblemente de forma automática como un paso previo a la construcción.

Especialmente no quiero un sistema de compilación adicional. He mirado alrededor y lo único que remotamente hace lo que quiero puede ser Ivy. Pero o me estoy perdiendo algo o Ivy está totalmente sobre la ingeniería del problema. ¿Existe algo simple para resolver este problema?

Estoy a centímetros de construir el mío.





build-automation