AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi MSBuild für mehrere Targets mit unterschiedlichen Defines
Thema durchsuchen
Ansicht
Themen-Optionen

MSBuild für mehrere Targets mit unterschiedlichen Defines

Ein Thema von casiosmu · begonnen am 20. Jul 2021 · letzter Beitrag vom 29. Jul 2021
Antwort Antwort
casiosmu

Registriert seit: 7. Dez 2017
3 Beiträge
 
#1

AW: MSBuild für mehrere Targets mit unterschiedlichen Defines

  Alt 20. Jul 2021, 17:34
Ok, CaseSensitiv habe ich beachtet, Leerzeichen gibt es keine.

p:Configuration werde ich bei nächster Gelegenheit mal probieren (verwende eine dproj, Delphi 10.2).

Delphi erzeugt in der .dproj-Datei irgendwie automatisch 'Cfg_X'-Aliase (hier gekürzt):
Code:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <ProjectGuid>...</ProjectGuid>
        <MainSource>...</MainSource>
        <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
        <Base>True</Base>
        <Config Condition="'$(Config)'==''">Debug</Config>
        <Platform Condition="'$(Platform)'==''">Win64</Platform>
        <TargetedPlatforms>3</TargetedPlatforms>
        <AppType>Application</AppType>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
        <Base>true</Base>
    </PropertyGroup>
    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
        <Base_Win32>true</Base_Win32>
        <CfgParent>Base</CfgParent>
        <Base>true</Base>
    </PropertyGroup>
    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
        <Base_Win64>true</Base_Win64>
        <CfgParent>Base</CfgParent>
        <Base>true</Base>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_1)'!=''">
        <Cfg_1>true</Cfg_1>
        <CfgParent>Base</CfgParent>
        <Base>true</Base>
    </PropertyGroup>
    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
        <Cfg_1_Win32>true</Cfg_1_Win32>
        <CfgParent>Cfg_1</CfgParent>
        <Cfg_1>true</Cfg_1>
        <Base>true</Base>
    </PropertyGroup>
    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win64)'!=''">
        <Cfg_1_Win64>true</Cfg_1_Win64>
        <CfgParent>Cfg_1</CfgParent>
        <Cfg_1>true</Cfg_1>
        <Base>true</Base>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_2)'!=''">
        <Cfg_2>true</Cfg_2>
        <CfgParent>Base</CfgParent>
        <Base>true</Base>
    </PropertyGroup>
    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
        <Cfg_2_Win32>true</Cfg_2_Win32>
        <CfgParent>Cfg_2</CfgParent>
        <Cfg_2>true</Cfg_2>
        <Base>true</Base>
    </PropertyGroup>
    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win64)'!=''">
        <Cfg_2_Win64>true</Cfg_2_Win64>
        <CfgParent>Cfg_2</CfgParent>
        <Cfg_2>true</Cfg_2>
        <Base>true</Base>
    </PropertyGroup>

    <PropertyGroup Condition="'$(Base)'!=''">
        <DCC_Define>_WINDOWS_;$(DCC_Define)</DCC_Define>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Cfg_1)'!=''">
        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Cfg_2)'!=''">
        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
    </PropertyGroup>
</Project>
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.555 Beiträge
 
Delphi 12 Athens
 
#2

AW: MSBuild für mehrere Targets mit unterschiedlichen Defines

  Alt 20. Jul 2021, 23:09
Cfg_X sind keine Aliase.

Das sind einfch "Variablen", welche vorher gesetzt wurden,
wie z.B.
<Cfg_1>true</Cfg_1>
und dann nachfolgend
<PropertyGroup Condition="'... or '$(Cfg_1)'!='true'">



Cfg_1 und Cfg_2 sind "standardmäßig" die Configs "Release" und "Debug",
aber merke dir nicht was was ist, da Delphi das schon öfters mal getauscht hat (was zuerst angelegt wurde).

Das sind quasi die internen "durchnummeierten" Konfigurationen von der Projektverwaltung.

Die Parameter wie "Config" und "Platform" werden genommen, um eine der "Konfigurationen" auszuwählen,
dann wird damit Konfiguration und deren übergeordnete "Parent"-Konfigurationen "aktiviert", also deren Variablen z.B. auf True gesetzt,
um anschließend mit diesen Variablen die eigentlichen Settings und Aktionen zu laden.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (20. Jul 2021 um 23:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.734 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: MSBuild für mehrere Targets mit unterschiedlichen Defines

  Alt 21. Jul 2021, 10:52
p:Configuration werde ich bei nächster Gelegenheit mal probieren (verwende eine dproj, Delphi 10.2).
p:Configuration war nur bei Delhpi 2007. Alle neueren Versionen verwenden p:Config.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.555 Beiträge
 
Delphi 12 Athens
 
#4

AW: MSBuild für mehrere Targets mit unterschiedlichen Defines

  Alt 21. Jul 2021, 11:00
Bei 2006 nicht? (erstes Win32-Delphi mit der neuen IDE)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.734 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: MSBuild für mehrere Targets mit unterschiedlichen Defines

  Alt 21. Jul 2021, 11:27
Bei 2006 nicht? (erstes Win32-Delphi mit der neuen IDE)
Das erste Win32 Delphi mit der neuen IDE war Delphi 2005. Aber Delphi 2005 und 2006 verwendeten noch nicht msbuild und .dproj-Dateien sondern .bdsproj-Dateien in einem anderen Format.

Siehe Delphi Wiki
Thomas Mueller
  Mit Zitat antworten Zitat
casiosmu

Registriert seit: 7. Dez 2017
3 Beiträge
 
#6

AW: MSBuild für mehrere Targets mit unterschiedlichen Defines

  Alt 29. Jul 2021, 16:39
Ha, habs gefunden

Und zwar scheint das 'gute' Delphi/MsBuild mit meinem bisherigen Aufruf
Code:
msbuild "%1" /p:config=%3 /p:DCC_ExeOutput="%2"
nur einen Compile gemacht zu haben, aber keinen Build ! (Und da sich die Datei ja nicht geändert hat, nur der Ablauf in ihr anhand der IFDEF, wird sie beim Compile nicht neu erzeugt, grrr)

Wenn ich das explizit angebe, dann funktioniert es auch (inspiriert von hier )
Code:
msbuild "%1" /p:Config=%3,Platform=Win64 /t:Build /p:DCC_ExeOutput="%2"
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz