Ho uno spazio di lavoro, Application.xcworkspace, che crea due framework e un eseguibile che utilizza tali framework. Ecco come sono strutturati:Percorso di riferimento del framework XCode e directory di output di build
Framework_1 - Creato e restituito al brutto percorso DerivedData.
Framework_2 - Dipende da Framework_1, che è incluso nell'area Framework del progetto e specificato nella fase di compilazione "Collega binari con librerie" e viene inviato al percorso DerivedData.
Applicazione - Dipende da Framework_1 e Framework_2, che sono inclusi nell'area Framework del progetto e specificati nella fase di costruzione "Collega binari con librerie". La directory di output è ancora quel brutto percorso DerivedData.
Il problema che ho è che i percorsi nel file di progetto per i quadri di riferimento sono il brutto percorso DerivedData - sono come ../../Library/Developer/XCode/DerivedData/Application-longuglyuniquestring/ costruire/Prodotti/uscita/Framework_1.framework.
Se copio il codice sorgente in un'altra directory, oppure lo controllo in controllo versione e lo controllo su un'altra macchina, quei percorsi del framework non sono più validi. Vengono rigenerati. I framework di riferimento vengono visualizzati in rosso nel progetto.
Finora, quando voglio costruire l'area di lavoro in un'altra cartella, il modo in cui ho risolto il problema è quello di:
- costruire l'area di lavoro - Framework_1 costruisce.
- Vai al nodo "Prodotti" per quel framework e mostralo nel Finder.
- Copia il nuovo percorso brutto.
- Aprire i file di progetto per Framework_2 e Applicazione e correggere il percorso per Framework_1 e Framework_2.
- Tutti gli elementi rossi devono essere risolti e tutto dovrebbe essere creato.
Questo processo è noioso e sono fortunato che il file di progetto possa essere modificato. È peggio per i colleghi che non capiscono il poco che so dei file di progetto e vogliono solo controllare il codice e farlo costruire.
C'è qualcosa che devo fare per creare la directory di output per i framework? Sono stato diffidente nel cambiarlo dal momento che il brutto percorso è raccomandato. Esiste un'opzione di copia dei file che posso usare per mettere questi framework in qualche posizione prevedibile rispetto al mio spazio di lavoro?
Qualsiasi aiuto sarebbe apprezzato. Sono sicuro che mi manca qualcosa di semplice - non ha senso che il codice estratto dal controllo del codice sorgente o copiato in un'altra directory non sia solo costruito.
È insolito in quanto ho uno spazio di lavoro con '.dylib' e' .app' e sono entrambi inseriti nella stessa cartella ('.../DerivedData /.../ Build/Products/Debug'). Poi ho uno script come parte del build '.app' per copiare il file' .dylib' nella directory '.app/Resources/Frameworks'. – trojanfoe
Nessun problema con le uscite delle app: tutti i framework richiesti sono inseriti nella directory app/Frameworks. Questo è un problema in fase di costruzione. I binari del framework incluso, usati nella fase di compilazione "Link Binary With Libraries" si trovano nella directory DerivedData dell'app. Quella directory cambia quando il progetto viene creato da una directory diversa. Tutti i file/sorgenti di progetto sono in una directory sotto root. Se li copio in un'altra directory, il progetto non verrà creato perché i percorsi della libreria per il collegamento saranno diversi. – GTAE86
Se la vecchia directory e la nuova directory sono peer, il problema verrà mascherato perché il percorso relativo ai binari precedenti sarà ancora valido. Ciò può comportare che le modifiche apportate ai framework di riferimento non vengano "visualizzate" nell'app perché è ancora in collegamento con le vecchie versioni. Il modo più semplice per vedere il problema è copiare il codice sorgente su una macchina che è pulita rispetto allo spazio di lavoro/ai progetti. Anche se tutto è a posto, non verrà creato finché non verranno corretti i percorsi per il collegamento ai framework. – GTAE86