Domanda

La mia struttura fisica di file per un progetto che ho è qualcosa di simile:

  • cartella di origine
  • Motore
    • Folder1
    • Cartella2

ecc.

Ho alcuni file in 'Source', un po 'in 'Engine', un po' in 'Motore / Cartella1', ecc.

Il mio progetto, ho finiti tutti Configurazioni-> Fonte directory e incluso Fonte, Motore, Motore / Cartella2, ecc, tuttavia, ho ancora gli errori che non è possibile trovare i file quando si tenta di includere "foo.h" o qualunque sia da una cartella diversa. C'è un modo per farlo in modo da non avere ../Folder1/ di fronte a tutto ciò?

È stato utile?

Soluzione

  

C'è un modo per farlo in modo da non avere ../Folder1/ di fronte a tutto ciò?

Sì, c'è. La risposta dipende da diversi fattori e sono sicuro che mi mancherai alcuni.

Controlla quanto segue:

  • Nel controllare le impostazioni del compilatore "Ulteriori Include" sotto "C / C ++"
  • Verificare inoltre in "VC ++" il valore per "includere le directory"
  • Controllare l'impostazione "Ignora standard percorsi di inclusione" in "C / C ++ / preprocessore"
  • Controlla la tua precompilato di intestazione impostazioni
  • Controlla la tua "#define" / "#undef" nei file di origine e le impostazioni del compilatore
  • Controllare le finestre delle proprietà del progetto può utilizzare o che ereditano

Se si utilizza "foo.h" (piuttosto che ) il preprocessore cercherà nelle cartelle specifiche del progetto e nello specifico IDE cartelle scorso. Se si utilizza inizia nello standard includono le cartelle prima, ad esempio, quelli che sono necessarie per le librerie di runtime standard.

Quando un file di usi "../foo.h" il suo un percorso relativo alla posizione del file che include il file. Ci possono essere eccezioni difficili.

Ci sono molte altre cose che possono influenzare come il preprocessore trova il suo percorsi di inclusione. Se non siete sicuri che il preprocessore sta facendo con un particolare file è possibile effettuare l'output del preprocessore visibile interruttore su "Preprocessa in un file" nelle impostazioni del preprocessore. Gli spettacoli di file che il codice sorgente di un file dopo il preprocessore è finita e prima che il compilatore inizia il suo lavoro.

Il tutto diventa molto più facile con più esperienza e, in particolare, una chiara strategia per la struttura delle cartelle / progetto e come includere i file. Per esempio assicurarsi di avere "#pragma una volta" come prima riga non di commento in ogni file include.

Spero che questo ti dà alcune idee per i prossimi passi. Buona fortuna!

Altri suggerimenti

Ritengo che questa sia una buona pratica:

  • Quando il percorso del file incluso non richiede l'uso di "..", utilizzare i percorsi relativi
  • Quando si richiede l'uso di "..", utilizzare percorsi assoluti (cioè, relativo alla cartella principale del file di origine.

Per percorsi assoluti al lavoro, aggiungere la cartella di origine principale per l'inclusione directory lista (rispetto alla posizione del file del progetto).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top