Difference between revisions of "Lazarus project files"

From Free Pascal wiki
Jump to navigationJump to search
m (→‎Project files extensions: Fixed fdm > dfm typo)
 
(3 intermediate revisions by the same user not shown)
Line 9: Line 9:
 
! directory name !! created || VCS || description
 
! directory name !! created || VCS || description
 
|-
 
|-
| backup || auto || no || Contains backup copies of project source files
+
| backup || auto || no || Contains backup copies of project source files.
 
|-
 
|-
| lib || auto || no || Contains compiled binary files for different CPU-OS
+
| lib || auto || no || Contains compiled binary files for different CPU and OS.
 
|-
 
|-
| <Project name>.app || auto || no || MacOS (Darwin) Bundle files  
+
| <Project name>.app || auto || no || macOS (Darwin) "application bundle" files (macOS treats folders with extension .app specially).
 
|-
 
|-
| frames || manual || yes || TFrame descendant files (*.lfm, *.pas), recommended for large projects with many frames
+
| frames || manual || yes || TFrame descendant files (*.lfm, *.pas), recommended for large projects with many frames.
 
|-
 
|-
 
| include || manual || yes || Platform-dependent includes. Contains sub-directories for different OS (darwin, linux, win32, win64, etc..) Recommended for multiplatform projects with platform-specific units.
 
| include || manual || yes || Platform-dependent includes. Contains sub-directories for different OS (darwin, linux, win32, win64, etc..) Recommended for multiplatform projects with platform-specific units.
Line 54: Line 54:
 
This file can be created with lazres tool (in directory Lazarus/Tools) using commandline: lazres myfile.lrs myfile.lfm
 
This file can be created with lazres tool (in directory Lazarus/Tools) using commandline: lazres myfile.lrs myfile.lfm
 
|-
 
|-
| <code>.compiled</code> || no || FPC compilation state || Created by the Free Pascal compiler. XML with compilator parameters.
+
| <code>.compiled</code> || no || FPC compilation state || Compiler does not generate any .compiled files. They are created by some build system (make, fpmake, lazbuild).
 
|-
 
|-
 
| <code>.ppu</code> || no || Compiled unit || Compiled source code created by the Free Pascal compiler for each unit and program.
 
| <code>.ppu</code> || no || Compiled unit || Compiled source code created by the Free Pascal compiler for each unit and program.
Line 71: Line 71:
 
|-
 
|-
 
| <code>.ico</code> || yes || Icon file || Icon for application file
 
| <code>.ico</code> || yes || Icon file || Icon for application file
 +
|-
 +
| <code>.res</code> || yes/no || Binary resource ||  There are essentially 3 types in Delphi: 1) auto generated .res files. 2) other .res files for which you have source (.rc) and are declared with the RC file in project or source like <code>{$R 'logo.res' 'logo.rc'}</code>. 3) other .res files for which you don't have source. So category one shouldn't be in SVN (so essentially same as other pre-generated files like  .dcu/.o or .ppu).  Category two essentially also not, since they can be regenerated. Finally category 3, that should be kept. In older Delphi these were often files to e.g. enable themes while the Delphi version didn't know that windows version. This is less of a problem with Lazarus. You can also convert category 2 to 3 to simply including the .res (removing the .rc source), so that you don't have to add e.g. an image to SVN etc).
 
|}
 
|}
  

Latest revision as of 16:57, 9 March 2022

Project directory structure

Typical directory structure for Lazarus project:

  • created - auto-created by IDE or created manually
  • VCS - need to be included in Version Control System
directory name created VCS description
backup auto no Contains backup copies of project source files.
lib auto no Contains compiled binary files for different CPU and OS.
<Project name>.app auto no macOS (Darwin) "application bundle" files (macOS treats folders with extension .app specially).
frames manual yes TFrame descendant files (*.lfm, *.pas), recommended for large projects with many frames.
include manual yes Platform-dependent includes. Contains sub-directories for different OS (darwin, linux, win32, win64, etc..) Recommended for multiplatform projects with platform-specific units.
languages manual yes Contains *.po files with resource strings for different languages. Recommended for multi-language projects.
images manual yes Picture files (*.png, *.jpg, *.ico, *.xpm, etc..), that can be compiled into resource by lazres utility. Recommended for projects and packages with many image files.
logs manual no Debug output files (*.txt, *.log).

Project files extensions

The Lazarus Tutorial#The Lazarus files explains some extensions by an example.

  • VCS - need to be included in Version Control System
extension VCS filetype description
.lpi yes Lazarus Project Information contains project-specific settings like compiler settings and needed packages. stored in XML
.lps no Lazarus Program Session Personal data like cursor positions, source editor files, personal build modes. stored in XML
.lpr yes Lazarus Program Pascal source of main program.
.lfm yes Lazarus Form Form configuration information for all objects on a form (stored in a Lazarus-specific textual format, similar to Delphi dfm; the actions are described by Pascal source code in a corresponding *.pas file)
.pas yes Pascal code Pascal code typically for a form stored in a corresponding *.lfm file
.pp
.p
yes Pascal code Useful if you want to avoid confusion with Delphi source code files.
.inc yes Pascal code include Included as part of Pascal code file. Typically contain platform-dependent definitions and routines.
.lrs no Lazarus Resource Generated Lazarus Resource file; not to be confused with a Windows resource file.

This file can be created with lazres tool (in directory Lazarus/Tools) using commandline: lazres myfile.lrs myfile.lfm

.compiled no FPC compilation state Compiler does not generate any .compiled files. They are created by some build system (make, fpmake, lazbuild).
.ppu no Compiled unit Compiled source code created by the Free Pascal compiler for each unit and program.
.o
.or
no Object file Created by the compiler, every ppu file has a corresponding o file, needed by the linker.
.lpk yes Lazarus package information package-specific settings, like compiler settings and needed packages; stored in XML
.lrt no Lazarus Resourcestring table Lazarus Resourcestring table created when saving a lfm file and i18n is enabled. It contains the TTranslateString properties of the lfm. Do not edit them, they are overwritten.
.rst no Resourcestring table Resourcestring table created by the compiler for every unit with a resourcestring section. Do not edit them, they are overwritten.
.rc yes Resource definition file Delphi-compatible resource-definition script (.rc file) that describes the resources used by your application.
.po yes GNU gettext messages When i18n is enabled the IDE creates/updated the .po files with the resourcestrings from the rst and lrt files.
.ico yes Icon file Icon for application file
.res yes/no Binary resource There are essentially 3 types in Delphi: 1) auto generated .res files. 2) other .res files for which you have source (.rc) and are declared with the RC file in project or source like {$R 'logo.res' 'logo.rc'}. 3) other .res files for which you don't have source. So category one shouldn't be in SVN (so essentially same as other pre-generated files like .dcu/.o or .ppu). Category two essentially also not, since they can be regenerated. Finally category 3, that should be kept. In older Delphi these were often files to e.g. enable themes while the Delphi version didn't know that windows version. This is less of a problem with Lazarus. You can also convert category 2 to 3 to simply including the .res (removing the .rc source), so that you don't have to add e.g. an image to SVN etc).

An example .gitignore file for Lazarus/Free Pascal

Lazarus.gitignore