Il mio progetto Xcode si basa su varianti dello stesso prodotto utilizzando due target. La differenza tra i due è solo su quale versione di una libreria inclusa viene utilizzata. Per i file sorgente .c è facile assegnare la versione corretta alla destinazione corretta usando la casella di controllo target. Tuttavia, incluso il file di intestazione include sempre lo stesso. Questo è corretto per un bersaglio, ma sbagliato per l'altro.controllando quale file di intestazione del progetto Xcode includerà
C'è un modo per controllare quale file di intestazione è incluso da ciascun target?
Qui è la mia gerarchia del file di progetto (che viene replicata in Xcode):
MyProject
TheirOldLib
theirLib.h
theirLib.cpp
TheirNewLib
theirLib.h
theirLib.cpp
myCode.cpp
e myCode.cpp fa una cosa come:
#include "theirLib.h"
…
somecode()
{
#if OLDVERSION
theirOldLibCall(…);
#else
theirNewLibCall(…);
#endif
}
E, naturalmente, mi definisco OLDVERSION
per una obiettivo e non per l'altro.
Nota il #include
deve essere come mostrato. Entrambi il seguente errore fallire con un file non trovato:
#include "TheirOldLib/theirLib.h"
#include "TheirNewLib/theirLib.h"
Quindi non v'è un modo per dire che Xcode theirLib.h
da includere per ogni target?
Vincoli:
- i due file di intestazione hanno lo stesso nome. Come ultima risorsa, potrei rinominare uno di loro, ma preferirei evitarlo perché questo porterebbe a un aumento di capelli sulle altre piattaforme.
- dover aggiungere un riferimento alla cartella che racchiude è anche qualcosa che preferisco evitare, perché dovrei farlo due volte con una direttiva di compilazione condizionale.
- Sono libero di modificare il mio progetto come altrimenti ritengo opportuno
Grazie per qualsiasi aiuto.
Funziona perfettamente. Grazie. Il poster dovrebbe averlo contrassegnato come Risposta. – SmallChess
Shouldnt nel passaggio 2. essere "Utente Header Percorsi di ricerca" invece di "intestazione Percorsi di ricerca"? come si usa # include "" e non #include <> – Olof
Credo che lei ha ragione. 'Percorsi di ricerca intestazione' funzionano, ma' Percorsi di ricerca intestazione utente 'dovrebbero essere migliori. –