Sign in Join
Wiki copytemporary

IDE Macros in paths and filenames/ru: what changed

Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11## Типы макросов
22
33Имеются различные типы макросов:
44
55- **Макросы IDE:** они могут быть использованы почти во всех полях IDE, например, путях поиска, настраиваемых опциях, именах файлов, параметрах запуска. Они заменяются своими значениями перед вызовом внешних инструментов, таких, как компилятор или отладчик. Регистронезависимы.
66- **Символы FPC:** они либо определены (on), либо не определены (off). Передаются через опцию командной строки **-d**, которая может быть задана в *Compiler Options / Custom Options*. Например, *-dDEBUG -dVerbose* определит символы FPC **DEBUG** и **Verbose**, поэтому вы сможете использовать ***{\$IFDEF Debug}***. Регистронезависимы.
77- **Макросы FPC:** они могут быть определены, например, кодом вроде такого: **{\$define MYFPCMACRO:=42}**. Примером предопределённого макроса является FPC_FULLVERSION.
88- **Макросы сборки:** это макросы IDE с ограниченной областью действия. Они определяются проектами и пакетами. Регистронезависимы.
99- Некоторые плагины IDE имеют свои собственные макросы.
1010
1111## Формат макросов IDE
1212
1313Макросы IDE используются в следующем формате (замените *macro-name* на один из макросов, перечисленных ниже):
1414
15-`$(macro-name)`
15+```text
16+$(macro-name)
17+```
1618
1719Например, такой "Каталог вывода модуля" часто используется для пакетов Lazarus:
1820
19-`lib/$(TargetCPU)-$(TargetOS)`
21+```text
22+lib/$(TargetCPU)-$(TargetOS)
23+```
2024
2125- В системе x86 Linux 32-bit это будет эквивалентно: **lib/i386-linux**
2226- В системе x86 Linux 64-bit это будет эквивалентно: **lib/x86_64-linux**
2327
2428Также есть некоторые **макрофункции**, которые используют следующий формат:
2529
26-`$macro_name(parameters)`
30+```text
31+$macro_name(parameters)
32+```
2733
2834Например,
2935
30-`$Ext(unit1.pas)`
36+```text
37+$Ext(unit1.pas)
38+```
3139
3240выдаст **.pas**.
3341
3442## Общего назначения
3543
3644- **Col** - текущая колонка в редакторе кода
3745- **Row** - текущая строка в редакторе кода
3846- **CurToken** - текущая лексема около курсора в редакторе кода
3947- **EdFile** - имя текущего файла в редакторе кода
4048- **Params** - параметры запуска текущего проекта
4149- **Prompt** - запрашивает значение у пользователя. Это интерактивный макрос.
4250- **RunCmdLine** - командная строка для запуска проекта
4351- **Save** - сохраняет текущий файл в редакторе кода
4452- **SaveAll** - сохраняет всё
4553- **TargetCmdLine** - путь до исполняемого модуля проекта и параметры запуска
4654
4755## Части имени файла
4856
4957- **Ext(filename)** - макрофункция для ExtractFileExt. Пример: вернёт **.exe** под Windows.
5058- **MakeDir(filename)** - макрофункция для AppendPathDelim
5159- **MakeFile(filename)** - макрофункция для ChompPathDelim
5260- **MakeExe(filename)** - меняет расширение файла на **.exe** под Windows, ничего не делает под Linux, BSD, OS X. При кросс-компиляции он создаст имя файла для целевой ОС. Для получения имени файла хост-ОС используйте \$MakeExe(ide,filename). Для получения имени файла указанной ОС используйте \$MakeExe(os,filename). Вариант с двумя параметрами существует с версии 1.1.
5361- **MakeLib(filename)** - меняет расширение файла на .dll под Windows, под Linux/BSD меняет на libname.so в нижнем регистре, под OS X - на libname.so (с версии 0.9.29)
5462- **Name(filename)** - макрофункция для ExtractFileName
5563- **NameOnly(filename)** - макрофункция для ExtractFileNameOnly
5664- **Path(filename)** - макрофункция для ExtractFilePath
5765
5866## Пути и их части
5967
6068- **CompPath** - путь к компилятору. До версии 1.3 он возвращал значение опции IDE (*Tools / Options ...*). Он не может использовать макросы FPCVer, FPC_FULLVERSION, поскольку эти макросы берутся из компилятора. Вы можете использовать макросы TargetOS, TargetCPU, SrcOS **только** если вы установите их. Вы можете использовать макросы LazarusDir и Env. С версии 1.3 макрос возвращает компилятор проекта. Он возвращает значение по умолчанию опции IDE:
6169 - когда используется параметр *IDE*: \$CompPath(IDE)
6270 - в самой опции 'компилятор проекта'
6371 - когда компилятор проекта недоступен (*Build*, *Compile*)
6472 - когда компилятор проекта - не fpc или ppcsomething
6573 - когда IDE собрана
6674- **ConfDir** - каталог, где IDE хранит свои файлы конфигурации (такие, как PrimaryConfigPath).
6775- **ExeExt** - расширение исполняемого файла для операционной системы независимо от целевой ОС проекта. Для получения расширения для целевой ОС текущего проекта используйте \$MakeExe().
6876- **FallbackOutputRoot** - каталог, куда IDE помещает файлы ppu, если выходной каталог пакета недоступен для записи. По умолчанию: \$(PrimaryConfigPath)/lib. С версии 0.9.31.
6977- **FPCSrcDir** - Каталог с исходниками FPC, указанный в настройках окружения
7078- **FPCMsgFile** - файл сообщений компилятора, указанный в настройках окружения Lazarus (с версии 0.9.31).
7179- **InstantFPCCache** - путь к instantfpccache. Вывод запуска *instantfpc --get-cache* (с версии 0.9.31).
7280- **LazarusDir** - каталог с исходным кодом Lazarus, указанный в настройках окружения Lazarus. Макросы запрещены.
7381- **Make** - путь к утилите make (gmake под BSD) (с версии 0.9.29)
7482- **PrimaryConfigPath** - каталог конфигурационных файлов IDE (с версии 0.9.31). См. **SecondaryConfigPath**.
7583- **ProjFile** - полное имя файла главного исходника текущего проекта (.lpr)
7684- **ProjIncPath** - include path of project directory
7785- **ProjOutDir** - путь к каталогу вывода проекта (например, где создаются файлы .ppu) (с версии 0.9.27)
7886- **ProjPath** - каталог проекта (где находится файл .lpi)
7987- **ProjPublishDir** - каталог публикации текущего проекта
8088- **ProjSrcPath** - source path of project directory
8189- **ProjUnitPath** - unit path of project directory
8290- **Project(param)** - макрофункция для различных значений:
8391 - **Project(UnitPath)** - unit path of project directory
8492 - **Project(SrcPath)** - source path of project directory
8593 - **Project(IncPath)** - include path of project directory
8694 - **Project(InfoFile)** - имя файла информации о проекте (.lpi) (с r15287, 0.9.25)
8795 - **Project(OutputDir)** - каталог, где создаются файлы ppu проекта (с версии 0.9.27)
8896- **Макросы пакетов** - могут быть использованы в полях пакета. Например, в путях поиска пакета. Для использования их в другом месте, передавайте имя пакета как параметр.
8997 - **\$(PkgName)** - в пакете: даёт имя пакета (с версии 0.9.31)
9098 - **\$PkgName(id)** - макрофункция для имени пакета, ID которого передан как параметр (с версии 0.9.31)
9199 - **\$(PkgDir)** - макрос для каталога пакета (где находится .lpk)
92100 - **\$PkgDir(id)** - макрофункция для каталога пакета (где находится .lpk), ID которого передан как параметр.
93101 - **\$PkgIncPath(id)** - macro function for the include path of a package ID given as parameter
94102 - **\$PkgOutDir(id)** - макрофункция для каталога вывода пакета (например, где создаются файлы ppu)
95103 - **\$PkgSrcPath(id)** - macro function for the source path (unit path + src path) of a package ID given as parameter
96104 - **\$PkgUnitPath(id)** - macro function for the unit path of a package ID given as parameter
97105- **SecondaryConfigPath** - каталог шаблонов конфигурации IDE (с версии 0.9.31). См. **PrimaryConfigPath**
98106- **TargetFile** - выходной файл текущего проекта (например, исполняемый или библиотека)
99107- **TestDir** - Тестовый каталог, указанный в настройках окружения Lazarus
100108
101109## Окружение
102110
103111- **BuildMode** - название активного режима сборки (с версии 1.1)
104112- **Env(name)** - макрофункция для переменных окружения, выданных для IDE (не для проекта и не для отладчика) (см. [GetEnvironmentVariableUTF8](http://lazarus-ccr.sourceforge.net/docs/lcl/fileutil/getenvironmentvariableutf8.html)) (с версии 0.9.27)
105113- **IDEBuildOptions** - дополнительные параметры в диалоге 'Параметры сборки Lazarus' (с версии 0.9.29). В Makefile: пусто.
106114- **LanguageID** - Язык IDE, например, **en** - для английского, **de** - для немецкого
107115- **LanguageName** - Название текущего языка IDE, переведённое на этот язык. Например, **Deutsch** - для немецкого, **Русский** - для русского.
108116- **LazVer** - Строка версии IDE (с версии 1.3).
109117- **FPCVer** - Версия FPC (с версии 0.9.25). Например, '2.4.2'. Эта версия извлекается из \$(CompPath) компилятора, путь указывается в настройках окружения Lazarus. **FPCVer** зависит от пути компилятора проекта.
110118- **FPC_FULLVERSION** - Версия FPC в виде одного числа (с версии 1.3). Например, *20701*. Эта версия извлекается из \$(CompPath) компилятора, путь указывается в настройках окружения Lazarus. **FPC_FullVersion** зависит от пути компилятора проекта.
111119- **SrcOS** - 'unix' для linux, darwin, bsd. 'win' для win32, win64, wince. С версии 0.9.31: используйте **\$SrcOS(SomeOS)** для получения SrcOS конкретной ОС, например, **\$SrcOS(\$TargetOS(IDE))** - для получения SrcOS исполняемого файла IDE. **SrcOS** зависит от *TargetOS*.
112120- **TargetOS** - Целевая ОС текущего проекта. С версии 0.9.31: используйте **\$TargetOS(IDE)** для получения ОС исполняемого файла IDE. Если проект не установил **TargetOS**, IDE использует платформу по умолчанию компилятора проекта (1.3 и ниже использует как платформу по умолчанию платформу IDE). В Makefile это конвертируется в *%(OS_TARGET)*.
113121- **TargetCPU** - аналогично с *TargetOS*. В Makefile это конвертируется в *%(CPU_TARGET)*.
114122- **LCLWidgetType** - набор виджетов LCL текущего проекта. В Makefile это конвертируеется в *%(LCL_PLATFORM)*.
115123
116124# Макросы в расширениях IDE
117125
118126Вот неполный список макросов, добавленных пакетами IDE:
119127
120128## Pas2jsDsgn
121129
122130- **Pas2JS** - Исполняемый файл Pas2JS
123131- **Pas2JSBrowser** - выбранный Pas2JS исполняемый файл браузера
124132- **Pas2JSNodeJS** - выбранный Pas2JS исполняемый файл Node JS
125133- **Pas2JSProjectURL** - URL-адрес текущего проекта Pas2JS
126134
127135## ProjectGroups
128136
129137- **PGSrcPaths** - пути исходников всех целей, то есть проектов, пакетов и т.д. группы проектов
130138
131139---
132140*From the Free Pascal wiki, page "IDE Macros in paths and filenames/ru", as it stood on 2022-09-30 after a change by Zoltanleo, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
133141Category: IDE Macros/ru
134142Category: Lazarus/ru
135143Category: Russian

Back to history