Impostare il compilatore e le proprietà di compilazione

Nell'IDE tutte le informazioni necessarie per compilare un progetto vengono esposte come proprietà. 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 Project > projectname Properties 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à relative a file MIDL, ma questi 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 Pagine delle proprietà con le Project predefinite evidenziate.

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 variazioni della build, indipendentemente dalla piattaforma di destinazione o dal fatto che si tratti di una build di debug o di versione. La maggior parte delle proprietà sono tuttavia dipendenti dalla configurazione. In questo modo il compilatore deve sapere su quale piattaforma specifica verrà eseguito il programma e le opzioni del compilatore specifiche da usare per generare il codice corretto. Quando si imposta una proprietà è quindi importante prestare attenzione alla configurazione e piattaforma a cui viene applicato il nuovo valore. Si applica solo alle build di debug Win32 o anche al debug di dispositivi ARM e 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.

Le pagine delle proprietà sono progettate in modo che sia sempre possibile visualizzare, e se necessario modificare, la piattaforma e la configurazione a cui applicare un valore della proprietà. Nella figura seguente vengono illustrate le pagine delle proprietà con le informazioni di configurazione e della piattaforma nelle caselle di riepilogo nella parte superiore. Quando la proprietà Ottimizzazione viene impostata in questo punto, verrà applicata solo per le build di debug Win32, ovvero la configurazione attiva, come indicato dalle frecce rosse.

Screenshot della finestra di dialogo Pagine delle proprietà che mostra i valori delle proprietà per la configurazione attualmente attiva.

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à che mostra i valori delle proprietà per la configurazione della versione.

Piattaforme di destinazione

Piattaforma di destinazione fa riferimento al tipo di dispositivo e/o sistema operativo in cui verrà eseguito il file eseguibile. È possibile compilare un progetto per più piattaforme. Le piattaforme di destinazione disponibili per i progetti C++ dipendono dal tipo di progetto e includono, ma non sono limitate a, Win32, x64, ARM, 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 Qualsiasi CPU che è possibile riscontrare in Configuration Manager non ha alcun effetto in progetti C++ nativi; è rilevante per C++/CLI e altri tipi di progetto .NET. Per altre informazioni, vedere /CLRIMAGETYPE (Specifica il tipo di immagine CLR).

Per altre informazioni sull'impostazione delle proprietà per una build 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 vengono convertite direttamente in opzioni della riga di comando che verranno passate al compilatore. Per leggere la documentazione su un'opzione specifica, selezionare l'opzione nel riquadro centrale e premere F1. In caso contrario, è possibile consultare la documentazione per tutte le opzioni disponibili MSVC opzioni del compilatore MSVC linker.

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 dispone di un file con estensione idl, la pagina delle proprietà MIDL non viene visualizzata. Per altre informazioni sull'impostazione 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 denominate "macro" per determinati valori stringa, tra cui directory e percorsi. Queste vengono esposte nelle pagine delle proprietà, in cui è possibile fare riferimento e modificarle usando l'Editor proprietà.

La figura seguente mostra le pagine delle proprietà per un Visual Studio progetto C++. Nel riquadro sinistro è selezionata la VC++ Directory predefinite e nel riquadro destro sono elencate le proprietà associate a tale regola. I $(...) valori sono denominati macro. Una macro è una costante in fase di compilazione che può fare riferimento a un valore definito da Visual Studio o dal sistema MSBuild o a un valore definito dall'utente. Usando macro anziché valori hard-coded, ad esempio i percorsi di directory, è possibile condividere più facilmente le impostazioni delle proprietà tra computer e tra le versioni di Visual Studio ed è possibile assicurarsi che le impostazioni del progetto partecipino correttamente all'ereditarietà delle proprietà.

Screenshot della finestra di dialogo Pagine delle proprietà che mostra le directory del progetto VC.

È possibile usare l'Editor proprietà per visualizzare i valori di tutte le macro disponibili.

Macro predefinite

macro globali
Si applica a tutti gli elementi di una configurazione del progetto. Presenta 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 elemento
Presenta 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. Quando viene usata nel contesto di una configurazione di progetto, una macro di elemento viene applicata a tutti i file di un certo tipo. Ad esempio, la proprietà di configurazione Definizioni preprocessore C/C++ può assumere una macro di elemento che si applica a tutti i file %(PreprocessorDefinitions) con estensione cpp nel progetto. Questo tipo di macro di elemento corrisponde ai metadati ItemDefinitionGroup in MSBuild. Per altre informazioni, vedere Definizioni di elementi.

Macro definite dall'utente

È possibile creare macro definite dall'utente da usare come variabili nelle compilazioni 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 notazione $(name) 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 Visual Studio progetto.

Per creare una macro definita dall'utente

  1. Aprire la finestra Gestione proprietà dati. (Sulla barra dei menu scegliere Visualizza > Gestione proprietà o Visualizza > altri Windows > Gestione proprietà.) Aprire il menu di scelta rapida per una finestra delle proprietà (il nome termina con .user) e quindi scegliere Proprietà. Verrà visualizzata la finestra di dialogo Pagine delle proprietà per la finestra delle proprietà.

  2. Nel riquadro sinistro della finestra di dialogo 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. Facoltativamente, 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 , è possibile sceglierlo per <Edit> visualizzare l'Editor proprietà per tale proprietà.

Un controllo elenco a discesa delle proprietà viene usato per accedere all'editor delle proprietà.

Nell'Editor proprietà è possibile scegliere il pulsante Macro per visualizzare le macro disponibili e i relativi valori correnti. La figura seguente mostra l'Editor proprietà per la proprietà Directory di inclusione aggiuntive dopo la scelta del pulsante Macro. Quando la casella di controllo Eredita dalle impostazioni predefinite del progetto o padre è selezionata e si aggiunge un nuovo valore, viene aggiunto 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.

Finestra di dialogo Editor proprietà per la proprietà Includi directory.

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 è aggiungere il nuovo percorso, ad esempio "C:\MyNewIncludeDir, e quindi aggiungere la " macro $(IncludePath) 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à) offre un modo rapido per esplorare e trovare 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 MSVC (cl.exe) riconosce determinate variabili di ambiente, in particolare LIB, LIBPATH, PATH e INCLUDE. Quando si esegue la compilazione con l'IDE, per impostare tali variabili di ambiente vengono usate le proprietà impostate nella pagina delle proprietà VC++ Directory. Se i valori LIB, LIBPATH e INCLUDE sono già stati impostati, ad esempio da un prompt dei comandi dello sviluppatore, vengono sostituiti con i valori delle proprietà MSBuild corrispondenti. La compilazione antepone il valore della proprietà delle directory di file eseguibili Directory di VC++ a PATH. È possibile impostare una variabile di ambiente definita dall'utente creando una macro definita dall'utente e 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 Proprietà di configurazione e quindi selezionare Debug.

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

Contenuto della sezione

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

Ereditarietà delle proprietà del progetto
Descrive l'ordine di valutazione per i file props, targets, vcxproj e variabili di 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

Visual Studio Progetti - C++
Struttura dei file con estensione vcxproj e props
File XML delle pagine delle proprietà