IDE Macros in paths and filenames/ru

From Lazarus wiki
Revision as of 22:40, 13 August 2020 by Zoltanleo (talk | contribs)
Jump to navigationJump to search

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

Типы макросов

Имеются различные типы макросов:

  • Макросы IDE: они могут быть использованы почти во всех полях IDE, например, путях поиска, настраиваемых опциях, именах файлов, параметрах запуска. Они заменяются своими значениями перед вызовом внешних инструментов, таких, как компилятор или отладчик. Регистронезависимы.
  • Символы FPC: они либо определены (on), либо не определены (off). Передаются через опцию командной строки -d, которая может быть задана в Compiler Options / Custom Options. Например, -dDEBUG -dVerbose определит символы FPC DEBUG и Verbose, поэтому вы сможете использовать {$IFDEF Debug}. Регистронезависимы.
  • Макросы FPC: они могут быть определены, например, кодом вроде такого: {$define MYFPCMACRO:=42}. Примером предопределённого макроса является FPC_FULLVERSION.
  • Макросы сборки: это макросы IDE с ограниченной областью действия. Они определяются проектами и пакетами. Регистронезависимы.
  • Некоторые плагины IDE имеют свои собственные макросы.

Формат макросов IDE

Макросы IDE используются в следующем формате (замените macro-name на один из макросов, перечисленных ниже):

$(macro-name)


Например, такой "Каталог вывода модуля" часто используется для пакетов Lazarus:

lib/$(TargetCPU)-$(TargetOS)
  • В системе x86 Linux 32-bit это будет эквивалентно: lib/i386-linux
  • В системе x86 Linux 64-bit это будет эквивалентно: lib/x86_64-linux


Также есть некоторые макрофункции, которые используют следующий формат:

$macro_name(parameters)


Например,

$Ext(unit1.pas)

выдаст .pas.

Общего назначения

  • Col - текущая колонка в редакторе кода
  • Row - текущая строка в редакторе кода
  • CurToken - текущая лексема около курсора в редакторе кода
  • EdFile - имя текущего файла в редакторе кода
  • Params - параметры запуска текущего проекта
  • Prompt - запрашивает значение у пользователя. Это интерактивный макрос.
  • RunCmdLine - командная строка для запуска проекта
  • Save - сохраняет текущий файл в редакторе кода
  • SaveAll - сохраняет всё
  • TargetCmdLine - путь до испольняемого модуля проекта и параметры запуска

Части имени файла

  • Ext(filename) - макрофункция для ExtractFileExt. Пример: вернёт .exe под Windows.
  • MakeDir(filename) - макрофункция для AppendPathDelim
  • MakeFile(filename) - макрофункция для ChompPathDelim
  • MakeExe(filename) - меняет расширение файла на .exe под Windows, ничего не делает под Linux, BSD, OS X. При кросс-компиляции он создаст имя файла для целевой ОС. Для получения имени файла хост-ОС используйте $MakeExe(ide,filename). Для получения имени файла указанной ОС используйте $MakeExe(os,filename). Вариант с двумя параметрами существует с версии 1.1.
  • MakeLib(filename) - меняет расширение файла на .dll под Windows, под Linux/BSD меняет на libname.so в нижнем регистре, под OS X - на libname.so (с версии 0.9.29)
  • Name(filename) - макрофункция для ExtractFileName
  • NameOnly(filename) - макрофункция для ExtractFileNameOnly
  • Path(filename) - макрофункция для ExtractFilePath

