Automatización de compilaciones multiplataforma C++
cross-platform build-automation (3)
Tengo un proyecto de C ++ multiplataforma que se enfoca y compila con éxito en Linux, OSX y Windows. Estoy usando GNU Make para manejar la construcción en todas las plataformas, gcc para compilar en Linux y OSX y cl.exe para compilar en Cygwin en Windows. Mi flujo de trabajo actual consiste en codificar en OSX y luego construir en cada plataforma individual para probar la portabilidad del código. ¿Este proceso consume algo de tiempo y me preguntaba si es posible construir automáticamente en todas las plataformas en un solo paso?
Buena pregunta. En primer lugar, no hay forma de hacer esas compilaciones en un solo paso en una plataforma . Sin embargo, lo que puede hacer es buscar un sistema de compilación que facilite la creación de plataformas cruzadas y una herramienta para automatizar las cosas para usted. Esto le brinda una solución que lo aleja de la creación manual y le permite concentrarse completamente en el desarrollo del código.
CMake (como ya se mencionó) proporciona una buena solución para la construcción multiplataforma . En resumen, a través de CMake obtiene, por ejemplo, soluciones / proyectos de Visual Studio, makefiles u otros para la plataforma de destino, que luego utiliza para construir en esa plataforma específica. Su trabajo es mantener los archivos de compilación de CMake y CMake se encarga de generar los archivos de compilación específicos para las plataformas en las que construye.
Menciona tener compilaciones integradas en "un solo paso", esto debe abordarse de manera ligeramente diferente a través de la automatización de compilaciones. Es decir, utilizando un sistema de integración continua (CI) como los mencionados Jenkins, Hudson o CruiseControl . En su caso, debe realizar compilaciones en tres plataformas diferentes (Windows, Linux y OSX), lo que significa que necesita tener un CI ejecutándose en cada plataforma. Cuando se configuran, estos sistemas verifican los cambios en el repositorio de código fuente y cuando se encuentran los cambios, se busca la fuente, luego se usa CMake para generar archivos de compilación específicos de la plataforma para la plataforma en la que se ejecuta el CI, luego se compila, prueba y finalmente reportar el resultado de cómo fue la construcción.
Esto suena como un trabajo para CMake .
Si entiendo el OP correctamente, la pregunta no es acerca de reemplazar make pero ¿cómo lanzar el build en cada plataforma?
Yo sugeriría usar http://jenkins-ci.org/ - es java y puede ejecutarse en Windows, Linux, OSX, etc. Se puede configurar para iniciar trabajos de compilación al mismo tiempo para que cada vez que quiera hacer una compilación Cada plataforma podría ser lanzada simultáneamente.
La curva de aprendizaje para Jenkins no es terrible, pero probablemente le llevará entre 3 y 4 horas trabajar de manera correcta, una vez que lo hace, sin embargo, es fácil navegar.
Si quieres ser profesional, puedes hacer que sondee tu repositorio de origen y ejecutará las compilaciones automáticamente después de los intentos.