2013-02-15 12 views
10

Ok, ecco cosa ho provato.Due obiettivi, due file di intestazione con lo stesso nome di come utilizzare ciascuna intestazione per il target corretto?

Ho i file di intestazione in due directory separate IRL. Hanno lo stesso nome, ma si trovano in due luoghi diversi.

Desidero includere solo il file di intestazione relativo per ciascun target. Diciamo per facilità di spiegazioni che il file di intestazione è chiamato "Config.h".

Così ho:

$ {} product_dir /Header1/Config.h

e

$ {} product_dir /Header2/Config.h

Questi file vengono visualizzati anche nell'LHS di Xcode in due gruppi diversi (Heade r1 e Header2 che puntano alle cartelle IRL).

Quindi ora tutto ciò che devo fare è fare in modo che Xcode scelga quello giusto dalla cartella giusta per ciascun target.

Target1

e

Target2

Ho provato ad aggiungere il percorso del User Header Search Paths per ogni target, ma la sua ancora di scegliere quella sbagliata. Ho anche provato a attivare "Cerca sempre percorsi utente", che non sembra avere alcun effetto.

Quindi la mia domanda è, è perché sono nella directory del progetto? Oppure è perché sono in Xcode nel file manager del LHS, quindi Xcode li sta copiando nella cartella build?

La cosa strana è che sembra essere la scelta i file di intestazione dalla cartella con il cognome in ordine alfabetico ...

Nelle precedenti versioni di Xcode sono sicuro che si possa scegliere quale intestazioni per copiare nella costruzione cartella.

In ogni caso .. qualcuno sa come posso risolvere questo in modo che possa farlo selezionare il file di intestazione corretto per il target?

Molte grazie.

+0

Non sono sicuro, ma per quanto riguarda l'importazione condizionale? –

+0

Questo è il piano di backup. :) Ma aggiungerà un carico più passaggi di così. Sono sicuro che questo dovrebbe essere possibile. –

+0

1. In realtà non riesco a capire perché hai problemi con "Percorsi di ricerca intestazione". Cerca di escludere queste intestazioni dal progetto e non utilizzare percorsi di ricerca ricorsivi "**". 2. Di solito uso diversi "include" con "ifdef else". Quindi puoi aggiungere qualsiasi variabile globale a qualsiasi target e verificare cosa devi includere (es: "ifdef target1 #include" header1.h "else #include" header2.h "endif;). Quindi dipende dalle tue esigenze. – Jlexyc

risposta

8

Il problema che stavo avendo è stato 2 volte:

  1. è necessario rimuovere i file di intestazione dal progetto. Se sono in Xcode, nel file manager, saranno automaticamente inclusi nel progetto.

  2. È necessario utilizzare percorsi relativi alle cartelle in "Percorsi di ricerca intestazione utente". Stavo usando ${PROJECT_DIR}/path/to/header/folder che ha dato il percorso giusto, ma non sembra funzionare correttamente.La modifica della voce in ./path/to/header/folder ha funzionato bene.

+0

Cosa succede se non riesco a rimuovere le intestazioni dal progetto perché sto creando un framework e sono intestazioni pubbliche? –

0

ho 4 obiettivi in ​​1 proyect e più di 40 intestazioni, la migliore soluzione in XCode 8 Penso che la soluzione migliore è cambiare il seguente tag:

Always Search user Paths 

Per sì un tutto era bene per me: enter image description here

Problemi correlati