Impostare il compilatore e le proprietà di compilazione

Nell'IDE le proprietà espongono le informazioni necessarie per compilare un progetto. Queste informazioni includono nome dell'applicazione, estensione (ad esempio DLL, LIB, EXE), opzioni del compilatore, opzioni del linker, impostazioni del debugger, istruzioni di compilazione personalizzate e molti altri elementi. In genere, si usano le pagine delle proprietà per visualizzare e modificare queste proprietà. Per accedere alle pagine delle proprietà, scegliere Proprietà> nome progetto dal menu principale oppure fare clic con il pulsante destro del mouse sul nodo del progetto in Esplora soluzioni e scegliere Proprietà.

Proprietà predefinite

Quando si crea un progetto, il sistema assegna i valori per varie proprietà. Le impostazioni predefinite variano leggermente a seconda del tipo di progetto e delle opzioni selezionate nella procedura guidata app. Ad esempio, un progetto ATL ha proprietà correlate ai file MIDL, ma queste proprietà sono assenti in un'applicazione console di base. Le proprietà predefinite vengono visualizzate nel riquadro Generale nelle Pagine delle proprietà:

Screenshot della finestra di dialogo delle proprietà del progetto di Visual Studio.

La pagina Generale è aperta. La sezione Impostazioni predefinite progetto è evidenziata, che include Il tipo di configurazione impostato su Applicazione (.exe), l'uso di MFC impostato su Usa librerie di Windows standard, il set di caratteri è Unicode, il supporto di Common Language Runtime è impostato su Nessun supporto Common Language Runtime, l'ottimizzazione dell'intero programma è impostata su Nessuna ottimizzazione programma intera e il supporto app di Windows Store è impostato su No.

Applicazione di proprietà alle configurazioni di compilazione e alle piattaforme di destinazione

Alcune proprietà, ad esempio il nome dell'applicazione, si applicano a tutte le varianti di compilazione e alle piattaforme di destinazione, sia che si tratti di una build di debug o versione. La maggior parte delle proprietà sono tuttavia dipendenti dalla configurazione. Per generare il codice corretto, il compilatore deve conoscere sia la piattaforma specifica su cui viene eseguito il programma che le opzioni specifiche del compilatore usare. Pertanto, quando si imposta una proprietà, è importante prestare attenzione alla configurazione e alla piattaforma a cui applicare il nuovo valore. Deve essere applicata solo alle build Win32 di debug o deve essere applicata anche a Debug ARM64 e Debug x64? Ad esempio, la proprietà Ottimizzazione viene impostata automaticamente su Ottimizza velocità (/O2) in una configurazione per la versione, ma è disabilitata nella configurazione per il debug.

È sempre possibile visualizzare e modificare la configurazione e la piattaforma a cui applicare un valore di proprietà. La figura seguente mostra le pagine delle proprietà con i controlli informazioni sulla configurazione e sulla piattaforma nella parte superiore. Quando la proprietà Optimization è impostata qui, si applica solo alle build win32 di debug, la configurazione attualmente attiva, come illustrato dalle frecce rosse.

Screenshot della finestra di dialogo Pagine delle proprietà di Visual Studio.

La pagina è aperta a C/C++, Ottimizzazione. L'impostazione Ottimizzazione è impostata su Disabilitato (/Od), che viene richiamato. Una freccia chiama la relazione tra l'impostazione Di configurazione nella pagina delle proprietà del progetto, che è impostata su Active(Debug) e l'impostazione nell'elenco a discesa Configurazione soluzione sulla barra degli strumenti, che è impostata su Debug. Un'altra freccia chiama la relazione tra l'impostazione Piattaforma nella pagina delle proprietà del progetto, che è impostata su Active(Win32) e l'impostazione nell'elenco a discesa Piattaforma soluzioni sulla barra degli strumenti, che è impostata su x86.

Nella figura seguente viene illustrata la pagina delle proprietà dello stesso progetto, ma la configurazione è stata modificata su Versione. Si noti il valore diverso della proprietà Ottimizzazione. Si noti anche che la configurazione attiva è ancora Debug. È possibile impostare proprietà per qualsiasi configurazione, non necessariamente per quella attiva.

Screenshot della finestra di dialogo Pagine delle proprietà del progetto di Visual Studio. L'elenco a discesa Configurazione viene chiamato ed è impostato su Release. L'impostazione Ottimizzazione ottimizzazione > C/C++ > è impostata su Ottimizza velocità (/O2).

Piattaforme di destinazione

La piattaforma di destinazione fa riferimento al tipo di dispositivo e al sistema operativo in cui verrà eseguito l'eseguibile. È possibile compilare un progetto per più piattaforme. Le piattaforme di destinazione disponibili per i progetti C++ dipendono dal tipo di progetto. Includono ma non sono limitati a Win32, x64, ARM, ARM64, Android e iOS. La piattaforma di destinazione x86 che si può incontrare in Configuration Manager è identica a Win32 nei progetti C++ nativi. Win32 significa Windows a 32 bit e x64 significa Windows a 64 bit. Per altre informazioni su queste due piattaforme, vedere Running 32-bit applications (Esecuzione di applicazioni a 32 bit).

Il valore della piattaforma di destinazione della CPU visualizzato in Configuration Manager non ha alcun effetto sui progetti C++ nativi. È rilevante solo per C++/CLI e altri tipi di progetto .NET. Per altre informazioni, vedere /CLRIMAGETYPE (Specificare il tipo di immagine CLR).

Per altre informazioni sull'impostazione delle proprietà per una compilazione di debug, vedere:

Opzioni del compilatore e del linker C++

Le opzioni del compilatore e del linker C++ si trovano nei nodi C/C++ e Linker nel riquadro sinistro in Proprietà di configurazione. Queste opzioni si traducono direttamente in opzioni della riga di comando passate al compilatore. Per leggere la documentazione su un'opzione specifica, selezionare l'opzione nel riquadro centrale e premere F1. In alternativa, è possibile esplorare la documentazione per tutte le opzioni disponibili in Opzioni del compilatore MSVC e opzioni del linker MSVC.

Nella finestra di dialogo Pagine delle proprietà vengono visualizzate solo le pagine delle proprietà rilevanti per il progetto corrente. Ad esempio, se il progetto non ha un .idl file, la pagina delle proprietà MIDL non viene visualizzata. Per altre informazioni sulle impostazioni in ogni pagina delle proprietà, vedere Pagine delle proprietà (C++).

Valori di directory e percorso

MSBuild supporta l'uso di costanti in fase di compilazione per determinati valori stringa, ad esempio directory e percorsi, denominati macro. Una macro può fare riferimento a un valore definito da Visual Studio o dal sistema MSBuild o da un valore definito dall'utente. Le macro hanno un aspetto simile $(macro-name) a o %(item-macro-name). Vengono esposte nelle pagine delle proprietà, in cui è possibile farvi riferimento e modificarle usando l'editor delle proprietà. Usare macro anziché valori hardcoded, ad esempio percorsi di directory. Le macro semplificano la condivisione delle impostazioni delle proprietà tra computer e versioni di Visual Studio. Inoltre, è possibile assicurarsi che le impostazioni del progetto partecipino correttamente all'ereditarietà delle proprietà.

La figura seguente mostra le pagine delle proprietà per un progetto Visual Studio C++. Nel riquadro sinistro è selezionata la regolaDirectory di VC++ e nel riquadro destro vengono visualizzate le proprietà associate alla regola in questione. I valori delle proprietà sono spesso macro, ad esempio $(VC_SourcePath):

Screenshot della finestra di dialogo Pagine delle proprietà di Visual Studio per le regole per varie directory.

