2010-06-24 9 views
6

Stiamo costruendo un'app per Windows e Mac utilizzando una licenza commerciale di Qt, che stiamo costruendo da un clone di git.C'è un modo per copiare una build di codice sorgente di Qt in un'altra posizione?

Abbiamo una configurazione di build che utilizza Hudson con potenzialmente diversi build agent, e quello che mi piacerebbe fare per Windows almeno è costruire una volta quindi distribuire la Qt di build a ciascun agente (invece di dover costruire Qt su ogni agente). Sembra, tuttavia, che al Qt costruito non piaccia essere spostato o copiato.

C'è un modo per aggirare questo? Un pensiero che avevamo era se ci fosse qualche impostazione che avrebbe costruito Qt in modo che assomigliasse alla loro distribuzione binaria, ma non riesco a vedere un modo per farlo.

+0

Quali errori stai vedendo? – jlarcombe

+0

L'errore iniziale sembra essere: QMAKESPEC non è stato impostato, quindi la configurazione non può essere dedotta. Poi ricevo un certo numero di altri errori, ma sospetto che derivino tutti da questo. –

+0

I percorsi di compilazione sono in realtà incorporati nella libreria QtCore. Se provi a spostare una build, ci saranno molti errori, alcuni dei quali piuttosto sottili. ad esempio, i valori restituiti per QLibraryInfo :: LibraryLocation saranno errati. – rohanpm

risposta

5

Il modo in cui il rilasciato Qt binari lavoro è questo:

Qt è integrato in un percorso di generazione molto lungo (ad esempio su finestre, c:\Qt\______________padding__________for_________packaging________________). Allora è imballato in un programma di installazione Il programma di installazione contiene un plugin personalizzato che analizza. tramite i binari al momento dell'installazione e patch i binari Qt, sostituendo il percorso lungo di build con il percorso di installazione dell'utente.Nota, la dimensione del file binario non può essere modificata, quindi il percorso di installazione dell'utente deve sempre essere più breve del percorso di generazione. ..

Su Mac e Linux c'è anche un simile munging di percorsi.Il rpath usa $ORIGIN per renderlo relativo, oppure è binario con patch come l'abo ve percorso.

Gli script che rendono i pacchetti binari sono abbastanza monolitica e questa logica non è facilmente estratti ...

per il vostro caso l'uso, vi consiglio che semplicemente costruire Qt in un percorso prevedibile tutto il tempo. Creare sempre Qt allo c:\Qt_test e distribuire su c:\Qt_test su ciascun agente. Il rovescio della medaglia è che Hudson potrebbe non essere così bravo a ripulirlo automaticamente, quindi dovresti copiarlo tu stesso.

+0

Questo funziona - grazie per la spiegazione e il suggerimento. –

Problemi correlati