Пути и их части

  • CompPath - путь к компилятору. До версии 1.3 он возвращал значение опции IDE (Tools / Options ...). Он не может использовать макросы FPCVer, FPC_FULLVERSION, поскольку эти макросы берутся из компилятора. Вы можете использовать макросы TargetOS, TargetCPU, SrcOS только если вы установите их. Вы можете использовать макросы LazarusDir и Env. С версии 1.3 макрос возвращает компилятор проекта. Он возвращает значение по умолчанию опции IDE:
    • когда используется параметр IDE: $CompPath(IDE)
    • в самой опции 'компилятор проекта'
    • когда компилятор проекта недоступен (Build, Compile)
    • когда компилятор проекта - не fpc или ppcsomething
    • когда IDE собрана
  • ConfDir - каталог, где IDE хранит свои файлы конфигурации (такие, как PrimaryConfigPath).
  • ExeExt - расширение исполняемого файла для операционной системы независимо от целевой ОС проекта. Для получения расширения для целевой ОС текущего проекта используйте $MakeExe().
  • FallbackOutputRoot - каталог, куда IDE помещает файлы ppu, если выходной каталог пакета недоступен для записи. По умолчанию: $(PrimaryConfigPath)/lib. С версии 0.9.31.
  • FPCSrcDir - Каталог с исходниками FPC, указанный в настройках окружения
  • FPCMsgFile - файл сообщений компилятора, указанный в настройках окружения Lazarus (с версии 0.9.31).
  • InstantFPCCache - путь к instantfpccache. Вывод запуска instantfpc --get-cache (с версии 0.9.31).
  • LazarusDir - каталог с исходным кодом Lazarus, указанный в настройках окружения Lazarus. Макросы запрещены.
  • Make - путь к утилите make (gmake под BSD) (с версии 0.9.29)
  • PrimaryConfigPath - каталог конфигурационных файлов IDE (с версии 0.9.31). См. SecondaryConfigPath.
  • ProjFile - полное имя файла главного исходника текущего проекта (.lpr)
  • ProjIncPath - include path of project directory
  • ProjOutDir - путь к каталогу вывода проекта (например, где создаются файлы .ppu) (с версии 0.9.27)
  • ProjPath - каталог проекта (где находится файл .lpi)
  • ProjPublishDir - каталог публикации текущего проекта
  • ProjSrcPath - source path of project directory
  • ProjUnitPath - unit path of project directory
  • Project(param) - макрофункция для различных значений:
    • Project(UnitPath) - unit path of project directory
    • Project(SrcPath) - source path of project directory
    • Project(IncPath) - include path of project directory
    • Project(InfoFile) - имя файла информации о проекте (.lpi) (с r15287, 0.9.25)
    • Project(OutputDir) - каталог, где создаются файлы ppu проекта (с версии 0.9.27)
  • Макросы пакетов - могут быть использованы в полях пакета. Например, в путях поиска пакета. Для использования их в другом месте, передавайте имя пакета как параметр.
    • $(PkgName) - в пакете: даёт имя пакета (с версии 0.9.31)
    • $PkgName(id) - макрофункция для имени пакета, ID которого передан как параметр (с версии 0.9.31)
    • $(PkgDir) - макрос для каталога пакета (где находится .lpk)
    • $PkgDir(id) - макрофункция для каталога пакета (где находится .lpk), ID которого передан как параметр.
    • $PkgIncPath(id) - macro function for the include path of a package ID given as parameter
    • $PkgOutDir(id) - макрофункция для каталога вывода пакета (например, где создаются файлы ppu)
    • $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
  • SecondaryConfigPath - каталог шаблонов конфигурации IDE (с версии 0.9.31). См. PrimaryConfigPath
  • TargetFile - выходной файл текущего проекта (например, исполняемый или библиотека)
  • TestDir - Тестовый каталог, указанный в настройках окружения Lazarus

Окружение

  • BuildMode - название активного режима сборки (с версии 1.1)
  • Env(name) - макрофункция для переменных окружения, выданных для IDE (не для проекта и не для отладчика) (см. GetEnvironmentVariableUTF8) (с версии 0.9.27)
  • IDEBuildOptions - дополнительные параметры в диалоге 'Параметры сборки Lazarus' (с версии 0.9.29). В Makefile: пусто.
  • LanguageID - Язык IDE, например, en - для английского, de - для немецкого
  • LanguageName - Название текущего языка IDE, переведённое на этот язык. Например, Deutsch - для немецкого, Русский - для русского.
  • LazVer - Строка версии IDE (с версии 1.3).
  • FPCVer - Версия FPC (с версии 0.9.25). Например, '2.4.2'. Эта версия извлекается из $(CompPath) компилятора, путь указывается в настройках окружения Lazarus. FPCVer зависит от пути компилятора проекта.
  • FPC_FULLVERSION - Версия FPC в виде одного числа (с версии 1.3). Например, 20701. Эта версия извлекается из $(CompPath) компилятора, путь указывается в настройках окружения Lazarus. FPC_FullVersion зависит от пути компилятора проекта.
  • SrcOS - 'unix' для linux, darwin, bsd. 'win' для win32, win64, wince. С версии 0.9.31: используйте $SrcOS(SomeOS) для получения SrcOS конкретной ОС, например, $SrcOS($TargetOS(IDE)) - для получения SrcOS исполняемого файла IDE. SrcOS зависит от TargetOS.
  • TargetOS - Целевая ОС текущего проекта. С версии 0.9.31: используйте $TargetOS(IDE) для получения ОС исполняемого файла IDE. Если проект не установил TargetOS, IDE использует платформу по умолчанию компилятора проекта (1.3 и ниже использует как платформу по умолчанию платформу IDE). В Makefile это конвертируется в %(OS_TARGET).
  • TargetCPU - аналогично с TargetOS. В Makefile это конвертируется в %(CPU_TARGET).
  • LCLWidgetType - набор виджетов LCL текущего проекта. В Makefile это конвертируеется в %(LCL_PLATFORM).


Макросы в расширениях IDE

Вот неполный список макросов, добавленных пакетами IDE:

Pas2jsDsgn

  • Pas2JS - Исполняемый файл Pas2JS
  • Pas2JSBrowser - выбранный Pas2JS исполняемый файл браузера
  • Pas2JSNodeJS - выбранный Pas2JS исполняемый файл Node JS
  • Pas2JSProjectURL - URL-адрес текущего проекта Pas2JS

ProjectGroups

  • PGSrcPaths - пути исходников всех целей, то есть проектов, пакетов и т.д. группы проектов