La pagina VC plus Directories è aperta, con proprietà per le regole directory DI VC++. Una regola di esempio è Directory di origine, impostata su $(VC_SourcePath). Esistono regole per le directory di inclusione, le directory di libreria, le directory eseguibili e così via.

È possibile utilizzare Editor proprietà per visualizzare i valori di tutte le macro disponibili.

Macro predefinite

  • Macro globali:
    Le macro globali si applicano a tutti gli elementi di una configurazione del progetto. Una macro globale ha la sintassi $(name). Un esempio di macro globale è $(VCInstallDir), che archivia la directory radice dell'installazione di Visual Studio. Una macro globale corrisponde a PropertyGroup in MSBuild.

  • Macro di elementi
    Le macro degli elementi hanno la sintassi %(name). Per un file una macro di elemento si applica solo a quel file. Ad esempio è possibile usare %(AdditionalIncludeDirectories) per specificare le directory di inclusione che si applicano solo a un determinato file. Questo tipo di macro di elemento corrisponde ai metadati ItemGroup in MSBuild. Se utilizzata nel contesto di una configurazione di progetto, una macro di elementi si applica a tutti i file di un determinato tipo. Ad esempio, nella proprietà di configurazione Definizioni preprocessore di C/C++ può essere accettata una macro di elemento %(PreprocessorDefinitions) che si applica a tutti i file con estensione cpp nel progetto. Questo tipo di macro di elemento corrisponde ai metadati ItemDefinitionGroup in MSBuild. Per altre informazioni, vedere Definizioni degli elementi.

Macro definite dall'utente

È possibile creare macro definite dall'utente da usare come variabili nelle build di progetto. Ad esempio, si potrebbe creare una macro definita dall'utente per fornire un valore a un'istruzione di compilazione personalizzata o a uno strumento di compilazione personalizzato. Una macro definita dall'utente è una coppia nome/valore. In un file di progetto usare la $(name) notazione per accedere al valore.

Una macro definita dall'utente viene archiviata in una finestra delle proprietà. Se il progetto non contiene già una finestra delle proprietà, è possibile crearne una seguendo la procedura descritta in Condividere o riutilizzare le impostazioni del progetto di Visual Studio.

