[Lazarus] Using event driven components in console application

Mark Morgan Lloyd markMLl.lazarus at telemetry.co.uk
Wed Nov 4 12:30:28 CET 2015


JuuS wrote:
> On 11/04/2015 09:48 AM, Mark Morgan Lloyd wrote:
>> When building the IDE you'd normally use  make bigide  or similar which
>> would use the platform defaults, but depending on what libraries etc.
>> were available you could also use e.g.  make LCL_PLATFORM=qt bigide
>>
> Hi,
> 
> This question / discussion is also very interesting to me (warning
> possible dumb questions ahead).
> 
> I am still very vague on the widget type/set in my gnu/linux education.
> I'm kub14.04, the ide then uses gtk2, all automatic.

If that's Kububtu, I'd expect it to be using KDE which implies you've 
already got Qt. Assuming that you have- or can add- libqt4pas-dev then 
you can build the Lazarus IDE etc. for Qt.

> But my questions are:
> 
> Why would I want to use qt, gtk3, etc? Yes, of course for different
> platforms but which platforms (Fedora? Debian? ?? ).

Depends massively on the version of whichever distro you've selected, 
since these will typically bundle different versions of Gnome and it's 
this that drives GTK forwards. I'm sure you've seen Torvalds' rants on 
the issue.

It also depends on the version of Lazarus you're using since of 
necessity this tracks GTK and Qt, and to a much lesser extent on the 
version of FPC for the same reason.

In general, Debian "Lenny" is OK for GTK and GTK2. Debian "Squeeze" and 
"Wheezy" are OK for GTK2 and Qt. My experience with Lazarus "Jessie" is 
that Qt is somewhat more reliable than GTK, although I'm sure I'll take 
flak for saying so.

Can't remember where I've got to with "Stretch". Recent versions of 
Lazarus have started making demands of Qt that are no longer satisfied 
by the one with "Squeeze".

> Does this mean then that what I have developed in gtk2 will ==NOT== run
> properly in some gnu-L flavours? Which ones? How do I tell?

Yes. Pass. Badly.

> I guess setting up VMs for my targets is a good solution to find out if
> there is a problem but I can't always tell which widgetset is right for
> which flavour...?
> 
> I have googled this before but have found nothing that has enlightened me.

The first problem to solve is pairing up which version of FPC works best 
with a given version of Lazarus. After experimentation, I've got

/usr/local/bin/lazarus-0.9.24+2.2.4
/usr/local/bin/lazarus-0.9.26+2.2.4
/usr/local/bin/lazarus-0.9.28+2.4.0
/usr/local/bin/lazarus-0.9.30+2.4.4
/usr/local/bin/lazarus-1.0.0+2.4.4
/usr/local/bin/lazarus-1.0.0+2.6.0
/usr/local/bin/lazarus-1.0.8+2.6.2
/usr/local/bin/lazarus-1.0.14+2.6.4
/usr/local/bin/lazarus-1.2.6+2.6.4
/usr/local/bin/lazarus-1.4.2+3.0.0
/usr/local/bin/lazarus-gtk1-compatible

The last of those is actually 0.9.24.1 with FPC 2.2.4, which is about as 
old as is viable. I can't say without significant digging in my build 
scripts which of those are also good for Qt. I really can't say which 
are good for different versions of Windows (except that if you really do 
have to build for NT you'll need something like 0.9.26.2 + 2.2.4) or for 
OS X. Anybody into SPARC Solaris should find 1.4.2 + 3.0.0 OK.

The best thing to do, in my opinion, is to build as many variants of 
your binary as possible for a given platform, and then find out what 
doesn't work. To try to keep that doable I've got a script set up which 
points each of the combinations listed above at its own configuration 
file, so that I don't find myself chasing shadows because the underlying 
FPC version is suddenly wrong.

-- 
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]




More information about the Lazarus mailing list