Lazarus

Free Pascal => Beginners => Topic started by: Wysardry on May 15, 2019, 01:59:34 am

Title: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: Wysardry on May 15, 2019, 01:59:34 am
I am new to Pascal, but would like to be able to create GUI desktop applications using FreePascal on Windows 10 and compile them for multiple platforms without needing to jump through too many hoops.

Would Lazurus or CodeTyphoon be the best IDE for this?
Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: VTwin on May 15, 2019, 02:03:43 am
Lazarus.

Edit: Lainz gave a good answer. Windows, Macintosh, and Linux are quite straightforward. Macintosh does have a few bumps, but is in good shape and rapidly improving.

I personally do not use fpcupdeluxe or cross compile. I use a Macintosh with Windows and Linux on VirtualBox. For me that works well.
Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: Lainz on May 15, 2019, 02:04:37 am
With Lazarus will be ok. CodeTyphoon is a fork of Lazarus.

I recommend installing with fpcupdeluxe and install cross compilers. You still need Mac or Linux to test your applications in these OS.

Build modes are easy to create to add different targets to the same Lazarus project. You can target by OS and bitness for example. As well by LCL widgetset.

Or you can try pas2js and make a web app that's already cross platform.
Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: Wysardry on May 15, 2019, 02:51:23 am
Thanks. I was leaning towards Lazurus anyway, as it has been around longer.

I was just unsure whether CodeTyphoon was better suited for cross-compiling as it seems to be set up for that out of the box.
Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: Martin_fr on May 15, 2019, 03:11:39 am
With lazarus you usually use a virtual machine for Linux or Windows (depends what your main OS is). OsX needs a mac though.

But cross compiling (not sure if CT does target OsX) does not guarantee the app will run. The basics will all work across platforms (Lazarus or CT, since it is the same code). But if you write a bigger app, then with either of the 2, you need to test that app on the final system. So you do need each OS that you want to run your app under.
Hence you can install Lazarus on each OS.
Then you can just copy the project (use a revision mgmt system, like svn/git/...) and compile it.

Another factor is: CT releases are based on Lazarus trunk (trunk is untested new features). I have no idea to what extend CT does there own tests.
On the other hand, if you need latest edge, (maybe for cocoa, which afaik currently is better in trunk) then you can check if CT happens to be based on a newer revision than the current Lazarus release (bit tricky, since you need to compare 2 svn branches).

But then you could always use released Lazarus, and only for cocoa use a self build trunk based. It is easy to do. Once you have a released install, its a few steps to create a 2nd Lazarus from trunk).

And even if the CT is more up to date than Lazarus release, it will also be a snapshot. And trunk advances every day. Even CT does not follow at that rate. And Lazarus has the option to go svn.

Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: VTwin on May 15, 2019, 03:41:23 am
Just to add to that, I use the latest stable Lazarus version on Windows and Linux using VirtualBox. On Macintosh I use svn trunk to keep on top of Cocoa fixes. I imagine that will stabilize in the next few releases.
Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: Wysardry on May 15, 2019, 05:52:36 am
I would much rather use stable releases than the most recent snapshot, so that's another minus for CodeTyphoon.

What initially drew me to it was that it supposedly supports "more than 200 Target OSes" and I would like to build for Chromebook, Android and Raspberry Pi if possible (once I get the hang of everything).

I'm hoping that LCL will make this easier, as I don't plan on making anything too complex.
Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: Handoko on May 15, 2019, 07:36:17 am
CodeTyphoon makes cross compiling easier (for newbies) and they have their own IDE. Unfortunately due to the separate development, CodeTyphoon does not fully support what Lazarus can.

I do not use CodeTyphoon but I sometimes will visit their website. I maybe wrong but as far as I know they do not support Online Package Manager (OPM) and Lazarus Android Module Wizard (LAMW). These 2 tools are my favorites.

If you're interested in Android app development using Pascal, I recommend you to read these:
https://forum.lazarus.freepascal.org/index.php/topic,42527.0.html (https://forum.lazarus.freepascal.org/index.php/topic,42527.0.html)
https://forum.lazarus.freepascal.org/index.php/topic,38777.msg264428.html#msg264428 (https://forum.lazarus.freepascal.org/index.php/topic,38777.msg264428.html#msg264428)
Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: kupferstecher on May 15, 2019, 09:12:01 am
I would like to build for Chromebook, Android and Raspberry Pi if possible (once I get the hang of everything).
Raspberry Pi ist easy, the same code as for PC is working there. Android is a different thing, the LCL components like TButton etc. don't work there. Anyways a mobile application never looks like a PC application.

Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: MacWomble on May 15, 2019, 09:23:06 am
CodeTyphoon makes cross compiling easier (for newbies) and they have their own IDE. Unfortunately due to the separate development, CodeTyphoon does not fully support what Lazarus can.