Per creare una macro definita dall'utente

  1. Aprire la finestra Gestione proprietà. (Sulla barra dei menu scegliere Visualizzare>Gestione proprietà o Visualizzare>altre proprietà di Windows.> Aprire il menu di scelta rapida per una finestra delle proprietà (il nome termina in .user) e quindi scegliere Proprietà. Viene aperta la finestra di dialogo Pagine delle proprietà per la finestra delle proprietà.

  2. Nel riquadro sinistro della finestra selezionare Macro utente. Nel riquadro destro scegliere il pulsante Aggiungi macro per aprire la finestra di dialogo Aggiungi macro utente.

  3. Nella finestra di dialogo specificare un nome e un valore per la macro. Se possibile, selezionare la casella di controllo Imposta questa macro come variabile di ambiente nell'ambiente di compilazione.

Editor proprietà

È possibile usare l'Editor della proprietà per modificare alcune proprietà stringa e selezionare le macro come valori. Per accedere all'Editor proprietà, selezionare una proprietà in una pagina delle proprietà, quindi scegliere il pulsante freccia in giù a destra. Se l'elenco a discesa contiene <Modifica>, è possibile sceglierlo per visualizzare l'Editor proprietà per tale proprietà.

Screenshot della pagina delle proprietà del progetto di Visual Studio per VC più Directory.

L'editor delle proprietà per l'impostazione Directory di inclusione è aperto. Mostra il valore valutato per le directory di inclusione, ovvero C:\Programmi(x86)\Microsoft Visual Studio 14.0\VC\Include. Mostra i due valori ereditati: $(VC_IncludePath) e $(WindowsSDK_IncludePath). È selezionata una casella di controllo "Eredita da valori predefiniti padre o progetto".

In Editor proprietà è possibile scegliere il pulsante Macro per visualizzare le macro disponibili e i relativi valori correnti. La figura seguente illustra l'Editor proprietà per la proprietà Directory di inclusione aggiuntive dopo aver scelto il pulsante Macro. Quando la casella di controllo Eredita da valori predefiniti del progetto o padre è selezionata e si aggiunge un nuovo valore, viene aggiunta a tutti i valori attualmente ereditati. Se si deseleziona la casella di controllo, il nuovo valore sostituisce i valori ereditati. Nella maggior parte dei casi lasciare selezionata la casella di controllo.

Screenshot della finestra di dialogo Editor proprietà dopo aver selezionato il pulsante Macro.

L'editor delle proprietà per Le directory di inclusione è aperto. Il valore valutato viene visualizzato insieme ai valori ereditati. Una casella di riepilogo contiene varie macro e i relativi valori, ad esempio $(CharacterSet) impostato su Unicode.

Aggiungere una directory di inclusione al set di directory predefinite

Quando si aggiunge una directory di inclusione a un progetto, è importante non eseguire l'override di tutte le directory predefinite. Il modo corretto per aggiungere una directory consiste nell'aggiungere il nuovo percorso, ad esempio "C:\MyNewIncludeDir\", e quindi aggiungere la $(IncludePath) macro al valore della proprietà.

Esplorare e cercare rapidamente tutte le proprietà

La pagina delle proprietà Tutte le opzioni (nel nodo Proprietà>di configurazione C/C++ nella finestra di dialogo Pagine delle proprietà) consente di esplorare e cercare rapidamente le proprietà disponibili nel contesto corrente. Include una casella di ricerca speciale e una sintassi semplice per filtrare facilmente i risultati:

Nessun prefisso:
ricerca solo nei nomi delle proprietà (sottostringa senza distinzione tra maiuscole e minuscole).

'/' o '-':
Ricerca solo nelle opzioni del compilatore (prefisso senza distinzione tra maiuscole e minuscole)

v:
ricerca solo nei valori (sottostringa senza distinzione tra maiuscole e minuscole).

Impostare le variabili di ambiente per una compilazione

Il compilatore MSVC (cl.exe) riconosce determinate variabili di ambiente, in particolare LIB, LIBPATH, PATHe INCLUDE. Quando si esegue la compilazione con l'IDE, le proprietà impostate nella pagina delle proprietà Directory di VC++ vengono usate per impostare tali variabili di ambiente. Se LIBi valori , LIBPATHe INCLUDE sono già stati impostati, ad esempio da un prompt dei comandi per gli sviluppatori, vengono sostituiti con i valori delle proprietà MSBuild corrispondenti. La compilazione antepone quindi il valore della proprietà directory eseguibili delle directory eseguibili di VC++ a PATH. È possibile impostare una variabile di ambiente definita dall'utente creando una macro definita dall'utente e quindi selezionando la casella Imposta questa macro come variabile di ambiente nell'ambiente di compilazione.

Impostare le variabili di ambiente per una sessione di debug

Nel riquadro sinistro della finestra di dialogo Pagine delle proprietà del progetto espandere il nodo Proprietà di configurazione e selezionare Debug.

Nel riquadro destro modificare le impostazioni del progetto Ambiente o Unisci ambiente e quindi scegliere OK.

In questa sezione

Condividere o riutilizzare le impostazioni di progetto di Visual Studio
Come creare un .props file con impostazioni di compilazione personalizzate che possono essere condivise o riutilizzate.

Ereditarietà delle proprietà del progetto
Descrive l'ordine di valutazione per le .propsvariabili di ambiente , , .targetsfile .vcxproj e ambiente nel processo di compilazione.

Modificare le proprietà e le destinazioni senza modificare il file di progetto
Come creare impostazioni di compilazione temporanee senza dover modificare un file di progetto.

Vedi anche

Progetti di Visual Studio - C++
.vcxproj e .props struttura dei file
File XML delle pagine delle proprietà