views:

230

answers:

1

does anyone know of any good description of delphi's build system? (i know it's using MS Build.) i'm using delphi 2009.

i wanted to set up a variation of the Debug build configuration that (often) has different defines (d2009 seems to call them "preprocessor symbols").

the problem i'm having is that--even though i turned off "inherit" for "Base" and "Debug"--have only very limited control. for example, i can't get rid of FastMM_.

    <PropertyGroup>
        <ProjectGuid>{D7FE7347-8E2C-438C-A275-38B8DA9244B0}</ProjectGuid>
        <ProjectVersion>12.0</ProjectVersion>
        <MainSource>oca.dpr</MainSource>
        <Config Condition="'$(Config)'==''">Debug</Config>
        <DCC_DCCCompiler>DCC32</DCC_DCCCompiler>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
        <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="'$(Config)'=='Debug' or '$(Cfg_2)'!=''">
        <Cfg_2>true</Cfg_2>
        <CfgParent>Base</CfgParent>
        <Base>true</Base>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Base)'!=''">
        <DCC_StringChecks>off</DCC_StringChecks>
        <DCC_MinimumEnumSize>4</DCC_MinimumEnumSize>
        <DCC_RangeChecking>true</DCC_RangeChecking>
        <DCC_IntegerOverflowCheck>true</DCC_IntegerOverflowCheck>
        <DCC_UNIT_PLATFORM>false</DCC_UNIT_PLATFORM>
        <DCC_SYMBOL_PLATFORM>false</DCC_SYMBOL_PLATFORM>
        <DCC_DcuOutput>.\dcu</DCC_DcuOutput>
        <DCC_UnitSearchPath>C:\Prj\Lib\AutoQADocking\Delphi2009.Win32\Lib;$(BDS)\Source\DUnit\src;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
        <DCC_Optimize>false</DCC_Optimize>
        <DCC_DependencyCheckOutputName>oca.exe</DCC_DependencyCheckOutputName>
        <DCC_ImageBase>00400000</DCC_ImageBase>
        <DCC_UnitAlias>WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;$(DCC_UnitAlias)</DCC_UnitAlias>
        <DCC_Platform>x86</DCC_Platform>
        <DCC_E>false</DCC_E>
        <DCC_N>false</DCC_N>
        <DCC_S>false</DCC_S>
        <DCC_F>false</DCC_F>
        <DCC_K>false</DCC_K>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Cfg_1)'!=''">
        <DCC_PentiumSafeDivide>true</DCC_PentiumSafeDivide>
        <DCC_Optimize>true</DCC_Optimize>
        <DCC_IntegerOverflowCheck>false</DCC_IntegerOverflowCheck>
        <BRCC_Defines>MadExcept;FastMM;$(BRCC_Defines)</BRCC_Defines>
        <DCC_AssertionsAtRuntime>false</DCC_AssertionsAtRuntime>
        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
        <DCC_DebugInformation>false</DCC_DebugInformation>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Cfg_2)'!=''">
        <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
        <BRCC_Defines>FastMM</BRCC_Defines>
        <DCC_DebugDCUs>true</DCC_DebugDCUs>
        <DCC_MapFile>3</DCC_MapFile>
        <DCC_Define>DEBUG;FastMM_;madExcept;$(DCC_Define)</DCC_Define>
    </PropertyGroup>

i even had to edit it today with notepad to get rid of a DCC define that the delphi UI doesn't seem to give access to. (it said "From Delphi Compiler" for the item i couldn't remove.)

does anyone know a good primer on the use of this feature in delphi?

thank you!

+1  A: 

Did you look at Delphi's own documentation? (Not this is a help file link and not a web URL.) It has some pretty good discussion of the topic.

You might also look at the MSDN section on MSBuild. The link is to the start of the MSBuild Reference topic.

Using MSBuild in Delphi is the same exact thing as using MSBuild for any other environment. It is, after all, a Microsoft tool (distributed with the .NET Framework SDK, IIRC).

Ken White
i seem to be having the difficulty with the delphi UI to control ms build. it seemed simple enough until i actually tried to use it. didn't find useful docs for an overview of it. of course, this comes up at a time when i am too busy to give it due attention. thank you for your help!
X-Ray