Specifica della configurazione di un sottoprogetto in XCode
-
06-07-2019 - |
Domanda
Ho un progetto XCode ( A
) che fa riferimento a un altro progetto ( B
). Per impostazione predefinita (per quanto ho capito) XCode costruirà implicitamente la configurazione per la dipendenza B
che corrisponde alla configurazione del target di A
(ad es. & Quot; Debug " ;). Ma cosa succede se voglio, per esempio, A
costruire come " Debug " e il B
da compilare come " Rilascio " ;? Come farei per specificarlo in XCode?
Soluzione
Non conosco alcun approccio semplice, ma puoi forzarlo bruscamente chiamando xcodebuild direttamente per la dipendenza con un " Run Script " fase di costruzione.
So che era solo un esempio, ma se il tuo vero obiettivo è che il sottoprogetto sia una build di Release (senza simboli), potresti avere un'esperienza migliore semplicemente costruendo il sottoprogetto in una libreria o framework e controllando il file binario risultante nel sistema di controllo della versione. Ogni volta che ho un pezzo del sistema che cambia di rado e per cui non voglio simboli di debug, vado avanti e lo costruisco come una libreria statica e lo controllo. Spesso vado avanti e sposto il codice anche altrove (con un file README con .a che indica dove si trova il codice e come è stato creato). Ciò consente di risparmiare tempo sia su build che su checkout ed è prezioso per i grandi progetti nella mia esperienza.
Altri suggerimenti
Questo potrebbe essere d'aiuto: se la configurazione del progetto A
non viene trovata, Xcode creerà la configurazione Release
come fallback (o forse la prima configurazione dell'elenco) .
Quindi puoi " forzare " il link usando questo suggerimento: Xcode personalizzato crea configurazione cause " libreria / file non trovato " per le librerie statiche
Sì, questo non è naturalmente supportato da Xcode; quando costruisci un target, crea una configurazione di se stesso e di tutti i target dipendenti.
La soluzione alternativa, come menzionato da Rob, è quella di avere una destinazione dipendente che è un tipo di destinazione aggregata che comprende una singola fase di compilazione Run Script, che invoca semplicemente xcodebuild -configuration Release (o qualsiasi altra cosa).