IDE Macros in paths and filenames

From Lazarus wiki
Jump to navigationJump to search

Deutsch (de) English (en) español (es) français (fr) português (pt) русский (ru)

Macros are used in the following format. Replacing the macro-name part with one of the macros listed below.

$(macro-name)

For example: This Unit Output directory format is often used for Lazarus Packages:

lib/$(TargetCPU)-$(TargetOS)

under a x86 Linux 32-bit system that would equate to: lib/i386-linux
under a x86 Linux 64-bit system that would equate to: lib/x86_64-linux

There are also some macro functions that use the following format:

$macro_name(parameters)

For example

$Ext(unit1.pas)

will give .pas.


General Purpose

  • Col - current column in source editor
  • Row - current row in source editor (screen, can differ to byte position due to tabs and UTF-8)
  • CurToken - current token at the cursor in the source editor
  • EdFile - current filename in the source editor
  • Params - run parameters of the current project
  • Prompt - ask the user for a value. This is an interactive macro.
  • RunCmdLine - the command to launch the project
  • Save - save current file in source editor
  • SaveAll - save all
  • TargetCmdLine - the project executable plus run parameters

Filename Parts

  • Ext(filename) - macro function for ExtractFileExt
  • MakeDir(filename) - macro function for AppendPathDelim
  • MakeFile(filename) - macro function for ChompPathDelim
  • MakeExe(filename) - change file extension to .exe under Windows, nothing under Linux, BSD, OS X
  • MakeLib(filename) - change file extension to .dll under Windows, under Linux/BSD change to lowercase libname.so, under OS X to libname.so (since 0.9.29)
  • Name(filename) - macro function for ExtractFileName
  • NameOnly(filename) - macro function for ExtractFileNameOnly
  • Path(filename) - macro function for ExtractFilePath

Paths and Parts

  • Env(name) - macro function for environment variables given to the IDE (not project nor debugger) (see GetEnvironmentVariableUTF8) (since 0.9.27)
  • CompPath - compiler path set in the environment options. Can not use the macro FPCVer, but you can use LazarusDir and Env macros.
  • ConfDir - directory where the IDE stores its config files.
  • ExeExt - executable file extension for the operation system, independent of project's target OS. To get the extension for the current project target OS use $MakeExe().
  • FPCSrcDir - FPC source directory set in environment options
  • FPCVer - FPC version (since 0.9.25). For example '2.4.2'. This version is fetched from the compiler $(CompPath), which path is set in the environment options.
  • LanguageID - IDE language, for example en for english, de for german
  • LanguageName - IDE language name, the translated name of the current language. For instance: Deutsch for german.
  • LazarusDir - Lazarus source directory set in environment options. No macros allowed.
  • LCLWidgetType - LCL widgetset of the current project
  • ProjFile - the full filename of the main source of the current project (.lpr)
  • ProjPath - the project directory (the directory of the .lpi file)
  • TargetFile - the output file of the current project (e.g. the executable or the library)
  • TestDir - Test directory set in the environment options
  • SrcOS - 'unix' for linux, darwin, bsd. 'win' for win32, win64, wince
  • TargetCPU - Target CPU of the current project. In Makefile: %(CPU_TARGET)
  • TargetOS - Target OS of the current project. In Makefile: %(OS_TARGET)
  • LCLWidgetType - LCL widget type of the current project. In Makefile: %(LCL_PLATFORM)
  • Make - path to the make utility (gmake under BSD) (since 0.9.29)
  • ProjIncPath - include path of project directory
  • ProjOutDir - path of project output directory (e.g. where the .ppu files are created) (since 0.9.27)
  • ProjPublishDir - publishing directory of the current project
  • ProjSrcPath - source path of project directory
  • ProjUnitPath - unit path of project directory
  • Project(param) - macro function for various values:
    • Project(UnitPath) - unit path of project directory
    • Project(SrcPath) - source path of project directory
    • Project(IncPath) - include path of project directory
    • Project(InfoFile) - filename of the project information file (.lpi) (since r15287, 0.9.25)
    • Project(OutputDir) - directory where the project's ppu files are created (since 0.9.27)
  • Package macros - these can be used in the fields of a package. For example in the search paths of a package. To use them elsewhere give a package name as parameter.
    • $(PkgName) - in a package: gives the package name (since 0.9.31)
    • $PkgName(id) - macro function for the name of a package ID given as parameter (since 0.9.31)
    • $(PkgDir) - macro for the directory (location of the .lpk) of the package
    • $PkgDir(id) - macro function for the directory (location of the .lpk) of a package ID given as parameter
    • $PkgIncPath(id) - macro function for the include path of a package ID given as parameter
    • $PkgOutDir(id) - macro function for the output directory of a package (e.g. where the ppu files are created)
    • $PkgSrcPath(id) - macro function for the source path (unit path + src path) of a package ID given as parameter
    • $PkgUnitPath(id) - macro function for the unit path of a package ID given as parameter
  • IDEBuildOptions - the extra options of the 'Configure Build Lazarus' dialog (since 0.9.29). In Makefile empty.
  • PrimaryConfigPath - the directory of the IDE's configuration files (since 0.9.31)
  • SecondaryConfigPath - the directory of the IDE's configuration templates (since 0.9.31)
  • FallbackOutputRoot - the directory where the IDE puts ppu files if the output directory of a package is not writable. Default: $(PrimaryConfigPath)/lib. Since 0.9.31.