2010-06-24 17 views
6

Estamos construyendo una aplicación para Windows y Mac utilizando una licencia comercial de Qt, que estamos creando a partir de un clon git.¿Hay alguna manera de copiar una compilación de código fuente de Qt a otra ubicación?

Tenemos una configuración de compilación usando Hudson con potencialmente varios agentes de compilación, y lo que me gustaría hacer para Windows al menos es compilar una vez y luego implementar la compilación Qt a cada agente (en lugar de tener que compilar Qt en cada agente). Parece, sin embargo, que el Qt construido no le gusta ser movido o copiado.

¿Hay alguna forma de evitar esto? Uno de los pensamientos que tuvimos fue si había alguna configuración que construiría Qt para que se pareciera a su distribución binaria, pero no veo la manera de hacerlo.

+0

¿Qué errores estás viendo? – jlarcombe

+0

Parece que el error inicial es: QMAKESPEC no se ha configurado, por lo que no se puede deducir la configuración. Luego recibo una serie de otros errores, pero sospecho que todos provienen de este. –

+0

Las rutas de compilación están realmente integradas en la biblioteca QtCore. Si intenta mover una construcción, habrá muchos errores, algunos de ellos bastante sutiles. Por ejemplo, los valores devueltos para QLibraryInfo :: LibraryLocation serán incorrectos. – rohanpm

Respuesta

5

La forma en que los liberados Qt binarios de trabajo es la siguiente:

Qt está construido en una ruta de compilación muy largo (por ejemplo, en las ventanas, c:\Qt\______________padding__________for_________packaging________________). Luego se empacó en un instalador El instalador contiene un complemento personalizado que escanea. a través de los binarios en tiempo de instalación y parchea los binarios de Qt, reemplazando la ruta de compilación larga con la ruta de instalación del usuario. Tenga en cuenta que el tamaño del archivo binario no se puede cambiar, por lo que la ruta de instalación del usuario siempre debe ser más corta que la ruta de compilación. ..

En Mac y Linux también hay un munging similar de rpaths. O el rpath usa $ORIGIN para hacerlo relativo, o es un parche binario como el abo ve camino.

Las secuencias de comandos que hacen que los paquetes binarios son bastante monolítica y esta lógica no se hayan extraído fácilmente ...

para su caso de uso, recomendaría que simplemente construir Qt en una trayectoria predecible todo el tiempo. Cree siempre Qt en c:\Qt_test y despliegue en c:\Qt_test en cada agente. La desventaja es que Hudson podría no ser tan bueno en la limpieza automática de este, por lo que tendrías que guiarlo tú mismo.

+0

Eso funciona - gracias por la explicación y la sugerencia. –

Cuestiones relacionadas