[Lazarus] How would you organize build directories for different versions?
Mattias Gaertner
nc-gaertnma at netcologne.de
Thu Jul 14 13:17:34 CEST 2011
Graeme Geldenhuys <graemeg.lists at gmail.com> hat am 14. Juli 2011 um 12:39
geschrieben:
> On 07/14/2011 12:20 PM, Mattias Gaertner wrote:
> > > And that can cause it's own set of headaches. Yes it saves on disk space
> > No, it needs more disk space, because you have several output directories
> > per
> > package, .e.g. targetcpu-targetos.
>
> I think you missunderstood my statement. I meant that using Lazarus
> Packages allows you to save on a bit of disk space. So if 10 projects
> are using the LCL package, you only have one set of target *.ppu files
> for the LCL package.
True.
I compared to common Delphi setting of having one global output directory.
>
> > AFAIK it is quite the opposite.
> > If all project options would be applied to all packages, that means
> > applying
> > options to code you have not written, you can get very undesirable results.
>
> Here is an example:
> I have a project that uses 'fpgui', 'onguard' and 'tiopf'. If I compile
> each of those libraries with unoptimized and very verbose compiler
> settings - that is helpful while developing and for debugging. But now I
> want to generate a release build of my project. I can't just toggle the
> release build settings in by project settings, because those will not be
> applied to the 3 libraries (lazarus packages) I use. So I have to
> individually change the settings for each of those 3 packages and
> recompile them, then recompile my project.>
> Whereas if I used a single unit output directory, my project compiler
> settings will be applied to all source code (even the 3 libraries I use)
> when I include the -B compiler parameter. Now ALL source code will have
> the optimized "release build" compiler settings applied to them. One
> change of compiler settings and one re-compile.
You can define a project macro and use that in each package custom options.
See here
http://wiki.lazarus.freepascal.org/Macros_and_Conditionals#Add_a_release.2Fdebug_mode
Using build modes you get a button in the IDE tool bar, so switching
release/debug mode is just a mouse click away.
The -B option is automatically applied by the IDE as well.
>
>
> > The main idea for separate output directories is that you can be sure that
> > the
> > package units are compiled with the options the package developer tested
> > it.
>
> I am the package developer and the project developer. So I guess my use
> case must be unique then [though I doubt that].
It's not unique. There is no question that a one-man-show makes the work flow
very simple.
But in a collaborative environment you need some rules.
> > > The other problem being that sometimes Lazarus doesn't detect unit
> > > changes and doesn't "auto" recompile those related packages. Also
> > > causing huge frustration.
>[...]
> Yes, and I run the Lazarus IDE via the command line (as requested) for a
> week without any new information to report. The issue is not instantly
> reproducible, so it is rather difficult to be more "helpful" with the
> bug report.
If it so difficult to reproduce, why is it a "huge frustration"?
It is a huge frustration to read such mails.
>[...]
Mattias
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20110714/b698593f/attachment-0003.html>
More information about the Lazarus
mailing list