Compilieren mit msbuild



  • Ciao Zäme

    Ich wollte mal mein Projekt über die Komandozeile kompilieren. Dazu habe ich in diversen Beiträgen der Befehl "msbuild" gefunden. Daher habe ich im Komandofenster folgendes eingegeben.

    msbuild projectfile /T:Build/P:Config=Release;Platform=Win64
    

    Jodoch wenn ich den Befehl absetze, kommt der Fehler, dass kein Ziel angegeben wurde.

    Was muss ich machen, dass mein Projekt erstellt wird?

    Gruss Renato



  • Mach mal zwischen /T:build und /:PConfig=release ein Leerzeichen:

    msbuild projectfile /T:Build /P:Config=Release;platform=Win64
    


  • Also ich baue inzwischen meine release Versionen alle mit einem Batchfile und msbuild.
    Das ganze funktioniert sehr gut.
    Habe mitlerweile WIX (Windows Installer XML), doxygen, Archivierung der erzeugten Dateien + map, tds, ... sowie teilweise Subversion Informationen integriert.
    Damit wird einfach sicher gestellt, das immer gleich gebaut wird und somit alles reproduzierbar ist.
    In meinem projekspezifischen Batchfile werden verschiedene Umgebungsvariablen gesetz welche dann von msbuild weiterverarbeitet werden.

    MfG Stephan



  • Ciao Zäme

    Ich habe mal diverses versucht. Komme aber nicht weiter. Das "/T:Build" stimmt nicht. Er akzeptiert es als Ziel nicht. Aber wo ist ersichtlich, welche Ziele erlaubt sind.

    Gruss Renato



  • Säli

    habs grade einmal getestet, hatte keinerlei Probleme:

    msbuild myproject.vcxproj /p:PreferredToolArchitecture=x64 /p:platform=x64 /t:rebuild
    

    Zeig mal deine Project XML

    Seas



  • Robbiani schrieb:

    Das "/T:Build" stimmt nicht.

    keinerlei Probleme: /t:rebuild

    Groß/Kleinschreibung?



  • Ciao

    An einem Punkt bin ich hängen geblieben. In meinem Projekt habe ich eine Datei mit der Dateierweiterung ".cbproj" und eine weitere mit der Dateierweiterung ".groupproj". In der zweiten Datei habe ich Einträge mit <Target Name="Projektname"> und so weiter.

    Aber "rebuild" existiert nicht. Oder welche Projektdatei muss ich verwenden damit es geht?

    Gruss Renato



  • <Project DefaultTargets="build">
      <Import Project="$(VCTargetsPath)\myBuild.cpp.props" />
      <ItemGroup>
        <ClCompile Include="main.cpp" />
      </ItemGroup>
      <ItemGroup>
        <ClInclude Include="main.h" />
      </ItemGroup>
      <Import Project="$(VCTargetsPath)\myBuild.cpp.targets" />
    </Project>
    

    Hast du deine Projektdateien gemäß docs importiert?

    EDIT: Bzw. hast du noch irgend eine aussagekräftige Fehlermeldung?

    Seas



  • Jetzt wird es spannend. Aber von welchen docs sprichst du. In diesem Fall habe ich es noch nicht gemacht.

    Muss man da das Projekt von Hand einfüllen?

    Gruss Renato



  • Noch ein Nachtrag mit der Batch Datei rscars.bat stimmt was nicht. Der Pfad für die PlatformSDK stimmt nicht. Welchen Pfad muss ich da eintragen?

    Gruss Renato



  • Also, wenn ich mich noch recht erinnere stehen die verfügbaren Targets nicht in der Projektdatei sondern in extra *.target Dateien.
    Vereinfacht gesagt, rufe ich rsvars.bat auf und anschließend:

    call msbuild.exe %MyBuildToolsPath%\all.proj /target:%OveralTargets% "/property:config=%MsbCgConfig%;configuration=%MsbCgConfig%" /logger:%MsbLogger%
    

    all.proj ist eine eigene msbuild Projekdatei welche verschiedenste Einstellungen durchführt, WIX einbindet, ...
    OveralTargets beinhaltet für Embarcadero clean;build

    Folgendes sollte also funktionieren:

    call rsvars.bat
    call msbuild.exe deinProject.cbproj /target:clean;build /property:config=release
    

    .groupproj ist für die Projektgruppe zuständig und spielt hier keine Rolle.

    Das ganze funktioniert bei mir unter 2010, XE3 und XE6 (den Rest kann ich nicht testen).

    Eventuell stimmt auch in deiner PATH Umgebungsvariable etwas nicht.
    Wenn Du mehrere Compiler mit msbuild installiert hast, sollte der zu verwendete am Anfang stehen, sonst kann es sein, daß aus der Kommandozeile der falsche gezogen wird.

    @snwFlake
    Wo kommt denn dein XML-Schnippsel her?
    VCTargetPpath hört sich für mich irgendwie nach VisualC an!?

    Viel Erfolg
    MfG Stephan



  • Ciao Stephan

    Herzlichen Dank für die Hilfe. Ich werde es mal ausprobieren. Ich denke, das es bestimmt funktioniert.

    Gruss Renato



  • Ciao Stephan

    Es ist zum verückt werden. Mit "clean" funktionierts ohne Prpbleme. Wenn ich aber "build" oder "rebuild" verwende kommt immer der folgende Fehler:

    Build FAILED.
    
    "C:\Users\renato\Documents\Projekte_XE\Sonne\sonne.cbproj" (rebuild target) (1) ->
    (_CLANGCoreCompile target) ->
      C:\Program Files (x86)\Embarcadero\Studio\15.0\Bin\CodeGear.Cpp.Targets(2010,5): error MSB6006: "clang" exited with code -1073741819.
    

    Was kann ich noch machen? Ich habe langsam aber sicher das Gefühl, dass der Comandezeilencompiler mit C++ Standard 11 nichts anfangen kann.

    Gruss Renato



  • Jetzt bin ich einen Schritt weiter gekommen. Ich habe mal die Meldungen angeschaut, welche beim Compilieren in der IDE geschrieben werden. Danach bin ich auf folgende Befehlszeile gestossen.

    msbuild.exe C:\Users\renato\Documents\Projekte_XE\Sonne\sonne.cbproj /t:Clean;MakeObjs;RcCompile;_PerformLink /p:config=Release;platform=Win64
    

    Alle Targes funktionieren. Nur der "MakeObjs" bokt. Der schmeisst den Fehler:

    "C:\Users\renato\Documents\Projekte_XE\Sonne\sonne.cbproj" (MakeObjs target) (1) ->
    (_CLANGCoreCompile target) ->
      C:\Program Files (x86)\Embarcadero\Studio\15.0\Bin\CodeGear.Cpp.Targets(2010,5): error MSB6006: "clang" exited with code -1073741819.
    

    Warum auch immer. Aber ohne dem geht es einfach nicht weiter.

    Gruss Renato



  • Da wir noch nicht auf der aktuellen Version sind kann ich dies mit clang nicht testen.
    Jedoch die IDE verwendet doch auch nichts anderes als msbuild.

    Robbiani schrieb:

    C:\Program Files (x86)\Embarcadero\Studio\15.0\Bin\CodeGear.Cpp.Targets(2010,5): error MSB6006: "clang" exited with code -1073741819.
    

    Hast Du mal nachgeschaut, was in der Zeile steht, bzw. ob es mehr Infos zu der Fehlernummer gibt?

    MfG Stephan



  • Ciao Stephan

    Ich habe nachgeschaut. Aber es gibt leider nicht mehr Infos zum Fehler. Alles was zurückkommt habe ich eingetragen.

    Gruss Renato



  • pure Spekulation: Von -1073741819 die unteren 2 Bytes ergibt 5, das steht laut https://msdn.microsoft.com/en-us/library/ms681382(v=vs.85).aspx für ERROR_ACCESS_DENIED.

    Vielleicht mal ProcMon (SysInternals/MS) laufen lassen und gucken ob sich da irgendwas in die Richtung (access denied) findet?



  • Hallo zusammen

    egal schrieb:

    pure Spekulation: Von -1073741819 die unteren 2 Bytes ergibt 5, das steht laut https://msdn.microsoft.com/en-us/library/ms681382(v=vs.85).aspx für ERROR_ACCESS_DENIED.

    Vielleicht mal ProcMon (SysInternals/MS) laufen lassen und gucken ob sich da irgendwas in die Richtung (access denied) findet?

    Wenn ich Google nach der Fehlernummer befrage, bekomme ich einige Einträge mit Dateisystemfehler im Bezug auf Win10 und Adminrechten.

    @Robbiani
    Arbeitest Du mit Win10?
    Starte das ganze mal mit Adminrechten.

    MfG Stephan



  • [Fehlercode]
    Ich habe Blödsinn erzählt... Ich hab offensichtlich in die falsche Liste geschaut, dort waren keine so hohen Nummern wie 0xC0000005 zu finden also hab ich einfach das "C" weggelassen was natürlich Blödsinn war. Wenn man in die richtige Liste schaut findet sich dort auch 0xC0000005 STATUS_ACCESS_VIOLATION. Wieder was gelernt.


Log in to reply