That's not right at all.
CT did fully support what Lazarus can - and much more. There are also two versions of CT (Release and Lab).
The release versions are really stable and mostly the lab also. Support for CT is first class (fast and qualified).
CT is heavily tested on many different distributions and operating systems all the time.
CT uses an extended IDE with many good and usefull improvements and there is also a CT-Center with many tools Lazarus did not have. Crosscompiling is made easy.
Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: marcov on May 15, 2019, 10:01:10 am
CT did fully support what Lazarus can - and much more. There are also two versions of CT (Release and Lab).

It still has trouble recognizing it uses (some ?) lazarus codebases at all

search for lazarus synchronization information here:

https://www.pilotlogic.com/sitejoom/index.php/wiki/84-wiki/codetyphon-studio/72-codetyphon-about

or
http://www.pilotlogic.com/codetyphon/changeslog.txt

I see no mention of lazarus anywhere.

Quote
The release versions are really stable and mostly the lab also. Support for CT is first class (fast and qualified).

I regularly look at the forum, and I'm somewhat underwhelmed. "lively" is different. Maybe I'm missing something.

Quote
CT uses an extended IDE with many good and usefull improvements and there is also a CT-Center with many tools Lazarus did not have. Crosscompiling is made easy.

The ctcenter list  (https://www.pilotlogic.com/sitejoom/index.php/wiki/147-wiki/tools/ctc-tools) looks quite familiar.  The first few are standard FPC  (though we removed upx with 3.0 due to upxed files triggering antiviruses more than it is worth) and a few one form utils.

The settingstools is maybe the only a bit more complex. It also demonstrates the more core tenets of CT, the crosscompilation.

I see Codetyphon more as an integration project of external codebases and crosscompile tool, than a standalone development project. From what I see the own "tools" are fairly simple and riskless.

Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: Handoko on May 15, 2019, 01:41:12 pm
CodeTyphoon makes cross compiling easier (for newbies) and they have their own IDE. Unfortunately due to the separate development, CodeTyphoon does not fully support what Lazarus can.

That's not right at all.
CT did fully support what Lazarus can - and much more.

Last time I tried CT was some years ago. Did you mean CT now already supports OPM and LAMW?
Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: Martin_fr on May 15, 2019, 02:57:42 pm
Last time I tried CT was some years ago. Did you mean CT now already supports OPM and LAMW?

Since they renamed all packages, OPM would not work for them out of the box. Because packages from the online repro, require Lazarus packages by their original name.
So to make it working, they need to rename all requirements, or have there own online repro.
Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: Peter H on May 15, 2019, 03:11:09 pm
I dont think they want to support OPM.
They have almost all OPM packages in their CodeOcean and in their BigIDE.

If you look to their site, there is no impressum and I think therefore it is not a real company but a greek university training project, where students are trained to manage large projects.
I think they want to do their own stuff and not participate in Lazarus or FPC open source development.
This is what I believe, not what I know.

This said, they put the bleeding edge compiler to serious use and this is probably very good.
FPC 3.3.1 works very good but there are problems with gdb, the same problems I have seen when I tried fpc 3.3.1 with lazarus
Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: Wysardry on May 15, 2019, 06:23:51 pm
Does anyone know if it is possible to install both Lazarus and CodeTyphoon on Windows 10 together without them clashing?

I'm not sure if either adjusts the Windows path settings, which might cause one or the other to use the wrong compiler.
Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: Peter H on May 15, 2019, 06:30:46 pm
There is no problem I know of. It doesnt interfere with other FPC/Lazarus installations.

It behaves like a portable software or like an installation made with fpcupdeluxe.
On windows Installation of directx is required.

The big IDE compiles only on a 64 bit OS.
In a 32 bit OS only the small IDE is compiled. But after this you can compile the medium sized IDE on a 32 bit OS.
Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: Wysardry on May 15, 2019, 07:16:15 pm
Thanks. I'll most likely start learning with fccupdeluxe and Lazarus for Windows 10 applications using LCL and possibly install CodeTyphoon later if I have issues with compiling for different platforms.

We're moving house soon, so progress will likely be slow as I won't have as much free time as I would like.
Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: Zoran on May 15, 2019, 09:29:14 pm
I think that cross compilation is often overvalued.

You should be able to test all targets to which you want to distribute your application. You wouldn't offer untested binaries, would you?

And for proper testing, you need to install all OS-s which your application targets (on either real or virtual machine).
Then, when you have another OS installed anyway, isn't it better to install the IDE there and compile your application there natively?

Having said that, I'm not saying that you might not need it sometimes after all -- there are targets where Lazarus IDE cannot be installed, so development must be done on another OS, but if the IDE can be installed, better avoid cross compiling.

So, think well if you really need it -- (apart from 32-bit to 64-bit on Windows, which is a simple setup on plain Lazarus distribution), cross-compiling between main OS-s (Linux, Windows, OSX) is hardly ever needed.
Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: ASBzone on May 15, 2019, 09:31:10 pm
Thanks. I'll most likely start learning with fccupdeluxe and Lazarus for Windows 10 applications using LCL and possibly install CodeTyphoon later if I have issues with compiling for different platforms.

I started using FPCupDeluxe regularly just a few months back, and it has been awesome to manage.   I'm only building for Windows x86 & x64 targets, but the cross compiling is pretty easy nonetheless.


We're moving house soon, so progress will likely be slow as I won't have as much free time as I would like.

All the best with that.  :)   

