[Lazarus] Compile project release with LCL custom optimization

patspiper patspiper at gmail.com
Tue Apr 16 15:34:45 CEST 2013


On 16/04/13 10:38, Mattias Gaertner wrote:
> On Tue, 16 Apr 2013 09:50:48 +0300
> patspiper <patspiper at gmail.com> wrote:
>
>> On 15/04/13 23:18, Mattias Gaertner wrote:
>>> On Mon, 15 Apr 2013 21:31:32 +0300
>>> Zaher Dirkey <parmaja at gmail.com> wrote:
>>>
>>>> On Mon, Apr 15, 2013 at 9:21 PM, Mattias Gaertner <nc-gaertnma at netcologne.de
>>>>> wrote:
>>>>> To get more variations in output directories you have to alter the
>>>>> packages (lpk).
>>>>> To add options to packages as well.
>>>>>
>>>>> Eventually such additions will be configurable in the IDE
>>>> ​Directories to put precompiled units *.o​ of Packages, when compile the
>>>> project it take the right .o Depend Release or Debug, so it is
>>>> IDE/Envirement mechanism, Delphi do that for VCL, and Visual Stutio.
>>> Some people want Debug/Release, some Debug/Profiling/Release, some
>>> Experimental/Normal, some Debug/Release x WidgetSet and so forth.
>>> IMO Lazarus should provide such flexibility.
>> Can the Lazarus core packages have a macro in their unit output
>> directory in order to "inherit" the correct path upon rebuilding the
>> project or the IDE itself?
>> ex for LCL:
>> ../units/$(TargetCPU)-$(TargetOS)/$(LCLWidgetType)/$(BuildModeFolder)
>> LCL has $(IDEBuildOptions) in its customs options. I am not sure if it
>> inherits macros as well.
>> Is there an equivalent $(ProjectBuildOptions)?
>>
>> The above would be the 1st step towards such a solution.
> And who changes all the other third party packages?
1st, to clarify, $(BuildModeFolder) is a macro derived from the actual 
build mode name (or some user defined value in each build mode).

In this case, 3rd party packages would have to be handled either by the 
package maintainer or by the user.
>
> And some developers may prefer this:
> /Developer/$(BuildMode)/$(PkgName)
>
> I think an override would be more flexible. It should also a contain a
> scope option. To handle some packages differently.
An override would be super and very flexible! It would handle all packages.

However, maybe a distinction (separate settings) should be done for the 
user project/packages, Lazarus core packages (LCL, SynEdit, ...), and 
FPC packages (FCL). The reason is that a user may need to debug his code 
only, his code + Lazarus' code, or his code + Lazarus' code + FPC code. 
Stepping over FCL code is almost always the case for regular users and 
probably Lazarus devs.

IIRC, Delphi has Debug and Release dcu's for the VCL.

Stephano




More information about the Lazarus mailing list