C++: MSBuild in der Befehlszeile
Allgemein sollten Sie Visual Studio verwenden, um Projekteigenschaften festzulegen und das MSBuild-System aufzurufen. Sie können jedoch auch das MSBuild-Tool direkt in der Befehlszeile verwenden. Der Buildprozess wird von den Informationen in einer Projektdatei (VCXPROJ) gesteuert, die Sie erstellen und bearbeiten können. Die Projektdatei gibt die Buildoptionen basierend auf den Buildstufen, -bedingungen und -ereignissen an. Zusätzlich können Sie null oder mehr Befehlszeilenoptionsargumente angeben.
msbuild.exe [ Projektdatei ] [ Optionen ]
Verwenden Sie die /target- (oder /t) und /property- (oder /p) Befehlszeilenoptionen, um bestimmte Eigenschaften und Ziele zu überschreiben, die in der Projektdatei angegeben sind.
Eine wesentliche Funktion der Projektdatei ist die Angabe eines Ziels, das eine bestimmte Operation im Projekt darstellt, und der zum Ausführen der Operation erforderlichen Ein- und Ausgaben. Eine Projektdatei kann ein oder mehrere Ziele angeben, zu denen auch ein Standardziel gehören kann.
Jedes Ziel besteht aus einer Sequenz aus einer oder mehreren Aufgaben. Jede Aufgabe wird durch eine .NET Framework-Klasse dargestellt, die einen ausführbaren Befehl enthält. Die CL-Aufgabe enthält z. B. den Befehl cl.exe.
Ein Aufgabenparameter ist eine Eigenschaft der Klassenaufgabe und stellt in der Regel eine Befehlszeilenoption des ausführbaren Befehls dar. Der FavorSizeOrSpeed
-Parameter der CL
-Aufgabe entspricht z. B. den Compileroptionen /Os und /Ot.
Zusätzliche Aufgabenparameter unterstützen die MSBuild-Infrastruktur. Der Sources
-Aufgabenparameter gibt z. B. einen Satz von Aufgaben an, die von anderen Aufgaben genutzt werden können. Weitere Informationen zur Verwendung von MSBuild-Aufgaben finden Sie unter Referenz zu MSBuild-Tasks.
Die meisten Aufgaben erfordern Eingaben und Ausgaben, z. B. Dateinamen, Pfade und Zeichenfolgenparameter bzw. numerische oder boolesche Parameter. Eine allgemeine Eingabe ist z. B. der Name einer zu kompilierenden CPP-Quelldatei. Ein wichtiger Eingabeparameter ist eine Zeichenfolge, die die Buildkonfiguration und die Plattform angibt, z. B. "Debug|Win32". Eingaben und Ausgaben werden von einem oder mehreren benutzerdefinierten XML-Item
-Elementen angegeben, die in einem ItemGroup
-Element enthalten sind.
Eine Projektdatei kann auch benutzerdefinierte Eigenschaften und ItemDefinitionGroup
-Elemente angeben. Eigenschaften und Elemente bilden Name-Wert-Paare, die als Variablen im Build verwendet werden können. Die Namenskomponente eines Paars definiert ein Makro, und die Wertkomponente deklariert den Makrowert. Auf ein Eigenschaftenmakro wird mithilfe der $(Name)-Notation zugegriffen, und auf ein Elementmakro wird mithilfe der %(Name)-Notation zugegriffen.
Andere XML-Elemente in einer Projektdatei können Makros testen und anschließend den Wert eines Makros bedingt festlegen oder die Ausführung des Builds steuern. Makronamen und Literalzeichenfolgen können verkettet werden, um Konstrukte, wie z. B. einen Pfad oder einen Dateinamen, zu generieren. In der Befehlszeile legt die /property-Option die Projekteigenschaft fest oder überschreibt sie. Auf Elemente kann in der Befehlszeile nicht verwiesen werden.
Das MSBuild-System kann vor bzw. nach einem anderen Ziel ein Ziel bedingt ausführen. Das System kann außerdem ein Ziel aufgrund dessen erstellen, ob die Dateien, die das Ziel nutzt, neuer als die vom Ziel ausgegebenen Dateien sind.
Weitere Informationen zur MSBuild finden Sie unter:
MSBuild Übersicht über MSBuild-Konzepte
MSBuild-Referenz Referenzinformationen zum MSBuild-System
Referenz zum MSBuild-Projektdateischema Führt die MSBuild-XML-Schemaelemente, ihre Attribute sowie die übergeordneten und untergeordneten Elemente auf. Achten Sie insbesondere auf die Elemente ItemGroup, PropertyGroup, Target und Task.
MSBuild-Befehlszeilenreferenz Beschreibt die Befehlszeilenargumente und die Optionen, die Sie mit „msbuild.exe“ verwenden können.
Referenz zu MSBuild-Tasks Beschreibt die MSBuild-Aufgaben. Beachten Sie insbesondere diese Aufgaben, die für Visual C++ spezifisch sind: BscMake Task, CL Task, CPPClean Task, LIB Task, Link Task, MIDL Task,MT Task , RC Task, SetEnv Task, VCMessage Task
In diesem Abschnitt
Begriff | Definition |
---|---|
Exemplarische Vorgehensweise: Verwenden von MSBuild zum Erstellen eines C++-Projekts | Zeigt, wie ein C++-Projekt in Visual Studio mithilfe von MSBuild erstellt wird |
Vorgehensweise: Verwenden von Buildereignissen in MSBuild-Projekten | Zeigt, wie eine Aktion angegeben wird, die zu einer bestimmten Stufe des Buildprozesses auftritt: vor dem Beginn des Builds; vor dem Beginn des Verknüpfungsschritts oder nach Ende des Builds. |
Vorgehensweise: Hinzufügen eines benutzerdefinierten Buildschritts zu MSBuild-Projekten | Zeigt, wie eine benutzerdefinierte Stufe der Buildsequenz hinzugefügt wird |
Vorgehensweise: Hinzufügen von benutzerdefinierten Buildtools zu MSBuild-Projekten | Zeigt, wie ein Buildtool einer bestimmten Datei zugeordnet wird |
Vorgehensweise: Integrieren von benutzerdefinierte Tools in die Projekteigenschaften | Zeigt, wie Optionen für ein benutzerdefiniertes Tool den Projekteigenschaften zugeordnet werden |
Vorgehensweise: Ändern des Zielframeworks und des Plattformtoolsets | Zeigt, wie ein Projekt für mehrere Frameworks oder Toolsets kompiliert wird |