Qual è la differenza tra "Includi directory" e "Includi directory aggiuntive"


94

Nelle proprietà di configurazione del mio progetto, sotto le "directory VC ++" c'è una voce per "Includi directory". Ma sotto l'opzione "C / C ++", c'è un'altra voce chiamata "Directory di inclusione aggiuntive". La stessa cosa accade con le directory delle librerie.

Qual è la differenza tra queste due voci?

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Risposte:


48

Questa è l'imbarazzo che è stato introdotto in VS2010. Le impostazioni delle directory VC ++ si trovavano in Strumenti + Opzioni, Progetti e soluzioni, Directory VC ++. Impostazioni globali che si applicano a ogni progetto che è stato costruito sulla macchina. È ancora lì, ma sottolinea che ora dovresti cambiarlo nelle impostazioni del tuo progetto. Un effetto collaterale della revisione del motore di compilazione in VS2010, che consente la creazione con msbuild. La rimozione delle impostazioni per progetto sarebbe stata logica, ma ciò interromperebbe troppi progetti esistenti.

Pertanto, è probabilmente meglio considerare le impostazioni delle directory di VC ++ come predefinite della macchina. Viene preimpostato automaticamente dall'installatore VS. Armeggia con esso solo se hai bisogno di un ordine di ricerca nella directory insolito, mettendo le posizioni personalizzate per ultime. È molto insolito farlo.

Funziona comunque. E alla fine ne è stato approfittato. Potenziamento dell'impostazione del set di strumenti della piattaforma in VS2012 e versioni successive. Compilatore diverso, linker diverso, directory #include diverse, percorso di ricerca del linker diverso. Modificato con una sola impostazione, bello.


3
Hmmm ... E ' è vero che le opzioni Gloabl vengono salvate in questo - ma questa è la finestra delle proprietà Microsoft.Cpp.Win32.usere solo questo. Se si modifica la voce "Directory VC ++" quando il progetto è attivo o un'altra finestra delle proprietà, la modifica verrà mantenuta nel .vcxprojfile o nel rispettivo .propsfile e non sarà affatto globale o a livello di utente.
Martin Ba

25

Il includere le directory corrisponde alla variabile d'ambiente INCLUDE.

Le impostazioni della directory visualizzate nella finestra sono le directory che Visual Studio cercherà di includere i file a cui si fa riferimento nei file del codice sorgente. Corrisponde alla variabile d'ambiente INCLUDE.

Mentre le directory di inclusione aggiuntive vengono passate tramite un argomento della riga di comando (cioè l' \Iopzione).


19

LA CONFIGURAZIONE INCLUDE I PERCORSI

Directory VC ++: include directory

  • questo valore viene ereditato dalla variabile di ambiente INCLUDE Windows definita all'esterno di Visual Studio
    • le variabili di ambiente possono essere: globali per il computer o avere un ambito a livello di utente
    • Le variabili di ambiente INCLUDEe LIBvengono create quando Microsoft Windows SDK viene installato con Visual Studio .

C / C ++: directory di inclusione aggiuntive

  • è un'impostazione a livello di progetto ... dovrai definire questo valore per ogni progetto nella tua soluzione
  • questo valore può essere mantenuto nel controllo del codice sorgente

NOTE AGGIUNTIVE

Quale dovrei usare?

La decisione di utilizzare Includi directory o Includi directory aggiuntive dipenderà dal processo di sviluppo della tua organizzazione. Secondo me, è più importante:

  • che sei in grado di ricreare in modo coerente e affidabile l'ambiente di sviluppo (pensa: consegnare il codice sorgente a un altro sviluppatore)
  • per gli sviluppatori all'interno di un'organizzazione utilizzare un approccio coerente

Una nota sulle macro

  • Le macro di configurazione del progetto C ++ (da non confondere con la #definedirettiva del pre-processore C ++ ) ereditano il contenuto da fonti diverse. Macro come ...
    • $(Include)ereditano i propri valori dalle variabili di ambiente Windows
    • $(OutDir)ereditano i loro valori dall'IDE di Visual Studio

RIFERIMENTI

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.