[gelöst] C++ Projekte mit MSBuild kompilieren?
-
Hallo zusammen,
eine Frage: Ist es möglich VC++ Projekte die mit VS2005 erstellt worden sind mit MSBuild umzuwandeln?
Wenn Ja:
Was muss ich dabei beachten?
Hat vielleicht jemand ein Beispiel zu einem *.proj-file?
Kann ich irgendwie festlegen das ich zum Beispiel ein Projekt nur mit folgenden Konfigurationen umwandeln möchte:win32: Release & Debug
x64: nur ReleaseWenn Nein:
Gibt es ein Programm welches VC++ Projekte über die Kommandozeile umwandelt und dabei ähnlich exakte Möglichkeiten bietet wie die XML-Dateien (*.proj) für MSBuild?Vielen Dank an euch,
Julian
-
Was soll den "umwandeln" heißen? Meinst du damit kompilieren? Drück dich bitte klar aus, damit man dir weiter helfen kann.
-
Hi,
mit umwandeln meine ich eine Debug & eine Releaseversion zu erstellen. Also im Prinzip möchte ich ein komplettes Rebuild der versch. Projekte starten.
Also Ja: Umwandeln = Kompilieren = Release && Debug
Tschuldige für die falsche Wortwahl.
LG, Julian
-
Das einfachste ist, Du legst eine proj-Datei an mit Folgendem Inhalt:
<Project DefaultTargets="Rebuild" ToolsVersion="2.0" Verbosity="detailed" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> <Project Include="Project1Directory\Project1.vcproj" /> <Project Include="Project2Directory\Project2.vcproj" /> <!-- usw. --> </ItemGroup> <Target Name="Rebuild"> <VCBuild Projects="@(Project)" Configuration="Debug|Win32" Rebuild="true" ContinueOnError="false" /> <VCBuild Projects="@(Project)" Configuration="Release|Win32" Rebuild="true" ContinueOnError="false" /> </Target> <Target Name="Build"> <VCBuild Projects="@(Project)" Configuration="Debug|Win32" ContinueOnError="false" /> <VCBuild Projects="@(Project)" Configuration="Release|Win32" ContinueOnError="false" /> </Target> <Target Name="Clean"> <VCBuild Projects="@(Project)" Configuration="Debug|Win32" Clean="true" ContinueOnError="false" /> <VCBuild Projects="@(Project)" Configuration="Release|Win32" Clean="true" ContinueOnError="false" /> </Target> </Project>
Und dann einfach in dem Verzeichnis so starten:
msbuild
oder so:
msbuild /t:Clean
-
Hallo Jochen,
vielen vielen vielen Dank! Es funktioniert super, ich bin wirklich unglaublich happy. Das habe ich die ganze Zeit gesucht, genau das!
Sag mal hast du vielleicht irgendwo eine Page od. Tutorials bzw. Bücher die du mir zum Thema MSBuild, VCBuild empfehlen kannst?
Ich habe jetzt noch eine Frage und zwar möchte ich den Aufruf von MSBuild aus einem Skript starten das mich bei Fehlern benachrichtigt (BLAT), dazu brauche ich einen Returnwert. Liefert MSBuild bei einem Error einen Returnwert?
LG, Julian.
-
msbuild liefert 0, wennn erfolgreich und 1 bei Fehler.
-
Hallo Jochen,
okay Danke.
Wenn ich jetzt also mehrere Projekte kompiliere, in verschiedenen Konfigurationen wie in deinem Skript oben und ein Projekt mit Konfiguration abbricht, bekomme ich also einen Returnwert 1.
Bsp.:
proj1.vcproj (Release|x64) - DONE! proj1.vcproj (Debug|x64) - FAILURE! proj1.vcproj (Release|win32) - DONE! proj1.vcproj (Debug|win32) - DONE! Build succeeded. 0 Warning(s) 1 Error(s)
Bekomme ich dann einen Returnwert 1 oder 0, da ja 3 Projekte erfolgreich kompiliert wurden?
Und wie sieht es mit Fehlerhandling bei MSBuild im allgemeinen aus? Kann ich zum Beispiel feststellen welches Projekt mit welcher Konfiguration abgebrochen ist?
Ist es möglich Abhängigkeiten zu setzen, also das zum Beispiel die Release|x64 nur erstellt wird, wenn die Debug|x64 erfolgreich war?Vielen Dank, ich hoffe ich frage nicht zu viel
LG, Julian
-
Du kannst fast alles machen! U.a. mit "DependsOnTargets"... und "ContinueOnError"... "OnError"...
Siehe:
MSBuild Reference
http://msdn.microsoft.com/en-us/library/0k6kkbsd.aspxTarget Element (MSBuild)
http://msdn.microsoft.com/en-us/library/t50z2hka.aspxOnError Element (MSBuild)
http://msdn.microsoft.com/en-us/library/ms164285.aspxÜbersicht über MSBuild
http://msdn.microsoft.com/de-de/library/ms171452.aspxSiehe auch:
Inside the MicrosoftBuild Engine: Using MSBuild and Team Foundation Build (PRO-Developer) (Taschenbuch)
Inside the Microsoft Build Engine | ISBN: 0735626286
-
Hallo Jochen,
erstmal vielen Dank nochmal für deine Hilfe. Hat mich wirklich gut weitergebracht. Wenn alles gut läuft habe ich bald alles unter meinen Wunschbedingungen.
Die Links zu MS kannte ich schon, trotzdem vielen Dank dafür. Ich finde allerdings das sie mit einem Beispiel, wie deinem oben, nun besser verständlich sind.Das Buch gibt es auch als GoogleBook, es fehlen natürlich ein paar Seiten wie immer, allerdings sind interessante Sachen trotzdem vorhanden und nachvollziehbar. Ich werde es mir trotzdem zulegen, manchmal sind Offline-Tutorials dann doch schöner
Liebe Grüße, Julian.
-