Einzelnen Beitrag anzeigen

Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.838 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: Delphi 2009 Projekt im Batch kompilieren (OHNE IDE!)

  Alt 14. Dez 2009, 15:02
Zitat von kaju74:
Hier sehe ich, das mit dem Parameter "/p:Configuration=Release" bestimmt werden kann, ob das Projekt als "Debug" oder "Release" gebuildet werden kann. Sowas wollte ich auch in einem Verbund aus TeamCity und MSBuild machen, weiß aber bisher nicht, wo ich das eintragen kann/soll. Das Ganze läuft auf einer VM (BuildServer)...lokal hatte ich mit msbuild noch nichts gemacht, sonst wäre mir diese Idee vielleicht vonselber gekommen
Wir haben auf unserem BuildServer mit der Verwendung von msbuild die Unterschiede zu VisualStudio und Delphi deutlich reduzieren können.

Die einzelnen Properties und Targets sind in den *.dproj und *.targets Dateien definiert.
Letztere werden von den *.dproj Dateien referenziert.

JclPackagesD110.groupproj (Beispiel JEDI JCL Projekt)
...
<Target Name="Build">
<CallTarget Targets="Jcl;JclVcl;JclContainers;JclBaseExpert;Jc lDebugExpert;JclFavoriteFoldersExpert;
JclProjectAnalysisExpert;JclRepositoryExpert;JclSI MDViewExpert;JclStackTraceViewerExpert;JclVersionC ontrolExpert" />
</Target>
...
oder
Jcl.dproj (Beispiel JEDI JCL Projekt)
...
<Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
...
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
...
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
...
<Import Project="$(MSBuildBinPath)\Borland.Delphi.Targets" />
...
oder
Borland.Delphi.Targets (gehört z.B. zu Delphi 2007)
...
<Target Name="default" DependsOnTargets="Make"/>
...
Wie man erkennen kann, sind die default Optionen: /t:Make /p:Configuration=Release /platform=AnyCPU
Du kannst im Delphi ja eigene Gruppen definieren und ansteuern. Da in den Gruppen auf DEFINES, Directories, ... gesetzt werden können, wäre auch so was wie
Code:
msbuild SuperProjekt.dproj /t:build /p:Configuration=Kunde1
msbuild SuperProjekt.dproj /t:build /p:Configuration=Kunde2
msbuild SuperProjekt.dproj /t:build /p:Configuration=Kunde3
denkbar.
Via Define werden dann z.B. Kundenspezifische Änderungen kompiliert.
Nach dem Build Liegen dann z.B. in D:\SuperProjekt\Release\Kunde1, D:\SuperProjekt\Release\Kunde2, D:\SuperProjekt\Release\Kunde3 die ausführbaren Dateien.


ruf mal msbuild mit dem Parameter /help auf

Code:
M:\d11_test\shared\Baselines\JEDI\JCL\Delphi11\Source\packages>msbuild /help

Microsoft (R)-Buildmodul, Version 2.0.50727.3053
[Microsoft .NET Framework, Version 2.0.50727.3082]
Copyright (C) Microsoft Corporation 2005. Alle Rechte vorbehalten.

Syntax:             MSBuild.exe [Optionen] [Projektdatei]

Beschreibung:       Erstellt die in der Projektdatei angegebenen Ziele.
                     Wenn keine Projektdatei angegeben ist, durchsucht MSBuild
                     das aktuelle Arbeitsverzeichnis nach einer Datei mit
                     der Dateiendung "proj" und verwendet diese Datei.

Schalter:

  /help             Zeigt diesen Hilfetext an. (Kurzform: /? oder /h)

  /nologo           Startbanner und Copyrightmeldung nicht anzeigen.

  /version          Nur Versionsinformationen anzeigen. (Kurzform: /ver)

  @<Datei>          Befehlszeileneinstellungen aus einer Textdatei einfügen.
                     Wenn Sie mehrere Antwortdateien festlegen möchten,
                     müssen Sie jede Datei einzeln angeben.

  /noautoresponse   Die Datei "MSBuild.rsp" nicht automatisch einfügen.
                     (Kurzform: /noautorsp)

  /target:<Ziele>   Diese Ziele in diesem Projekt erstellen. Verwenden Sie ein
                     Semikolon oder ein Komma, um mehrere Ziele zu trennen,
                     oder geben Sie jedes Ziel einzeln an. (Kurzform: /t)
                     Beispiel:
                       /target:Resources;Compile

  /property:<n>=<v> Diese Eigenschaften auf Projektebene festlegen oder
                     überschreiben.
                     <n> ist der Eigenschaftenname, und <v> ist der
                     Eigenschaftenwert. Verwenden Sie ein Semikolon oder ein
                     Komma, um mehrere Eigenschaften zu trennen, oder
                     geben Sie jede Eigenschaft einzeln an. (Kurzform: /p)
                     Beispiel:
                       /property:WarningLevel=2;OutDir=bin\Debug

  /logger:<Protokollierung>
                     Diese Protokollierung verwenden, um Ereignisse
                     von MSBuild zu protokollieren.
                     Wenn Sie mehrere Protokollierungen angeben möchten, geben
                     Sie jede einzeln an.
                     Die Syntax für <Protokollierung> ist:
                        [<Protokollierungsklasse>,]<Protokollierungsassembly>
                        [;<Protokollierungsparameter>]
                     Die Syntax für <Protokollierungsklasse> ist:
                        [<partieller oder vollständiger Namespace>.]
                        <Protokollierungsklassenname>
                     Die Syntax für <Protokollierungsassembly> ist:
                        {<Assemblyname>[,<starker Name>] | <Assemblydatei>}
                     Die <Protokollierungsparameter> sind optional und werden
                     genau so an die Protokollierung weitergegeben, wie
                     Sie sie eingeben. (Kurzform: /l)
                     Beispiele:
                       /logger:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral
                       /logger:XMLLogger,C:\Loggers\MyLogger.dll;OutputAsHTML

  /verbosity:<Ebene> Legt den Ausführlichkeitsgrad der Informationen
                     im Ereignisprotokoll fest.
                     Die verfügbaren Ausführlichkeitsgrade sind: q[uiet],
                     m[inimal], n[ormal], d[etailed] und diag[nostic].
                     (Kurzform: /v)
                     Beispiel:
                       /verbosity:quiet

  /consoleloggerparameters:<parameters>
                     Parameter für die Konsolenprotokollierung.
                     (Kurzform: /clp)
                     Die verfügbaren Parameter sind:
                        PerformanceSummary - Anzeigen der für Aufgaben, Ziele
                        und Projekte verwendeten Zeit.
                        NoSummary - keine Anzeige der zusammengefassten Fehler
                        und Warnungen am Ende.
                        NoItemAndPropertyList - keine Anzeige derListe
                        der Elemente und Eigenschaften beim Start jedes
                        Projektbuilds.
                      Beispiel:
                        /consoleloggerparameters:PerformanceSummary;NoSummary

  /noconsolelogger  Die Standardkonsolenprotokollierung deaktivieren.
                     Ereignisse werden nicht in der Konsole protokolliert.
                     (Kurzform: /noconlog)

  /validate         Das Projekt mithilfe des Standardschemas validieren.
                     (Kurzform: /val)

  /validate:<Schema> Das Projekt mithilfe des Standardschemas validieren.
                     (Kurzform: /val)
                     Beispiel:
                       /validate:MyExtendedBuildSchema.xsd

Beispiele:

        MSBuild MyApp.sln /t:Rebuild /p:Configuration=Release
        MSBuild MyApp.csproj /t:Clean /p:Configuration=Debug
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat