
























IDE 宏(含宏函数)完整列表(注意:不同版本的 Lazarus 会少量增减宏,但核心部分是稳定的。)
$(MacroName)$MacroFuncName(parameters)示例:
lib/$(TargetCPU)-$(TargetOS) // 普通宏 $NameOnly($(ProjFile))-$(TargetCPU) // 宏函数嵌套
2. General Purpose(通用宏)
这些宏可以在很多 IDE 字段中使用:搜索路径、自定义选项、文件名、运行参数等。
Col – 当前源编辑器中的列号Row – 当前源编辑器中的行号(屏幕行,可能因 Tab 和 UTF-8 与字节位置不同)CurToken – 光标处的当前标识符/标记EdFile – 当前源编辑器中的文件名Params – 当前项目的运行参数(命令行参数)Prompt – 弹出对话框询问用户输入的交互宏RunCmdLine – 启动项目时的命令行(含可执行文件和参数)Save – 保存当前源编辑器中的文件SaveAll – 保存所有文件TargetCmdLine – 项目可执行文件(或宿主应用)加上运行参数这些是“宏函数”,用来对文件名字符串做处理:
Ext(filename) – 取扩展名,如 .pas、.exeMakeDir(filename) – 保证路径末尾有路径分隔符(相当于 AppendPathDelim)MakeFile(filename) – 去掉末尾路径分隔符(相当于 ChompPathDelim)MakeExe(filename) – 根据目标 OS 改名为可执行文件名:
.exe$MakeExe(ide,filename) 或 $MakeExe(os,filename)(1.1 起)MakeLib(filename) – 根据目标 OS 改名为动态库文件名:
.dlllibname.solibname.so(0.9.29 起)Name(filename) – 取文件名部分(含扩展名),相当于 ExtractFileNameNameOnly(filename) – 取文件名主名(不含扩展名),相当于 ExtractFileNameOnlyPath(filename) – 取路径部分,相当于 ExtractFilePath这一节是项目、编译器、配置路径等相关的宏。
CompPath – 编译器路径(fpc/fpc.exe 的完整路径)
FPCVer、FPC_FULLVERSION 等宏(因为它们是从编译器获取的)IDE 时返回 IDE 自身使用的编译器:$CompPath(IDE)Make – make 工具路径(BSD 下为 gmake)(0.9.29 起)
InstantFPCCache – instantfpc 缓存路径,通过运行 instantfpc --get-cache 得到(0.9.31 起)
FPCMsgFile – Lazarus 环境选项中设置的编译器消息文件(0.9.31 起)
FPCSrcDir – 环境选项中设置的 FPC 源码目录
ConfDir – IDE 存储配置文件的目录(同 PrimaryConfigPath)
PrimaryConfigPath – IDE 主配置目录(0.9.31 起)
SecondaryConfigPath – IDE 配置模板目录(0.9.31 起)
FallbackOutputRoot – 如果包的输出目录不可写,IDE 放 .ppu 文件的根目录;默认 $(PrimaryConfigPath)/lib(0.9.31 起)
TestDir – 环境选项中设置的测试目录
LazarusDir – 环境选项中设置的 Lazarus 源码目录;此宏内部不能再嵌套宏
ExeExt – 当前操作系统的可执行文件扩展名,与项目目标 OS 无关;要得到项目目标 OS 的扩展名可用 $MakeExe()
ProjFile – 项目主源文件全名(.lpr 文件)
ProjPath – 项目目录(.lpi 所在目录)
ProjIncPath – 项目包含路径
ProjSrcPath – 项目源码路径
ProjUnitPath – 项目单元路径
ProjOutDir – 项目输出目录(.ppu 文件所在目录)(0.9.27 起)
ProjPublishDir – 项目发布目录
OutputFile – 当前构建模式的输出文件(可执行文件或库),即“项目选项 → 目标文件名”字段值(宏和相对路径已展开)
TargetFile – 用于启动项目的可执行文件或脚本;即“运行参数 → 宿主应用”字段值,为空时默认使用 OutputFile
Project(...) 宏函数(重点)Project 是一个宏函数,参数决定了返回什么。Wiki 文档和源码一起支持这些参数:
Project(UnitPath) – 项目单元路径Project(SrcPath) – 项目源码路径Project(IncPath) – 项目包含路径Project(InfoFile) – 项目信息文件(.lpi)文件名(0.9.25 起,r15287)Project(OutputDir) – 项目输出目录(0.9.27 起)源码中还额外支持:
Project(Namespaces) – 项目命名空间Project(InfoDir) – 项目信息文件所在目录(即 .lpi 所在目录)Project(Title) – 项目标题或项目名Project(TitleNew) – 项目标题或项目名;如果项目没有标题,则返回 lisNewProject(即 “new project” 之类本地化字符串)也就是说,你看到的:
就是 Project(TitleNew) 的调用形式,用在 IDE 标题栏模板里。
这些宏在包的字段(例如搜索路径)中可以直接使用;在其它地方使用时要给出包 ID 作为参数:
$(PkgName) – 在包内部:返回包名(0.9.31 起)$PkgName(id) – 给定包 ID,返回包名(0.9.31 起)$(PkgDir) – 当前包的目录(.lpk 所在目录)$PkgDir(id) – 给定包 ID,返回该包的目录(.lpk 所在目录)$PkgIncPath(id) – 给定包 ID 的包含路径$PkgOutDir(id) – 给定包 ID 的输出目录(.ppu 文件所在目录)$PkgSrcPath(id) – 给定包 ID 的源码路径(单元路径 + src 路径)$PkgUnitPath(id) – 给定包 ID 的单元路径BuildMode – 当前构建模式名称(1.1 起)
Env(name) – 返回 IDE 所在进程的环境变量值(不是项目或调试器的环境变量)(0.9.27 起)
IDEBuildOptions – “Configure Build Lazarus” 对话框中的额外选项;在 Makefile 中为空(0.9.29 起)
LanguageID – IDE 语言 ID,例如 en、de
LanguageName – IDE 语言名称,例如 Deutsch、“English”
LazVer – IDE 版本字符串(1.3 起);源码中对应 MacroFuncLazVer,支持参数:
$(LazVer) 或 $LazVer() – 完整版本字符串$LazVer(major) – 主版本号$LazVer(minor) – 次版本号$LazVer(rev) – 修订号$LazVer(build) – 构建号FPCVer – FPC 版本字符串,例如 2.4.2;该版本是通过 $(CompPath) 指定的编译器得到的(0.9.25 起)
FPC_FULLVERSION – FPC 版号合并成一个整数,例如 20701;同样来自 $(CompPath) 指定的编译器(1.3 起)
SrcOS – 源 OS 类型:
'unix''win'$SrcOS(SomeOS) 可以得到某个 OS 的 SrcOS,例如 $SrcOS($TargetOS(IDE)) 得到 IDE 可执行文件的 SrcOSTargetOS – 当前项目的目标 OS;在 Makefile 中转换为 %OS_TARGET%
$TargetOS(IDE) – IDE 自身所在 OS(0.9.31 起)TargetCPU – 当前项目的目标 CPU;在 Makefile 中转换为 %CPU_TARGET%
$TargetCPU(IDE) – IDE 自身所在 CPU(0.9.31 起)Subtarget – 当前项目的子目标(subtarget)(Lazarus 3.99 起)
FPCTarget – 类似 FPC 配置宏 $fpctarget,是 $TargetCPU(param)-$TargetOS(param)-$SubTarget(param) 的简写;若 SubTarget 为空则省略;$FPCTarget(IDE) 返回 IDE 自身的目标平台(Lazarus 3.99 起)
LCLWidgetType – 当前项目的 LCL 接件集(widgetset);在 Makefile 中转换为 %LCL_PLATFORM%
这一节不是“标准 IDE 宏”,而是某些 IDE 包/插件额外注册的宏,Wiki 列了几个例子:
Pas2JS – Pas2JS 可执行文件路径Pas2JSBrowser – 选中的浏览器可执行文件路径Pas2JSNodeJS – 选中的 NodeJS 可执行文件路径Pas2JSProjectURL – 当前 Pas2JS 项目的 URLPGSrcPaths – 项目组中所有目标(项目、包等)的源码路径DCC – Delphi 编译器可执行文件路径(从全局设置获取)DCCCONFIG – 如果“Generate compiler configuration”选项被勾选,则该宏为生成的配置文件名,前面带 @;否则为空DCCARGS – 全局与项目的“Extra compiler arguments”合并后的参数DCCCOMPILE – 等价于 $(DCC)$(DCCCONFIG) $(DCCARGS)$Project(TitleNew) 的来源Project 宏函数的参数在源码 ide/buildmanager.pas 中有完整实现:
function TBuildManager.MacroFuncProject(const Param: string; ...): string; begin if Project1<>nil then begin if SysUtils.CompareText(Param,'SrcPath')=0 then Result:=Project1.CompilerOptions.GetSrcPath(false) else if SysUtils.CompareText(Param,'IncPath')=0 then Result:=Project1.CompilerOptions.GetIncludePath(false) else if SysUtils.CompareText(Param,'Namespaces')=0 then Result:=Project1.CompilerOptions.GetNamespacesParsed else if SysUtils.CompareText(Param,'UnitPath')=0 then Result:=Project1.CompilerOptions.GetUnitPath(false) else if SysUtils.CompareText(Param,'InfoFile')=0 then Result:=Project1.ProjectInfoFile else if SysUtils.CompareText(Param,'InfoDir')=0 then Result:=ExtractFileDir(Project1.ProjectInfoFile) else if SysUtils.CompareText(Param,'Title')=0 then Result:=Project1.GetTitleOrName else if SysUtils.CompareText(Param,'TitleNew')=0 then begin Result:=Project1.GetTitleOrName; if Result = '' then Result := lisNewProject; end else if SysUtils.CompareText(Param,'OutputDir')=0 then Result:=Project1.CompilerOptions.GetUnitOutPath(false) // ... end; end;
所以:
Project(Title) – 项目标题,若没有则返回项目名Project(TitleNew) – 项目标题,若没有则返回一个表示“新项目”的默认字符串(用于 IDE 标题栏模板等)在 GitLab issue 中,IDE 标题栏模板示例:
$project(TitleNew)$EncloseBracket($project(infodir))$(BuildModeCaption) - Lazarus IDE v${LazVer}${LazState}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。