Lots of work there.

Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: VTwin on May 16, 2019, 02:42:56 am
I agree with Zoran, at least in my experience. While the interface code is perhaps 98% cross platform on Win, Lin, and Mac, there are little differences that should be checked. Sometimes just control placements that may be messed up because of differences in native control sizes. I've also found Windows to throw math exceptions that Mac does not.

On a side note, I know a developer who uses Xojo (aka REALbasic), and releases Linux cross-compiled binaries without any testing at all. In my mind, that is irresponsible.

In terms of getting started, just download the latest stable Windows version. Installation is straightforward, no hiccups, it works great out of the box. Don't worry about  FPCupDeluxe or CT. After you get some time in, you can look further into cross-platform options.
Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: Wysardry on May 16, 2019, 03:31:51 am
Mostly, compiling for other platforms would be for the benefit of others who might wish to use the finished program. The majority of those people aren't likely to want to compile the source code themselves, but some might be willing to test new releases of executable files.

I do have a ten year old laptop with Windows 7 on that I could put Linux on instead at some point, but it's fairly slow so it would likely be quicker to cross-compile on the faster Windows 10 machine.

I also have a Kindle Fire tablet, although I'd need to research how to install non-Amazon apps on that.

Unless I see a cheap Mac for sale at the right time I probably won't be able to test for that platform myself.
Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: Zoran on May 16, 2019, 08:44:58 am
Unless I see a cheap Mac for sale at the right time I probably won't be able to test for that platform myself.

And of course, you won't make and distribute cross-compiled binaries for Mac.
Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: VTwin on May 16, 2019, 04:15:45 pm
I do have a ten year old laptop with Windows 7 on that I could put Linux on instead at some point, but it's fairly slow so it would likely be quicker to cross-compile on the faster Windows 10 machine.

I suggest installing VirtualBox on the Windows 10 machine with Ubuntu. 
Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: MacWomble on May 16, 2019, 04:29:10 pm
Quote
Does anyone know if it is possible to install both Lazarus and CodeTyphoon on Windows 10 together without them clashing?

Yes, it's possible. But CT uses renamed Project files and some libraries are also renamed (I like their name schema)

There are tools to convert projects between Lazarus and CT.
Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: Handoko on May 16, 2019, 04:34:38 pm
I do have a ten year old laptop with Windows 7 on that I could put Linux on instead at some point, but it's fairly slow so it would likely be quicker to cross-compile on the faster Windows 10 machine.

I suggest installing VirtualBox on the Windows 10 machine with Ubuntu. 

For medium low end computer, I suggest to use Ubuntu Mate. It's more lightweight than Ubuntu and Kubuntu.

Xubuntu and Lubuntu look a bit old, but they are even more lightweight than Ubuntu Mate.
Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: wp on May 16, 2019, 04:34:48 pm
I do have a ten year old laptop with Windows 7 on that I could put Linux on instead at some point, but it's fairly slow so it would likely be quicker to cross-compile on the faster Windows 10 machine.
You'll still have to test your Linux version, compilation is only half of the story. I also have a 10 year old notebook which was ok with Windows 7 but too slow for and not fully supported by Win 10. I installed a light-weight Linux (Mint Xfce), and now it is fully usable again, much faster than the many virtual machines that I have on my main PC.
Title: Re: Lazurus vs CodeTyphoon for cross-compiling GUI applications?
Post by: Wysardry on May 16, 2019, 05:10:46 pm
I'm not looking forward to choosing a Linux distribution to install, but realistically that will be months away anyway. I'll most likely look into what software I'd like to install and which flavours they support first.

Performance shouldn't really be an issue - even for an older machine - as the programs I have in mind wouldn't be much more complex than something like Thingamablog (http://www.thingamablog.com/) or ADRIFT (http://www.adrift.co/).