Sign in Join
Wiki copytemporary

IDE Window: Compiler Options/ru: what changed

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

OldNewLine
11## Пути (Paths)
22
33![](/wiki-images/2/21/CompilerOptions-Paths.png)
44
55- Относительные пути дополняются путём от файла проекта или каталога пакета (где расположен файл .lpi/.lpk).
66- Эти пути добавляются в пути поиска. Они не заменяют существующие пути.
77- В среде IDE есть один набор путей поиска для каждого пакета / проекта. Это означает, что пакет может иметь пути поиска, отличные от активного проекта.\
88 «Набор путей поиска» относится к пути поиска объекта, включает в себя путь поиска, путь поиска источников, ...
99- Если пакет или проект использует другие пакеты, со своими путями поиска. То эти "унаследованные" пути можно найти на закладке #Унаследованные (Inherited).
1010 - Если вы не хотите использовать путь поиска, унаследованные от используемого пакета, вы должны изменить параметры компилятора используемого пакета.
1111- Пользуясь системой пакетов Lazarus вам практически не придётся устанавливать пути поиска вручную.
1212- Компилятор FreePascal имеет собственный файл настроек (по умолчанию /etc/fpc.cfg) который определяет набор путей поиска модулей. Например для нахождения модулей FPC из RTL или FCL вроде 'classes', 'sysutils'. Не добавляйте туда пути поиска к исходным файлам (.pas, .inc).
1313- Пути поиска разделяются точкой с запятой ';'.
1414- Начальные и конечные пробельные символы игнорируются и автоматически убираются IDE. IDE нормализует пути поиска и добавляет разделитель пути (windows: /, все остальные: \\). Пути каталога автоматически конвертируются в формат подходящий текущей операционной системе при открытии файла проекта .lpi или .lpk.
1515- Вы можете использовать макросы. Например \$(TargetCPU). Подробнее смотрите [[IDE Macros in paths and filenames]].
1616- В среде IDE есть один набор настроек путей для каждого каталога:
1717 - Каждый каталог в пути поиска модуля проекта получает все пути поиска проекта.
1818 - Каждый каталог в пути поиска модуля пакета получает все пути поиска пакета.
1919 - Другие каталоги получают пути поиска проекта. Если путь поиска проекта содержит '.', каталог также увидит каталог проекта.
2020- Использование "uses unitname in 'filename'" не влияет на любой путь поиска.
2121
2222### Другие модули (Other Unit Files)
2323
2424Это пути поиска для модулей паскаля (.ppu, .pp, .pas, .p) вашего проекта или пакета. Посмотрите заголовок окна, чтобы узнать какого. Этот путь будет передан компилятору FreePascal, который добавит их к своим Unit Path.
2525
2626- Добавляя и убирая модули из проекта/пакета, IDE спросит вас о необходимости изменить пути поиска.
2727- Этот путь содержит каталоги вашего проекта (или вашего пакета), который содержит файлы .pas, .pp или .p.
2828- Если вы хотите использовать одни и те же модули между разными проектами, создайте пакет для них. Это просто.
2929
3030> **Note:** Не добавляйте каталоги использованный пакетов в этот путь. Это повлечёт за собой то, что FPC скомпилирует файлы .ppu включенного пакета и поместит их в ваш каталог проекта. Вы столкнётесь с множественными версиями .ppu и получите странные 'Can not find unit' ошибки.\
3131> Например: не добавляйте никакие FPC или LCL каталоги исходников в этот путь.
3232
3333### Включаемые файлы (Include Files)
3434
3535Это путь поиска для включаемый файлов (таких как файлы .inc, .lrs). Этот путь передаётся компилятору FreePascal Compiler, который добавляет их к своим путям поиска Включаемых файлов (Include Path), которые используются в директивах включения вроде {\$I filename.inc} или {\$INCLUDE filename.inc}.
3636
3737### Другие исходные коды (Other sources)
3838
3939Это пути поиска для модулей исходного кода паскаль, которые используются только IDE, но не компилятором.
4040
4141Например: У вас имеется каталог с исходниками и каталог с соответствующими файлами .ppu. Вы добавляете каталог с .ppu в пути 'Другие модули (Other Unit Files)' а каталог с .pas в 'Другие исходные коды (Other sources)'. Таким образом компилятор будет использовать файлы .ppu и не будет пытаться компилировать их каждый раз. В то же самое время, IDE найдёт файлы с исходниками и будет работать функция Найти объявление (Find Declaration).
4242
4343### Библиотеки (Libraries)
4444
4545Это пути поиска для библиотек (файлов .dll или .so или .a).
4646
4747### Каталог вывода модулей (Unit output directory)
4848
4949Это каталог в который компилятор будет выводить файлы компиляции вроде .ppu, .o, .rst файлов (он передает это переключателю компилятора **-FU**). Если вы используете директиву \$R для файлов lfm, она также скопирует туда файлы lfm.
5050
5151Популярным примером использования является выходной каталог с именем *units*, а затем дополнительный подкаталог для целевого CPU и целевой OS. Например:
5252
53-` units/$(TargetCPU)-$(TargetOS)`
53+```text
54+ units/$(TargetCPU)-$(TargetOS)
55+```
5456
5557Примечание:
5658
5759- Если выходной каталог модуля пуст, Lazarus **не** 'передаст переключатель **-FU** компилятору. Затем компилятор будет использовать переключатель **-FE**. См.[[IDE Window: Project Options|Project target file]]
5860- Пакеты обычно наследуют свой выходной каталог другим пакетам с помощью параметров 'usage'. Вам не нужно добавлять пути к пакетам вручную в ваш проект.
5961- Если выходной каталог пакета пуст, макрос \$(PkgOutDir) также \[будет пустым\] и не будет наследоваться для нисходящих пакетов и проектов. Используйте точку ".", чтобы определить текущий каталог.
6062
6163### Имя целевого файла
6264
6365> **Note:** только проекты имеют это. Эта опция недоступна для пакетов.
6466
6567Установите здесь имя файла сгенерированного исполняемого файла. Если файл является относительным, он будет расширен каталогом проекта (где находится файл .lpi). Если файл не указан, исполняемый файл помещается в выходной каталог модуля и имеет имя основного исходного файла (обычно файла .lpr) без расширения. Если расширение не указано, добавляется расширение по умолчанию для платформы (например, «.exe» для MS Windows, но не для других). Когда новый проект еще не был сохранен и собран, среда IDE сохраняет файлы в тестовом каталоге. Относительные файлы затем относятся к этому каталогу.
6668
6769Lazarus передает переключатель компилятора
6870
6971- **-o** определяет имя целевого файла.
7072- **-FE** если имя целевого файла отсутствует в каталоге проекта (где находится файл lpi)
7173- **-FU** если выходной каталог устройства не пуст
7274
7375Если имя целевого файла находится в другом каталоге (не в каталоге файла .lpi), Lazarus передаст компилятору ключ **-FE**, чтобы убедиться, что вторичные файлы, такие как *.o* и *.rst* помещаются в один и тот же каталог. Если вы очистили *unit output directory*(каталог вывода модуля), то среда IDE не передаст переключатель **-FU**, и компилятор сгенерирует файлы *.ppu/.o* для модулей тоже в целевом каталоге.
7476
7577Если вы очистили *unit output directory*(каталог вывода модуля) **и** целевой файл проекта находится в каталоге проекта, то ни **-FU** ни **-FE** не передается компилятору, и компилятор будет работать с Delphi-совместимым файлом и генерировать файл «.ppu/.o» для каждого модуля в том же каталоге, что и модуль.
7678
7779#### Применение конвенций
7880
7981Включите это, чтобы применить различные соглашения об именах в зависимости от целевой платформы.
8082
8183- Windows: Если это программа, она добавляет расширение .exe; если это библиотека, к ней добавляется «.dll».
8284- Unix (например, Linux, BSD, Darwin/macOS): если это библиотека, то имя в нижнем регистре, и если имя не начинается с 'lib', оно предшествует 'lib'.
8385- Linux, BSD: Если это библиотека, то добавляется '.so'.
8486- Darwin/macOS: Если это библиотека, то добавляется '.dylib'.
8587
8688### Examples
8789
8890| Каталог вывода модуля | Имя целевого файла | Сгенерированные варианты | Примечание |
8991|----|----|----|----|
9092| lib/\$(TargetCPU)-\$(TargetOS) | пустой\|\|-FElib\x86_64-win64 -olib\x86_64-win64\project1.exe | все выходные файлы помещаются в *lib\x86_64-win64\* | |
9193| lib | foo\|\|-FUlib -FE. -ofoo.exe | все выходные файлы модуля, такие как `ppu` и `o`, помещаются в *lib\*, выходные файлы программы помещаются в базовый каталог (где находится lpi) | |
9294| lib | foo/bar\|\|-FUlib -FEfoo -ofoo\bar.exe | все выходные файлы модуля, такие как `ppu` и `o`, помещаются в *lib\*, выходные файлы программы помещаются в *foo* | |
9395| пустой | пустой\|\|-oproject1.exe | файлы `ppu` помещаются в файлы *.pas*, например, *src\unit1.pas* создаст *src\unit1.ppu* | |
9496| пустой | foo\|\|-ofoo.exe | файлы `ppu` помещаются в файлы *.pas* | |
9597| пустой | . (одна точка и применение соглашений отключены) | | файлы `ppu` помещаются в файлы *.pas*, выходной файл может быть любым, как определит по умолчанию компилятор |
9698
9799### Дополнения к путям отладчика (Debugger path addition)
98100
99101Эти каталоги добавляются в пути поиска отладчика IDE, когда он ищет исходники (модули и файлы включения).
100102
101103### Библиотека виджетов LCL (LCL widget type)
102104
103105Это выбор используемого набора виджетов LCL. Обычно используется набор виджетов по умолчанию. Если вы хотите попробовать другой набор виджетов, просто выберите его.
104106
105107- Набор виджетов по умолчанию - это набор виджетов для текущего проекта.
106108- Набор виджетов по умолчанию зависит от текущей операционной системы. Например: win32 для windows 2000.
107109- Вы не должны устанавливать набор виджетов для пакетов, поскольку проект не сможет этого изменить. Устанавливайте его для пакетов только если этот пакет может использоваться лишь с одним конкретным набором виджетов LCL.
108110
109111## Настройка и целевая платформа (Config and Target)
110112
111113![](/wiki-images/4/45/CompilerOptions-Config_and_Target.png)
112114
113115## Режимы сборки (Build modes)
114116
115117### Добавление, удаление, активация режимов сборки
116118
117119Только проекты имеют режимы сборки. Пакет не имеет режимов сборки.
118120
119121Режимы сборки позволяют определять **sets of compiler options** (наборы опций компилятора) и быстро переключаться между этими наборами. Например, вы можете определить *mode* (режим) для отладки, который компилирует ваш проект с проверкой диапазона, а ваш режим по умолчанию - нет.
120122
121123> **Note:** Если вы хотите передать некоторые параметры в зависимости от платформы, например, передать некоторые дополнительные параметры компоновщика в macOS, пожалуйста, посмотрите на [[IDE Window: Compiler Options/ru|макросы IDE]].
122124
123125Как добраться до этого диалога: Project(Проект) / Project Options(Настройки проекта) / Compiler Options (Настройки компилятора). Убедитесь, что "Build Modes" (Режимы сборки) включены.
124126
125127![](/wiki-images/2/2c/EditProjectBuildModes.png)
126128
127129Нажмите кнопку «...» справа, чтобы добавить/удалить/переименовать режимы сборки:
128130
129131![](/wiki-images/7/7b/ListOfBuildModes1.png)
130132
131133Сетка содержит список режимов сборки с тремя столбцами.
132134
133135Первый столбец показывает, какой режим в данный момент активен, он отмечен. Когда вы активируете другой режим, все страницы параметров компилятора будут загружать настройки нового режима, включая значения макросов на странице режимов сборки. Всегда активен только один режим, и вы можете редактировать свойства только одного режима за раз. Какой режим активен, он хранится в файле сеанса (lps). Режим по умолчанию - первый режим.
134136
135137Если ваш проект хранит сеанс в отдельном файле lps (см. Project options(Параметры проекта) / Session(Сеанс работы) / Save session info in(Сохранять сведения о сеансе работы в)), вы можете сохранить дополнительные режимы в файле сеанса lps, чтобы у каждого разработчика был свой набор режимов. В этом случае второй столбец показывает, где хранится режим, в lpi или lps (в сеансе). Имейте в виду, что первый режим является режимом по умолчанию для проекта, поэтому он должен храниться в проекте, а не в файле сеанса.
136138
137139Последний столбец - это название режима. Это произвольная строка, поэтому вы можете дать ей короткое имя или целое предложение.
138140
139141- Кнопка **плюс** добавляет новый режим, дублируя текущий активный и активируя его.
140142- Кнопка **минус** удаляет текущий выбранный режим. Должен быть хотя бы один режим. Если вы удалите первый режим, который является режимом по умолчанию, второй режим автоматически становится режимом по умолчанию.
141143- The **up**, **down** buttons allows to reorder the modes.
142144- Кнопки **вверх**, **вниз** позволяют изменить порядок режимов.
143145
144146**Подсказка:**: после того, как вы добавили другой режим сборки, в главной панели IDE появится новая кнопка для быстрого переключения текущего активного режима.
145147
146148> **Note:** При открытии нового проекта со старой IDE (\<0.9.31) вы увидите только режим по умолчанию. Если вы сохраните проект со старой IDE, вы потеряете все остальные режимы, все макросы и условия.
147149
148150Опция «Режимы сборки» существует с версии 0.9.31.
149151
150152### Добавление режимов release(окончательный релиз) и debug(отладка)
151153
152154Наиболее распространенной задачей для проектов будет добавление простых режимов сборки окончательного релиза(release) и отладки(debug). Не забывайте всегда использовать режим сборки debug(отладки), потому что отладка не будет работать в режиме сборки окончательного релиза, а затем использовать режим сборки окончательного релиза только в окончательной версии приложения.
153155
1541561. Перейдите к Project(Проект) / Project Options(Параметры проекта) / Compiler Options(Параметры компилятора)
1551572. Включите "Build Modes"(Режимы сборки) вверху. Появится комбобокс для режимов сборки и кнопка редактирования.
1561583. Нажмите на кнопку с надписью «...», чтобы открыть диалог режимов сборки.
1571594. Нажмите на кнопку "Create Debug and Release modes"(Создать режимы отладочной и конечной сборки). Это добавит два режима сборки "Debug" and "Release".
1581605. Закройте диалоговое окно
159161
160162![](/wiki-images/d/d8/BuildModesAddedDebugAndRelease1.png)
161163
162164Каждый режим сборки представляет собой полный набор параметров компилятора. Вы можете легко переключаться между режимами сборки либо с помощью комбинированного списка в верхней части параметров проекта, либо на главной панели инструментов IDE с помощью кнопки со стрелкой справа от кнопки *Compile*(Скомпилировать).
163165
164166![](/wiki-images/1/16/BuildModeSelectorInIDEToolBar1.png)
165167
166168После того, как мы выберем режим сборки *Debug*, все конфигурации в диалоге параметров проекта будут привязаны к этому режиму сборки. Вот страница по умолчанию *Debugging*(Отладка) в режиме *Debug*:
167169
168170![](/wiki-images/f/ff/BuildModeDebugPageDebugging.png)
169171
170172Когда мы выбираем режим сборки *Release*, все конфигурации в диалоге параметров проекта будут привязаны к этому режиму сборки. Вот страница по умолчанию *Debugging*(Отладка) в режиме *Release*:
171173
172174![](/wiki-images/2/2d/BuildModeReleasePageDebugging.png)
173175
174176### Выбор активного режима сборки
175177
176178Можно выбрать активный в настоящий момент режим сборки либо в диалоговом окне "Project Options"(Параметры проекта), либо в главном окне IDE, в специальной кнопке с выпадающим списком, который появится только в том случае, если проект имеет более одного режима сборки, как можно увидеть на этом скриншоте:
177179
178180![](/wiki-images/6/6f/Selecting_Build_Mode_Main_IDE_Windows.png)
179181
180182### Макросы проекта
181183
182184См. [[IDE Window: Compiler Options/ru|здесь]], чтобы добавить собственные макросы или переопределить макросы LCLWidgetType.
183185
184186## Обработка (Parsing)
185187
186188Смотрите [Free Pascal - Online documentation](http://www.freepascal.org/docs.html)
187189
188190### Режим синтаксиса (Syntax mode)
189191
190192Выберите режим по умолчанию. Если модуль не содержит директивы {\$mode somemode}, выбранный режим будет использоваться по умолчанию.
191193
192194Смотрите [Free Pascal - Online documentation](http://www.freepascal.org/docs.html)
193195
194196### Параметры синтаксиса (Syntax Options)
195197
196198- Операторы в стиле C (C Style Operators) (*=, +=, /= and -=)
197199- Включить код Assert (Include Assertion Code)
198200- Разрешить LABEL и GOTO (Allow LABEL and GOTO)
199201- INLINE в стиле C++ (C++ Styled INLINE)
200202- Макросы в стиле C (C Style Macros (global))
201203- Конструктор должен быть **init** (деструктор должен быть **done**) (Constructor name must be **init** (destructor must be **done**))
202204- Ключевое слово Static в объектах (Static Keyword in Objects)
203205- Использовать строки Ansi (Use Ansi Strings)
204206
205207### Стиль ассемблера (Assembler style)
206208
207209- -Rdefault по умолчанию
208210- -Ratt AT&T
209211- -Rintel Intel
210212
211213## Код (Code)
212214
213215Смотри [Free Pascal - Online documentation](http://www.freepascal.org/docs.html)
214216
215217## Связывание (Linking)
216218
217219![](/wiki-images/e/e9/CompilerOptions-Compilation_and_Linking.png)
218220
219221Для настройки отладки см. [[Debugger Setup/ru|Настройки проекта]]
220222
221223## Отладка(Debugging)
222224
223225![](/wiki-images/3/3f/CompilerOptions-Debugging.png)
224226
225227## Вывод(сообщения) (Verbosity (Messages))
226228
227229![](/wiki-images/8/83/CompilerOptions-Verbosity.png)
228230
229231Смотри [Free Pascal - Online documentation](http://www.freepascal.org/docs.html). Примечание: добавление большого количество сообщений сильно замедляет процесс компиляции даже если большинство сообщений будет спрятано в окне сообщений.
230232
231233## Сообщения (Messages)
232234
233235![](/wiki-images/7/74/CompilerOptions-Messages.png)
234236
235237(Появилась в версии 0.9.27) Эта страница позволяет контролировать какие сообщения компилятор будет показывать в Notes, Hints и Warnings. Необходимо, чтобы компилятор FP поддерживал переключатель -m (версия 2.2.2 или выше).
236238
237239Также возможно указать язык текста сообщений (файл должен быть в кодировке Utf-8), чтобы видеть сообщения компилятора переведёнными без необходимости модифицировать файл конфигурации компилятора fpc.cfg.
238240
239241Пример перевода файла сообщений можно найти \${LazarusDir}/fpc/\${FPCTARGET}/msg, например C:\Lazarus\fpc\2.2.3\msg
240242
241243## Пользовательские параметры
242244
243245![](/wiki-images/2/25/CompilerOptions-Custom_Options.png)
244246
245247Обычно вы определяете здесь некоторые параметры компилятора. Например, вы можете определить в режиме сборки что-то вроде
246248
247249``` pascal
248250-dRELEASE
249251```
250252
251253Затем в режиме сборки будет скомпилирован только код, окруженный {\$IFDEF RELEASE} {\$ENDIF}. Это можно использовать в качестве альтернативы системе Macro, особенно если вы "переехали" с Delphi.
252254
253255Пробелы в начале и в конце удаляются. Разрывы строк заменяются пробелом перед передачей компилятору. Ведущий пробел добавляется автоматически.
254256
255257Среда IDE заменяет макросы IDE в пользовательских параметрах и анализирует параметры. Флаги, такие как `-dRelease`, передаются в codetools, поэтому редактор исходного кода знает их немедленно.
256258
257259> **Warning:** Не добавляйте параметры пути -Fu, -Fi, -Fl, -FU, -o. Вместо этого используйте поля на странице [[IDE Window: Compiler Options/ru|Пути]]. Среда IDE игнорирует пути в пользовательских параметрах. Она не обновляет их при добавлении или удалении файлов или при открытии проекта на другом хосте.
258260
259261## Дополнения и перекрытия
260262
261263Страница «Дополнения и перекрытия» существует с 1.1.
262264
263265### Обзор
264266
265267Страница содержит матрицу вариантов сборки.
266268
267269![](/wiki-images/c/cd/CompilerAdditionsAndOverrides1.png)
268270
269271Параметры «Пользовательские параметры», «Каталог вывода» и «Макросы IDE» в любой цели можно включать и выключать отдельно для каждого режима сборки.
270272
271273Таким образом, для каждой цели есть Матрица с включающимися флажками.
272274
273275Вертикальные слова в заголовке показывают все режимы сборки, которые в настоящее время определены, и этим они обозначают столбец в матрицах.
274276
275277Справа от каждой строки любой матрицы дается описание типа (например, «Пользовательский», «OutDir» или «Макрос IDE») и значение включаемой опции.
276278
277279### Типы вариантов сборки
278280
279281Вариант сборки может
280282
281283- установить **IDE macro**(макрос IDE). Значение должно иметь вид **MacroName:=Value**. Например, **LCLWidgetType:=qt**. Вы можете использовать макросы IDE в значении, но не в имени.
282284- добавить некоторые пользовательские параметры компилятора через **Custom** (например, добавить -O3). Вам не нужен ведущий пробел. Это добавляется автоматически. См. примечания по [[IDE Window: Compiler Options/ru|пользовательским параметрам]].
283285- переопределить выходной каталог (-FU) через **OutDir**. Обратите внимание, что при использовании относительного каталога, такого как *lib/\$(TargetOS)*, добавляется рабочий каталог цели, а не каталог проекта. Например, когда опция переопределяет выходной каталог пакета *SynEdit*, тогда выходной каталог synedit изменяется на *\<lazarusdir\>/components/synedit/lib/\$(TargetOS)*.
284286
285287Вы можете создать новую опцию, нажав кнопку **Add**(Добавить) над матрицей. Вы можете изменить тип опции в любое время.
286288
287289### Включение параметров сборки в режимах сборки
288290
289291Опция может быть включена с режимами сборки проекта. Вы можете включить опцию только в одном режиме сборки или нескольких из них. Каждая опция сборки имеет строку в матрице, каждый режим сборки имеет столбец в матрице. Каждая комбинация имеет флажок. Параметры сборки применяются сверху вниз.
290292
291293Обратите внимание, что включение параметров в режимах сборки сеанса (хранящихся в .lps) **не** изменяет файл *lpi*. Эта информация хранится в файле *lps*. Вот почему эти чекбоксы имеют желтый фон.
292294
293295Текущий активный режим и параметры сборки имеют зеленый фон.
294296
295297Когда вы переименовываете режим сборки, также переносятся включенные состояния опций lpi и lps. Включенные состояния параметров IDE *не* переносятся. Например, когда опция IDE включена для режима *debug* и вы переименовываете режим в *Test*, тогда опция IDE все еще включена для режима *debug* для других проектов.
296298
297299### Место хранения настроек сборки
298300
299301Настройка может быть сохранена в
300302
301303- проекте (.lpi)
302304- сеансе работы проекта (.lps)
303305- или в конфигурации IDE (environmentmentoptions.xml) - тогда он доступен для всех проектов
304306
305307Параметры сборки применяются сверху вниз. Это означает, что сначала параметры сохраняются в IDE, затем параметры сохраняются в .lpi и, наконец, параметры сохраняются в сеансе работы.
306308
307309С помощью кнопок «Вверх» и «Вниз» над матрицей вы можете перемещать параметры сборки и целевые объекты в другие группы хранения.
308310
309311> **Note:** Опция в конфигурации IDE для режима *debug* применяется кj **всем** проектам с этим режимом. Например, когда вы открываете сторонний проект с режимом сборки *debug*, опция будет применена и предупреждения не будет. Это может сломать проект.
310312
311313### Цели параметров сборки
312314
313315Параметры сборки могут быть применены к проекту и/или к одному или нескольким пакетам. Вы можете ограничить область действия параметров сборки, чтобы они применялись только к определенным целям (проектам, пакетам). Параметры сборки сгруппированы по **Targets**(Целям). **Targets**(Цели) не чувствительны к регистру и допускают звездочку "*" для любого количества произвольных символов и знак вопроса "?" за один произвольный символ. Вы можете исключить цели, добавив минус "-". Чтобы отредактировать цель, нажмите позади 'Targets:'.
314316
315317Примеры целей:
316318
317319- *****: Звездочка "*" - значит подходит всем. Опция применяется к проекту и всем пакетам. Это по умолчанию.
318320- **LCL,Lazutils**: Применимо только к пакетам "LCL" и "LazUtils"
319321- ***dsgn,-syneditdsgn**: Применимо ко всем пакетам, оканчивающимся на "dsgn", исключая "syneditdsgn".
320322- **\#project**: Это соответствует самому проекту. Опция применяется только к проекту, а не к используемым пакетам.
321323- **\#ide**: Это соответствует IDE. Опция применяется только к IDE, а не к установленным пакетам.
322324
323325Вы можете иметь любое количество целей. Вы можете создать новую цель с помощью кнопки **Add**(Добавить) над матрицей. Вы можете перемещать цели с помощью кнопок вверх и вниз в другие хранилища. Все параметры сборки целевой группы также перемещены.
324326
325327![](/wiki-images/8/85/Targets_project_options.png)
326328
327329### Цвета в матрице
328330
329331- **Зеленый**: текущий активный режим и опции
330332- **Желтый**: сохраненные в сеансе работы без изменения lpi
331333- **Красный**: ошибка синтаксиса
332334
333335### Примеры для дополнений и перекрытий
334336
335337- Добавьте параметры компилятора к пакетам, не затрагивая lpk. Например, вы можете добавить проверку диапазона *-Cr* с помощью опции **custom** в разделе **Targets: ***.
336338- Измените каталог вывода пакетов без затрагиванияя lpk. Например, путем добавления **OutDir** в поле **Targets: ***.
337339- Определите макросы IDE только для некоторых пакетов или только для проекта. Например, скомпилируйте LCL с флагом **-dQT_NATIVE_DIALOGS**, добавьте новую цель **Targets: LCL**, а затем добавьте пользовательский параметр.
338340- Добавьте параметры компилятора ко всем проектам с режимом сборки «debug», путем добавления параметров в группу хранения IDE.
339341- Измените каталог вывода пакета(ов) для всех проектов с режимом сборки «релиз». Добавьте опцию сборки к опциям, хранящимся в IDE.
340342- Объедините вышеперечисленное с сессиями, и вы сможете изменять сторонние проекты и пакеты, не касаясь их.
341343
342344#### Изменение LCLWidgetType в версии 1.1 и выше
343345
344346Этот параметр доступен только тогда, когда проект использует пакет LCL
345347
346348Перейдите в Project(Проект) \> Project Options(Параметры проекта) \> Comiler Options(Параметры компилятора) \> Additions and Overrides(Дополнения и перекрытия) \> Set(Прсивоить) "LCLWidgetType".
347349
348350![](/wiki-images/9/95/SetLCLWidgetTypeIn1_7.png)
349351
350352#### Добавление флага в проект и все пакеты
351353
352354> **Note:** Это изменяет проект (.lpi). Оно не изменяет файлы пакета (.lpk), но влияет на них при сборке проекта. Это также влияет на сборку IDE.
353355
354356Перейдите к **Additions and Overrides**(Дополнениям и перекрытия). Нажмите кнопку **Add**(Добавить) и выберите **Custom Option**(Пользовательский параметр):
355357
356358![](/wiki-images/f/fe/Addflagtoprojectsandpackages1.png)
357359
358360Теперь вы должны увидеть "*Targets: **"(Цель: *) и новую опцию \[**Custom**\]. Она включена для текущего активного режима сборки и отключена для всех остальных. **Targets: ***(Цель: *) означает, что это относится к проекту и всем пакетам.
359361
360362![](/wiki-images/6/64/Addflagtoprojectsandpackages2.png)
361363
362364Нажмите на ячейку \[справа от\] опции \[**Custom**\] и добавьте свой флаг. Например: **-dSomeFlag**.
363365
364366![](/wiki-images/a/a9/Addflagtoprojectsandpackages3.png)
365367
366368Вот так.
367369
368370#### Добавление флага ко всем проектам и пакетам
369371
370372Флаг из предыдущего абзаца активен только при загрузке проекта. Чтобы установить флаг для всех проектов, выберите опцию и нажмите кнопку «вверх» (зеленая стрелка вверх). Это перемещает параметр в группу "Stored in IDE"(Хранящиеся в IDE).
371373
372374![](/wiki-images/e/e7/Addflagtoallprojectsandpackages1.png)
373375
374376> **Note:** В среде IDE используются параметры режима сборки "default"(по умолчанию).
375377
376378#### Изменение каталога вывода проекта и всех пакетов
377379
378380Перейдите к **Additions and Overrides**(Дополнения и перекрытия). Нажмите кнопку **Add**(Добавить) и выберите **Output Directory (-FU)**(Каталог вывода (-FU)).
379381
380382![](/wiki-images/7/7a/AddsAndOverridesOutDir1.png)
381383
382384Теперь вы должны увидеть "*Targets: **"(Цели: *) и новый параметр «OutDir» со значением по умолчанию **lib/\$(TargetCPU)-\$(TargetOS)/\$(BuildMode)**. Он включен для текущего активного режима сборки и отключен для всех остальных. "*Targets: **"(Цели: *) означает, что это относится к проекту и всем пакетам.
383385
384386![](/wiki-images/6/6a/AddsAndOverridesOutDir2.png)
385387
386388Например: щелкните ячейку \[справа от параметра *OutDir*\] и измените ее \[значение\] на **lib/\$(FPCVer)/\$(TargetCPU)-\$(TargetOS)**. Это заставит IDE использовать разные каталоги вывода для каждой версии компилятора Free Pascal.
387389
388390Если вы хотите использовать одни и те же выходные каталоги для всех ваших проектов, вы можете поместить опцию в \[раздел\] **Stored in IDE**(Хранящиееся в IDE). Щелкните в ячейке \[справа от\] параметра *OutDir*, чтобы выбрать строку. Затем используйте кнопку «Вверх» (стрелка вверх), чтобы переместить параметр.
389391
390392Если вы хотите применить каталог вывода для всех пакетов, но не для проектов, измените значение **Targets**(Цели) с *** на **,-#project*.
391393
392394![](/wiki-images/e/e2/AddsAndOverridesAllPkgOutDir1.png)
393395
394396> **Note:** Если пакет не поддерживает ваш каталог вывода, добавьте к *Targets*(Цели) значение **-packagename**. Например: ***, - chmhelp**.
395397
396398Если вы хотите поместить выходные файлы пакета в подкаталоги проекта, измените *OutDir* на **\$(ProjPath)/lib/\$(PkgName)/\$(TargetCPU)-\$(TargetOS)/\$(BuildMode)**. Обратите внимание на использование макросов *\$(ProjPath)* для каталога проекта и*\$(PkgName)* для предоставления каждому пакету своего собственного каталога.
397399
398400![](/wiki-images/d/d1/OutputDirectoryOFAllPackagesIntoProjectDirectory.png)
399401
400402Например, если каталог вашего проекта - *C:\pascal\myapp*, то пакет LCL будет скомпилирован в *C:\pascal\myapp\lib\LCL\i386-win32\default*.
401403
402404#### Добавление флага в один пакет без изменения самого lpk
403405
404406В этих примерах опция *-vm4104* добавляется в пакет *lazreport*.
405407
406408- Перейдите в **Additions and Overrides**(Дополнения и перекрытия).
407409- Нажмите на кнопку **Add**(Добавить) и выберите "New Target"(Новая цель). Вставляется новая строка с «Targets: *»(Цели: *)
408410- Нажмите на новую строку сразу \[справа от\] "Targets:"(Цели:). ***** теперь становится редактируемым.
409411- Измените \[текущее значение\] на имя пакета. В этом примере: *lazreport*. Нажмите Enter или нажмите на другую строку, чтобы закончить редактирование.
410412- При наведении указателя мыши на новую строку вы должны увидеть подсказку *Apply to all packages matching the name "lazreport"*(Применить ко всем пакетам с именем «lazreport»).
411413- Click on the **Add** button and select "Custom Option". A new row is inserted below the row *Targets: lazreport*. Note: You can move rows using the green arrows
412414- Нажмите кнопку **Add**(Добавить) и выберите "Custom Option"(Пользовательский параметр). Новая строка вставится ниже строки *Targets: lazreport*(Цели: lazreport).
413415
414416> **Note:** Строки можно перемещать с помощью зеленых стрелок.
415417
416418- Нажмите на новое пустое значение и измените его значение на **-vm4104**.
417419
418420Эта опция сохранится в вашем текущем проекте (lpi) и добавится только, если вы скомпилируете этот проект. Если эта опция должна использоваться со всеми вашими проектами на вашем компьютере, используйте зеленые кнопки, чтобы переместить *Targets: lazeport*(Цели: lazeport) в *Stored in IDE*(Хранящиеся в IDE).
419421
420422![](/wiki-images/6/68/AdditionsAndOverridesOptionForSinglePkg1.png)
421423
422424## Компиляция (Compilation)
423425
424426## Команды компилятора(Compiler Commands)
425427
426428![](/wiki-images/4/48/CompilerOptions-Compiler_Commands.png)
427429
428430### Создать Makefile (Create Makefile)
429431
430432Включите эту опцию, если хотите, чтобы IDE создавала файл Makefile и Makefile.fpc перед каждой сборкой. В данный момент этот флаг используется только для пакетов, но не для проектов.
431433
432434### Выполнить перед компиляцией (Execute before)
433435
434436Настройте здесь команду, которая будет выполнена перед запуском компилятора.
435437
436438Вызов при (Call on):
437439
438440- компиляции (Compile) - выполняется при нормальной компиляции (F9).
439441- сборке (Build) - выполняется, когда происходит полная сборка. Например это может быть скрипт, который чистит каталоги.
440442- запуске (Run) - выполняется, когда выполняется быстрая компиляция. При запуске проекта, IDE проверяет нужно ли чего-нибудь компилировать. Если ничего компилировать не нужно, то IDE пропускает этап компиляции. Установите эту опцию, чтобы выполнять команду даже если этап компиляции был пропущен.
441443
442444IDE может разбирать и фильтровать вывод этой команды и останавливаться при ошибках. Отметьте какие сообщения вы хотите видеть в IDE.
443445
444446### Компилятор (Compiler)
445447
446448Здесь указывается компилятор используемый проектом или пакетом. По умолчанию это макрос \$(CompPath), который заменяется версией компилятора из переменных окружения.
447449
448450### Выполнить после компиляции (Execute after)
449451
450452Настройте здесь команду, которая будет выполнена после того, как закончится работа компилятора. Смотри выше 'Выполнить перед компиляцией (Execute before)' для дополнительной информации.
451453
452454Одним из удобных способов использования может быть автоматическое копирование кросс-скомпилированного исполняемого файла с вашего ПК на целевое устройство, например на Raspberry:
453455
454-`scp "$TargetFile()" pi@raspberry:/home/pi/bin`
456+```text
457+scp "$TargetFile()" pi@raspberry:/home/pi/bin
458+```
455459
456460(И да, это работает даже без пароля, если вы создаете пару ключей с помощью ssh-keygen, а затем добавляете их в файл selected_keys вашей цели через "ssh-copy-id \[remoteuser@\]remotehost"; подробности см.\[https: //www.debian.org/devel/passwordlessssh здесь\])
457461
458462## Унаследованный(Inherited)
459463
460464> **Note:** Это было перенесено в Lazarus 1.1 в диалоговое окно **Show Options**(Показать параметры).
461465
462466На этой странице показаны все параметры компилятора, унаследованные от пакетов. Пакеты наследуют опции через их свойство **usage**(использование) [[IDE Window: Package Options/ru|опций пакета]].
463467
464468Самый верхний узел показывает все унаследованные параметры, то есть сумму всех используемых пакетов.
465469
466470Узлы ниже показывают унаследованные параметры каждого используемого пакета.
467471
468472Вы можете просмотреть/отредактировать набор используемых пакетов для проекта в Инспекторе проектов. Вы можете просмотреть/отредактировать набор используемых пакетов для пакета в редакторе пакетов.
469473
470474Для получения информации о пакетах в целом см. [[Lazarus Packages/ru|пакеты Lazarus]].
471475
472476## Использовать эти настройки по умолчанию для новых проектов
473477
474478Установите этот флажок и нажмите Ok. Настройки будут сохранены в *~/.lazarus/compileroptions.xml* (или в любом другом месте, указанном в качестве основного пути конфигурации). При создании нового проекта этот файл будет загружен для инициализации параметров компилятора. Эта функция существует с 0.9.29.
475479
476480## Кнопки (Buttons)
477481
478482### Тест (Test)
479483
480484Эта кнопка запустит различные тесты и обнаружит основные ошибки настройки. Для fpc 2.2.0 сообщит о дублирующихся модулях. Предупреждения корректны, но вы можете игнорировать их, если не хотите использовать эти модули.
481485
482486### Показать параметры (Show Options)
483487
484488Открывает диалог и показывает текущие настройки параметров командной строки.
485489
486490### Загрузка/Сохранение (Load/Save)
487491
488492Открывает диалог для сохранение и/или загрузки текущих настроек компилятора из/в файла xml.
489493
490494### Ok
491495
492496Эта кнопка применяет выбранные настройки и закрывает диалог.
493497
494498### Cancel
495499
496500Эта кнопка откатывает на предыдущую версию настроек и закрывает диалог.
497501
498502------------------------------------------------------------------------
499503
500504------------------------------------------------------------------------
501505
502506## Макросы IDE
503507
504508![](/wiki-images/6/6c/CompilerOptions-IDE_Macros.png)
505509
506510### Для \[версий с\] 0.9.29 по 1.0.x
507511
508512Эта страница позволяет определить макросы и условия вашего проекта/пакета. В среде IDE уже есть много \[предопределенных\] [[IDE Macros in paths and filenames/ru|макросов]]. Вы можете добавить свои собственные макросы, которые действительны при загрузке проекта/пакета. Условия позволяют устанавливать значения макросов в зависимости от целевой платформы и других макросов. Например, вы можете добавить опцию компоновщика при компиляции для macOS.
509513
510514Используйте левую кнопку **+**, чтобы добавить новый макрос для проекта/пакета. Выберите макрос и нажмите среднюю кнопку **+**, чтобы добавить новое возможное значение. Фактическое значение макроса задается в условных выражениях ниже или в текущем проекте на странице **build modes** (меню IDE / Project / Project Options / Compiler options / Build Modes). Чтобы удалить значение или макрос, выберите его и нажмите кнопку **-**.
511515
512516В условных выражениях используется язык сценариев, похожий на паскаль, и они редактируются в текстовом редакторе внизу страницы. Многие ярлыки работают как в редакторе исходного кода, включая завершение слова/идентификатора (по умолчанию: `Ctrl` + `Spase`).
513517
514518Для получения дополнительной информации о макросах сборки и условных выражениях см. [[Macros and Conditionals]].
515519
516520![](/wiki-images/5/52/Compileroptions_buildmacros1.png)
517521
518522Эта страница существует с версии 0.9.29.
519523
520524### Для \[версии\] 1.1 и выше
521525
522526Эта страница доступна только для пакетов. Это позволяет пакетам определять свои собственные макросы IDE. В среде IDE уже есть много \[\[IDE_Macros_in_paths_and_filenames/ru\|\[предопределенных\] макросов\]\].
523527
524528Используйте левую кнопку **+**, чтобы добавить новый макрос для проекта/пакета. Выберите макрос и нажмите среднюю кнопку **+**, чтобы добавить новое возможное значение. Фактическое значение макроса задается в условных выражениях ниже или в текущем проекте на странице **build modes** ("режимы сборки") (меню IDE / Project / Project Options / Compiler options / Build Modes). Чтобы удалить значение или макрос, выберите его и нажмите кнопку **-**.
525529
526530Для получения дополнительной информации о макросах сборки и условных выражениях см. [[Macros and Conditionals]].
527531
528532## Прочее
529533
530534См. [Free Pascal - Online documentation](http://www.freepascal.org/docs.html)
531535
532536Обычно вы определяете здесь некоторые параметры компилятора. Например, вы можете определить в режиме сборки что-то вроде
533537
534538``` pascal
535539 -dRELEASE
536540```
537541
538542Затем в режиме сборки будет скомпилирован только код, окруженный
539543
540544``` pascal
541545{$ IFDEF RELEASE}
542546...
543547{$ ENDIF}
544548```
545549
546550Это можно использовать в качестве альтернативы системе макросов, особенно если вы перешли с Delphi.
547551
548552Пробелы в начале и в конце удаляются. Разрывы строк заменяются пробелом перед передачей компилятору. Ведущий пробел добавляется автоматически.
549553
550554Среда IDE заменяет макросы IDE в пользовательских параметрах и анализирует параметры. Флаги, такие как `-dRelease`, передаются в codetools, поэтому редактор исходного кода узнает о них сразу.
551555
552556> **Warning:** Не добавляйте параметры пути -Fu, -Fi, -Fl, -FU, -o. Вместо этого используйте поля на странице [[IDE Window: Compiler Options/ru|Пути (Paths)]]. Среда IDE игнорирует пути в пользовательских параметрах. Она не обновляет их при добавлении или удалении файлов или при открытии проекта на другом хосте.
553557
554558Нажав кнопку **All options...** ("Все параметры ..."), вы можете легко настроить параметры FPC:
555559
556560![](/wiki-images/8/8b/Options.png)
557561
558562---
559563*From the Free Pascal wiki, page "IDE Window: Compiler Options/ru", as it stood on 2019-12-22 after a change by Trev, 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).*

Back to history