Team Foundation Server 2010 - Team Build - verschiedene Platformen mit unterschiedlichen externen Abhängigkeiten
-
Hallo,
ich sitze hier jetzt schon eine Weile und bekomme nicht so die richtige Idee wie ich das Problem lösen kann.
Seit VC2010 gehen ja leider die Batchbuilds nicht mehr, wenn verschiedene Platformen im Spiel sind. Er versucht hier z.Bsp. 32Bit-Libs mit 64Bit-Libs zu linken (es gibt auch Einträge bei Social dazu).
Daher dachte ich, nimm doch den TFS2010. Soll ja laut MS damit gehen. Also alles installiert soweit eingerichtet und eine Builddefinition erstellt.
Soweit so gut. Mein Problem besteht im Moment darin, das ich auch externe Abhängigkeiten habe - in diesen Fall z.Bsp. Boost - welche ich nicht unbedingt ins TFS mit einchecken will. Also habe ich auf dem Buildrechner Boost eingespielt für Win32 und x64.
Im VC2010 habe ich das Problem mit den unterschiedlichen Verzeichnissen (Include, Lib) über die Benutzerproperties gelöst. Diese gelten aber für einen Teambuild nicht mehr.
Was kann/muss ich tun, damit der Teambuild funktioniert? Ich habe schon einen eigenen Task geschrieben der die Benutzer-Umgebungsvariablen anpasst. Leider bekommt das der Controller nicht ohne einen Neustart mit, was demzufolge ausfällt.
Ich denke ich bin nicht der einzige der mit C++-Builds arbeitet und externe Referenzen aufgelöst haben muss.
Ich hoffe auf einen Tip.
Bis dann BEamer
-
Hallo,
da sich anscheinend keiner mit dieser Problematik auseinandersetzen musste sich aber immerhin 90 Leute diesen Beitrag angeschaut haben, werde ich einmal meine Lösung die ich herausgefunden habe hier posten.
Nach ein wenig suchen und analysieren der Verbose Meldungen des MSBuild bin ich auf etwas gestossen. Anscheinend werden vom MSBuild Einstellungen aufgerufen die selbst bestimmt werden können. dieses habe ich ausgenutzt und die entsprechenden Einstellungen darin vorgenommen.
<?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup Condition=" '$(Platform)'=='Win32' "> <IncludePath>C:\Program Files\Microsoft Speech SDK 5.1\Include;C:\work\CPPUnit\include;C:\work\Boost\include\boost-1_45;$(IncludePath)</IncludePath> <LibraryPath>C:\Program Files\Microsoft Speech SDK 5.1\Lib\i386;C:\work\CPPUnit\lib;C:\work\Boost\lib\boost_1_45;$(LibraryPath)</LibraryPath> </PropertyGroup> <PropertyGroup Condition=" '$(Platform)'=='x64' "> <IncludePath>C:\work\CPPUnit\include;C:\work\Boost\include\boost-1_45;$(IncludePath)</IncludePath> <LibraryPath>C:\work\CPPUnit\lib\x64;C:\work\Boost\lib\boost_1_45\x64;$(LibraryPath)</LibraryPath> </PropertyGroup> <ItemDefinitionGroup> <ClCompile> <PreprocessorDefinitions>_BIND_TO_CURRENT_VCLIBS_VERSION=1;_BIND_TO_CURRENT_MFC_VERSION=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> </ClCompile> </ItemDefinitionGroup> </Project>
So nachdem die Einstellungen getätigt wurden müssen diese jetzt noch dem MSBuild
bekannt gemacht werden.Dazu muss diese Datei in folgendes Verzeichnis mit folgenden Namen abgelegt werden: $(ProgramFiles)\MSBuild\v4.0\Custom.After.Microsoft.Common.Targets
Auch ist möglich die Einstellungen vor denen von MSBuild zu machen. Dazu muss die Datei einfach in - Custom.Befor.Microsoft.Common.Targets - benannt werden.
Ich hoffe ihr kommt damit zurecht. Sollte Fragen dazu auftauchen, dann einfach hier posten.
Gruss BEamer