Cenni preliminari su MSBuild (Visual C++)
MSBuild è il sistema di compilazione standard per progetti Visual C++. Quando si compila un progetto nell'ambiente di sviluppo integrato (IDE) di Visual Studio, vengono utilizzati lo strumento msbuild.exe, un file di progetto basato su XML e file di impostazioni facoltativi. Sebbene sia possibile utilizzare msbuild.exe e un file di progetto nella riga di comando, nell'IDE è disponibile un'interfaccia utente che semplifica la configurazione delle impostazioni e la compilazione di un progetto. In questi cenni preliminari viene illustrato l'utilizzo del sistema MSBuild in Visual C++.
Prerequisiti
Leggere i documenti seguenti relativi a MSBuild.
MSBuild
Cenni preliminari sui concetti di MSBuild.Riferimenti a MSBuild
Informazioni di riferimento sul sistema MSBuild.Riferimenti dello schema del file di progetto MSBuild
Elenca gli elementi di XML Schema di MSBuild, nonché i relativi attributi ed elementi padre e figlio. Si notino, in particolare, gli elementi ItemGroup, PropertyGroup, Target e Task.Riferimenti alla riga di comando di MSBuild
Descrive le opzioni e gli argomenti della riga di comando che è possibile utilizzare con msbuild.exe.Riferimenti delle attività MSBuild
Descrive le attività di MSBuild. Si notino, in particolare, queste attività, specifiche di Visual C++: Attività BscMake, Attività CL, Attività CPPClean, Attività LIB, Attività Link, Attività MIDL, Attività MT, Attività RC, Attività SetEnv, Attività VCMessage, Attività XDCMake, Attività XSD.
MSBuild sulla riga di comando
Nell'istruzione seguente del documento Riferimenti alla riga di comando di MSBuild viene illustrato che lo strumento msbuild.exe accetta un argomento project file implicito o esplicito (un file con estensione vcxproj per i progetti Visual C++) e zero o più options della riga di comando.
msbuild.exe [project file] [options]
Utilizzare le opzioni /target (o /t) e /property (o /p) della riga di comando per eseguire l'override di proprietà e destinazioni specificate nel file di progetto.
Una funzione essenziale del file di progetto è quella di specificare una destinazione, ovvero una determinata operazione applicata al progetto, e gli input e gli output necessari per eseguire tale operazione. In un file di progetto è possibile specificare una o più destinazioni, tra cui può essere inclusa una destinazione predefinita.
Ogni destinazione è costituita da una sequenza di una o più attività. Ogni attività viene rappresentata da una classe .NET Framework che contiene un comando eseguibile. Ad esempio, l'attività CL contiene il comando cl.exe.
Un parametro dell'attività è una proprietà dell'attività della classe e in genere rappresenta un'opzione della riga di comando del comando eseguibile. Ad esempio, il parametro FavorSizeOrSpeed dell'attività CL corrisponde alle opzioni del compilatore /Os e /Ot.
Parametri dell'attività aggiuntivi supportano l'infrastruttura MSBuild. Ad esempio, il parametro dell'attività Sources specifica un set di attività che può essere utilizzato da altre attività. Per ulteriori informazioni sull'utilizzo di attività MSBuild, vedere Riferimenti delle attività MSBuild.
La maggior parte delle attività richiede input e output, ad esempio nomi file, percorsi e parametri di stringa, numerici o booleani. Ad esempio, un input comune è il nome di un file di origine con estensione cpp da compilare. Un parametro di input importante è una stringa che specifica la configurazione di compilazione e la piattaforma, ad esempio "Debug|Win32". Input e output vengono specificati da uno o più elementi Item XML definiti dall'utente contenuti in un elemento ItemGroup.
Un file di progetto può inoltre specificare le proprietà definite dall'utente e gli elementi del gruppo di definizioni di elementi. Le proprietà e gli elementi formano coppie nome/valore che possono essere utilizzate come variabili nella compilazione. Con il componente nome di una coppia viene definita una macro e con il componente valore viene dichiarato il valore della macro. L'accesso a una macro di proprietà viene eseguito tramite la notazione $(nome) e l'accesso a una macro di elemento viene eseguito tramite la notazione %(nome).
Mediante altri elementi XML di un file di progetto è possibile testare le macro, quindi impostare in modo condizionale il valore di qualsiasi macro o controllare l'esecuzione della compilazione. È possibile concatenare nomi di macro e stringhe letterali per generare costrutti come un percorso e un nome file. Nella riga di comando l'opzione /property imposta o esegue l'override di una proprietà del progetto. Non è possibile fare riferimento agli elementi nella riga di comando.
Il sistema MSBuild può eseguire una destinazione prima o dopo un'altra destinazione in base a determinate condizioni. Inoltre, il sistema può compilare una destinazione in base al fatto che i file utilizzati dalla destinazione stessa siano più o meno recenti di quelli generati.
MSBuild nell'IDE
Quando si impostano le proprietà di un progetto nell'IDE e si salva il progetto, Visual C++ scrive le impostazioni del progetto nel file di progetto. Il file di progetto contiene impostazioni univoche per il progetto, ma non contiene tutte le impostazioni necessarie per la compilazione del progetto. Il file di progetto contiene elementi Import che includono una rete di altri file di supporto. I file di supporto contengono le impostazioni, le destinazioni e le proprietà rimanenti, necessarie per la compilazione del progetto.
La maggior parte delle destinazioni e delle proprietà nei file di supporto esistono esclusivamente allo scopo di implementare il sistema di compilazione. Nella sezione seguente vengono illustrate alcune proprietà e destinazioni utili che è possibile specificare nella riga di comando di MSBuild. Per individuare più destinazioni e proprietà, esaminare i file nelle directory dei file di supporto.
Directory dei file di supporto
Per impostazione predefinita, i file di supporto primari di Visual C++ si trovano nelle seguenti directory.
Directory |
Descrizione |
---|---|
unità: \Programmi\MSBuild\Microsoft.Cpp\v 4.0\ |
Contiene i file delle destinazioni (con estensione targets) e delle proprietà (con estensione props) primari utilizzati dalle destinazioni. Per impostazione predefinita, la macro $(VCTargetsPath) fa riferimento a questa directory. |
unità: \Programmi\MSBuild\Microsoft.Cpp\v 4.0\Platforms\piattaforma\ |
Contiene file delle proprietà e delle destinazioni specifici della piattaforma che eseguono l'override delle destinazioni e delle proprietà nella directory padre. Questa directory contiene inoltre un file con estensione dll in cui sono definite le attività utilizzate dalle destinazioni in questa directory. Il segnaposto piattaforma rappresenta la sottodirectory Itanium, Win32 o x64. |
unità:\Programmi\MSBuild\Microsoft.Cpp\v4.0\Platforms\piattaforma\ PlatformToolsets\set di strumenti\ |
Contiene le directory che consentono la generazione di applicazioni 9.0 o Visual C++ 10.0 mediante la compilazione. Il segnaposto piattaforma rappresenta la sottodirectory Itanium, Win32 o x64. Il segnaposto set di strumenti rappresenta la sottodirectory del set di strumenti v90 o v100. |
File di supporto
Le directory dei file di supporto contengono file con le estensioni seguenti.
Estensione |
Descrizione |
---|---|
.targets |
Contiene elementi XML Target che specificano le attività eseguite dalla destinazione. Può inoltre contenere elementi Property Group, Item Group, Item Definition Group e Item definiti dall'utente utilizzati per assegnare file e opzioni della riga di comando ai parametri dell'attività. Per ulteriori informazioni, vedere Elemento Target (MSBuild). |
.props |
Contiene elementi XML Property Group e Property definiti dall'utente che specificano le impostazioni di parametri e file utilizzate durante una compilazione. Può inoltre contenere elementi XML Item Definition Group e Item definiti dall'utente che specificano impostazioni aggiuntive. Gli elementi definiti in un gruppo di definizioni di elementi sono simili a proprietà, ma non è possibile accedervi dalla riga di comando. I file di progetto di Visual C++ utilizzano spesso gli elementi anziché le proprietà per rappresentare le impostazioni. Per ulteriori informazioni, vedere Elemento ItemGroup (MSBuild), Elemento ItemDefinitionGroup (MSBuild) e Elemento Item (MSBuild). |
XML |
Contiene elementi XML che dichiarano e inizializzano elementi dell'interfaccia utente IDE quali le finestre e le pagine delle proprietà e i controlli casella di testo e casella di riepilogo. I file con estensione xml supportano direttamente l'IDE, ma non MSBuild. Tuttavia, i valori delle proprietà IDE vengono assegnati agli elementi e alle proprietà della compilazione. La maggior parte dei file con estensione xml si trovano in una sottodirectory specifica delle impostazioni locali. Ad esempio, i file per la regione Inglese-Stati Uniti si trovano in $(VCTargetsPath)\1033\. |
Proprietà e destinazioni utente
Per utilizzare MSBuild in modo più efficace dalla riga di comando, è importante conoscere le proprietà e le destinazioni utili e rilevanti. La maggior parte delle proprietà e delle destinazioni facilitano l'implementazione del sistema di compilazione di Visual C++, di conseguenza non sono rilevanti per l'utente. In questa sezione vengono illustrate alcune proprietà e destinazioni orientate all'utente che possono essere utili.
Proprietà PlatformToolset
La proprietà PlatformToolset determina se nella compilazione viene utilizzato il set di strumenti di Visual C++ 2010 o di Visual C++ 2008. Il valore della proprietà viene concatenato a stringhe letterali per formare il percorso di una directory che contiene i file delle proprietà e delle destinazioni necessari per la compilazione di un progetto per una determinata piattaforma.
Impostare la proprietà PlatformToolset su v100 per utilizzare gli strumenti di Visual C++ 2010 per la compilazione dell'applicazione.
msbuild myProject.vcxproj /p:PlatformToolset=v100
Impostare la proprietà PlatformToolset su v90 per utilizzare gli strumenti di Visual C++ 2008 per la compilazione dell'applicazione. È necessario che il set di strumenti di Visual C++ 2008 sia già installato nel computer perché la proprietà abbia effetto.
msbuild myProject.vcxproj /p:PlatformToolset=v90
Proprietà UseEnv
Per impostazione predefinita, le impostazioni specifiche della piattaforma per il progetto corrente eseguono l'override delle variabili di ambiente PATH, INCLUDE, LIB, LIBPATH, CONFIGURATION e PLATFORM. Impostare la proprietà UseEnv su true per garantire che non venga eseguito l'override delle variabili di ambiente.
msbuild myProject.vcxproj /p:UseEnv=true
Destinazioni
Nei file di supporto di Visual C++ sono presenti centinaia di destinazioni. Nella maggior parte dei casi, tuttavia, si tratta di destinazioni orientate al sistema che l'utente può ignorare. La maggior parte delle destinazioni del sistema sono precedute da un carattere di sottolineatura (_) o presentano un nome che inizia con "PrepareFor", "Compute", "Before", "After", "Pre" o "Post".
Nella tabella seguente sono elencate diverse destinazioni orientate all'utente che possono essere utili.
Destinazione |
Descrizione |
---|---|
BscMake |
Esegue lo strumento Microsoft Browse Information Maintenance Utility, bscmake.exe. |
Build |
Compila il progetto. Si tratta della destinazione predefinita per un progetto. |
ClCompile |
Esegue lo strumento Compilatore di Visual C++, cl.exe. |
Pulisci |
Elimina file di compilazione temporanei e intermedi. |
Lib |
Esegue lo strumento Gestione librerie Microsoft a 32 bit, lib.exe. |
Link |
Esegue lo strumento Linker di Visual C++, link.exe. |
ManifestResourceCompile |
Estrae un elenco di risorse da un manifesto, quindi esegue lo strumento Compilatore di risorse di Microsoft Windows, rc.exe. |
Midl |
Esegue lo strumento Compilatore MIDL (Microsoft Interface Definition Language), midl.exe. |
Ricompila |
Pulisce, quindi compila il progetto. |
ResourceCompile |
Esegue lo strumento Compilatore di risorse di Microsoft Windows, rc.exe. |
XdcMake |
Esegue lo strumento Documentazione XML, xdcmake.exe. |
Xsd |
Esegue lo strumento di definizione dello schema XML, xsd.exe. |
Vedere anche
Altre risorse
Cronologia delle modifiche
Data |
Cronologia |
Motivo |
---|---|---|
Marzo 2011 |
Modificato il segnaposto piattaforma nella tabella "Directory dei file di supporto" per includere "x64" anziché "x86". |
Commenti e suggerimenti dei clienti. |