Using the LCL without Lazarus

From Free Pascal wiki
Revision as of 17:33, 17 November 2014 by BigChimp (talk | contribs) (link to lazbuild. Much easier.)

How to use the LCL without the Lazarus IDE?


Requirements

Things you'll need:

  • Free Pascal 2.4.4
  • Lazarus 0.9.30

Tested on Microsoft Windows XP SP3.

Warning-icon.png

Warning: This article is Windows-oriented you will need to adjust the adjust paths etc for other operating systems as the LCL directories will also differ

Note-icon.png

Note: #Lazarus 1.2.6 has different dependencies between units and the method described here does not work.

Introduction

You aren't forced to use the Lazarus IDE if you want to develop with the LCL. You can use it directly from the Free Pascal Compiler.

The installation process

First download Free Pascal 2.4.4 and the Lazarus 0.9.30 and install them.

Our FPC install directory will be this

X:\FPC\2.4.4\

"X" is the drive letter

The Lazarus install directory will be this

X:\Lazarus\

Then copy the lcl folder.

Copy this folder:

X:\Lazarus\lcl

Paste it to this location:

X:\FPC\2.4.4\units\i386-win32\lcl

Now you can remove Lazarus from your computer. In the next section we'll inform the FPC that the LCL has been installed.

The settings

Start the FP IDE (included with FPC). Click on the Options menu and then the Directories menu item. Select the Units tab (default).

Add these directories:

X:\FPC\2.4.4\units\i386-win32\lcl
X:\FPC\2.4.4\units\i386-win32\lcl\units\i386-win32
X:\FPC\2.4.4\units\i386-win32\lcl\widgetset
X:\FPC\2.4.4\units\i386-win32\lcl\interfaces\win32

Then click on the Include files tab.

Add this directory:

X:\FPC\2.4.4\units\i386-win32\lcl\include

Now, you should be able to use the LCL. However, above should be done for all Modes in Options if you plan to switch the mode in the future. It is easier to edit fp.cfg directly. In the next section we'll try out creating a form with a button on it.

The code

This is the base code:

 
program lcl_base;
{$mode objfpc} {$H+}
uses
  Classes, Interfaces, Forms;
  //Interfaces is important
begin
end.

First we'll create a form:

program lcl_base;
{$mode objfpc} {$H+}
uses
  Classes, Interfaces, Forms;
     //Interfaces is very important
type
  TForm1 = class(TForm)
  end;
     //Our Form class
var
  Form1: TForm1;
     //Declare the Form1
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
  //We do exactly the same as Lazarus does
end.

And then we'll create a nice button;

program lcl_base;
{$mode objfpc} {$H+}
 
uses
  Classes, Interfaces, Forms, StdCtrls;
  //Interfaces is very important

type
  TForm1 = class(TForm)
    Button1: TButton;
  end;
  //Our Form class

var
  Form1: TForm1;
  //Declare the Form1

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Form1.Button1 := TButton.Create(Form1);
  With Form1.Button1 Do 
  begin
    Parent := Form1;
    Visible := TRUE;
    Left := 10;
    Top := 10;
    Width := 100;
    Height := 100;
    Caption := 'PRESS ME';
  end;
  Application.Run;
  //We do exactly the same as Lazarus does
end.

That's it. Now, you are able to use the LCL without the Lazarus IDE.

Lazarus 1.2.6

In order to compile the above example you will need access to units from folder X:\lazarus\components\lazutils. The FP compiler would build the application with c like operators on.


Alternatives

If your aim is to compile Lazarus projects without using the Lazarus IDE, you can install Lazarus and use the command line lazbuild tool to compile projects.