IDE Window: Compiler Options/ru

From Lazarus wiki
Jump to navigationJump to search

Deutsch (de) English (en) español (es) français (fr) 日本語 (ja) русский (ru)

Пути (Paths)

Compiler Options - Paths
  • Относительные пути дополняются путём от файла проекта или каталога пакета (где расположен файл .lpi/.lpk).
  • Эти пути добавляются в пути поиска. Они не заменяют существующие пути.
  • В среде IDE есть один набор путей поиска для каждого пакета / проекта. Это означает, что пакет может иметь пути поиска, отличные от активного проекта.
    «Набор путей поиска» относится к пути поиска объекта, включает в себя путь поиска, путь поиска источников, ...
  • Если пакет или проект использует другие пакеты, со своими путями поиска. То эти "унаследованные" пути можно найти на закладке #Унаследованные (Inherited).
    • Если вы не хотите использовать путь поиска, унаследованные от используемого пакета, вы должны изменить параметры компилятора используемого пакета.
  • Пользуясь системой пакетов Lazarus вам практически не придётся устанавливать пути поиска вручную.
  • Компилятор FreePascal имеет собственный файл настроек (по умолчанию /etc/fpc.cfg) который определяет набор путей поиска модулей. Например для нахождения модулей FPC из RTL или FCL вроде 'classes', 'sysutils'. Не добавляйте туда пути поиска к исходным файлам (.pas, .inc).
  • Пути поиска разделяются точкой с запятой ';'.
  • Начальные и конечные пробельные символы игнорируются и автоматически убираются IDE. IDE нормализует пути поиска и добавляет разделитель пути (windows: /, все остальные: \). Пути каталога автоматически конвертируются в формат подходящий текущей операционной системе при открытии файла проекта .lpi или .lpk.
  • Вы можете использовать макросы. Например $(TargetCPU). Подробнее смотрите IDE Macros in paths and filenames.
  • В среде IDE есть один набор настроек путей для каждого каталога:
    • Каждый каталог в пути поиска модуля проекта получает все пути поиска проекта.
    • Каждый каталог в пути поиска модуля пакета получает все пути поиска пакета.
    • Другие каталоги получают пути поиска проекта. Если путь поиска проекта содержит '.', каталог также увидит каталог проекта.
  • Использование "uses unitname in 'filename'" не влияет на любой путь поиска.

Другие модули (Other Unit Files)

Это пути поиска для модулей паскаля (.ppu, .pp, .pas, .p) вашего проекта или пакета. Посмотрите заголовок окна, чтобы узнать какого. Этот путь будет передан компилятору FreePascal, который добавит их к своим Unit Path.

  • Добавляя и убирая модули из проекта/пакета, IDE спросит вас о необходимости изменить пути поиска.
  • Этот путь содержит каталоги вашего проекта (или вашего пакета), который содержит файлы .pas, .pp или .p.
  • Если вы хотите использовать одни и те же модули между разными проектами, создайте пакет для них. Это просто.
Light bulb  Примечание: Не добавляйте каталоги использованный пакетов в этот путь. Это повлечёт за собой то, что FPC скомпилирует файлы .ppu включенного пакета и поместит их в ваш каталог проекта. Вы столкнётесь с множественными версиями .ppu и получите странные 'Can not find unit' ошибки.
Например: не добавляйте никакие FPC или LCL каталоги исходников в этот путь.

Включаемые файлы (Include Files)

Это путь поиска для включаемый файлов (таких как файлы .inc, .lrs). Этот путь передаётся компилятору FreePascal Compiler, который добавляет их к своим путям поиска Включаемых файлов (Include Path), которые используются в директивах включения вроде {$I filename.inc} или {$INCLUDE filename.inc}.

Другие исходные коды (Other sources)

Это пути поиска для модулей исходного кода паскаль, которые используются только IDE, но не компилятором.

Например: У вас имеется каталог с исходниками и каталог с соответствующими файлами .ppu. Вы добавляете каталог с .ppu в пути 'Другие модули (Other Unit Files)' а каталог с .pas в 'Другие исходные коды (Other sources)'. Таким образом компилятор будет использовать файлы .ppu и не будет пытаться компилировать их каждый раз. В то же самое время, IDE найдёт файлы с исходниками и будет работать функция Найти объявление (Find Declaration).

Библиотеки (Libraries)

Это пути поиска для библиотек (файлов .dll или .so или .a).

Каталог вывода модулей (Unit output directory)

Это каталог в который компилятор будет выводить файлы компиляции вроде .ppu, .o, .rst файлов (он передает это переключателю компилятора -FU). Если вы используете директиву $R для файлов lfm, она также скопирует туда файлы lfm.

Популярным примером использования является выходной каталог с именем units, а затем дополнительный подкаталог для целевого CPU и целевой OS. Например:

 units/$(TargetCPU)-$(TargetOS)

Примечание:

  • Если выходной каталог модуля пуст, Lazarus не 'передаст переключатель -FU компилятору. Затем компилятор будет использовать переключатель -FE. См.Project target file
  • Пакеты обычно наследуют свой выходной каталог другим пакетам с помощью параметров 'usage'. Вам не нужно добавлять пути к пакетам вручную в ваш проект.
  • Если выходной каталог пакета пуст, макрос $(PkgOutDir) также [будет пустым] и не будет наследоваться для нисходящих пакетов и проектов. Используйте точку ".", чтобы определить текущий каталог.

Имя целевого файла

Light bulb  Примечание: только проекты имеют это. Эта опция недоступна для пакетов.

Установите здесь имя файла сгенерированного исполняемого файла. Если файл является относительным, он будет расширен каталогом проекта (где находится файл .lpi). Если файл не указан, исполняемый файл помещается в выходной каталог модуля и имеет имя основного исходного файла (обычно файла .lpr) без расширения. Если расширение не указано, добавляется расширение по умолчанию для платформы (например, «.exe» для MS Windows, но не для других). Когда новый проект еще не был сохранен и собран, среда IDE сохраняет файлы в тестовом каталоге. Относительные файлы затем относятся к этому каталогу.

Lazarus передает переключатель компилятора

  • -o определяет имя целевого файла.
  • -FE если имя целевого файла отсутствует в каталоге проекта (где находится файл lpi)
  • -FU если выходной каталог устройства не пуст

Если имя целевого файла находится в другом каталоге (не в каталоге файла .lpi), Lazarus передаст компилятору ключ -FE, чтобы убедиться, что вторичные файлы, такие как .o и .rst помещаются в один и тот же каталог. Если вы очистили unit output directory(каталог вывода модуля), то среда IDE не передаст переключатель -FU, и компилятор сгенерирует файлы .ppu/.o для модулей тоже в целевом каталоге.

Если вы очистили unit output directory(каталог вывода модуля) и целевой файл проекта находится в каталоге проекта, то ни -FU ни -FE не передается компилятору, и компилятор будет работать с Delphi-совместимым файлом и генерировать файл «.ppu/.o» для каждого модуля в том же каталоге, что и модуль.

Применение конвенций

Включите это, чтобы применить различные соглашения об именах в зависимости от целевой платформы.

  • Windows: Если это программа, она добавляет расширение .exe; если это библиотека, к ней добавляется «.dll».
  • Unix (например, Linux, BSD, Darwin/OS X): если это библиотека, то имя в нижнем регистре, и если имя не начинается с 'lib', оно предшествует 'lib'.
  • Linux, BSD: Если это библиотека, то добавляется '.so'.
  • Darwin/OS X: Если это библиотека, то добавляется '.dylib'.

Examples

Каталог вывода модуля Имя целевого файла Сгенерированные варианты Примечание
lib/$(TargetCPU)-$(TargetOS) пустой -FElib\x86_64-win64 -olib\x86_64-win64\project1.exe все выходные файлы помещаются в lib\x86_64-win64\
lib foo -FUlib -FE. -ofoo.exe все выходные файлы модуля, такие как ppu и o, помещаются в lib\, выходные файлы программы помещаются в базовый каталог (где находится lpi)
lib foo/bar -FUlib -FEfoo -ofoo\bar.exe все выходные файлы модуля, такие как ppu и o, помещаются в lib\, выходные файлы программы помещаются в foo
пустой пустой -oproject1.exe файлы ppu помещаются в файлы .pas, например, src\unit1.pas создаст src\unit1.ppu
пустой foo -ofoo.exe файлы ppu помещаются в файлы .pas
пустой . (одна точка и применение соглашений отключены) файлы ppu помещаются в файлы .pas, выходной файл может быть любым, как определит по умолчанию компилятор

Дополнения к путям отладчика (Debugger path addition)

Эти каталоги добавляются в пути поиска отладчика IDE, когда он ищет исходники (модули и файлы включения).

Библиотека виджетов LCL (LCL widget type)

Это выбор используемого набора виджетов LCL. Обычно используется набор виджетов по умолчанию. Если вы хотите попробовать другой набор виджетов, просто выберите его.

  • Набор виджетов по умолчанию - это набор виджетов для текущего проекта.
  • Набор виджетов по умолчанию зависит от текущей операционной системы. Например: win32 для windows 2000.
  • Вы не должны устанавливать набор виджетов для пакетов, поскольку проект не сможет этого изменить. Устанавливайте его для пакетов только если этот пакет может использоваться лишь с одним конкретным набором виджетов LCL.

Настройка и целевая платформа (Config and Target)

CompilerOptions-Config and Target.png

Режимы сборки (Build modes)

Добавление, удаление, активация режимов сборки

Только проекты имеют режимы сборки. Пакет не имеет режимов сборки.

Режимы сборки позволяют определять sets of compiler options (наборы опций компилятора) и быстро переключаться между этими наборами. Например, вы можете определить mode (режим) для отладки, который компилирует ваш проект с проверкой диапазона, а ваш режим по умолчанию - нет.

Light bulb  Примечание: Если вы хотите передать некоторые параметры в зависимости от платформы, например, передать некоторые дополнительные параметры компоновщика в OS X, пожалуйста, посмотрите на макросы IDE.

Как добраться до этого диалога: Project(Проект) / Project Options(Настройки проекта) / Compiler Options (Настройки компилятора). Убедитесь, что "Build Modes" (Режимы сборки) включены.

EditProjectBuildModes.png

Нажмите кнопку «...» справа, чтобы добавить/удалить/переименовать режимы сборки:

ListOfBuildModes1.png

Сетка содержит список режимов сборки с тремя столбцами.

Первый столбец показывает, какой режим в данный момент активен, он отмечен. Когда вы активируете другой режим, все страницы параметров компилятора будут загружать настройки нового режима, включая значения макросов на странице режимов сборки. Всегда активен только один режим, и вы можете редактировать свойства только одного режима за раз. Какой режим активен, он хранится в файле сеанса (lps). Режим по умолчанию - первый режим.

Если ваш проект хранит сеанс в отдельном файле lps (см. Project options(Параметры проекта) / Session(Сеанс работы) / Save session info in(Сохранять сведения о сеансе работы в)), вы можете сохранить дополнительные режимы в файле сеанса lps, чтобы у каждого разработчика был свой набор режимов. В этом случае второй столбец показывает, где хранится режим, в lpi или lps (в сеансе). Имейте в виду, что первый режим является режимом по умолчанию для проекта, поэтому он должен храниться в проекте, а не в файле сеанса.

Последний столбец - это название режима. Это произвольная строка, поэтому вы можете дать ей короткое имя или целое предложение.

  • Кнопка плюс добавляет новый режим, дублируя текущий активный и активируя его.
  • Кнопка минус удаляет текущий выбранный режим. Должен быть хотя бы один режим. Если вы удалите первый режим, который является режимом по умолчанию, второй режим автоматически становится режимом по умолчанию.
  • The up, down buttons allows to reorder the modes.
  • Кнопки вверх, вниз позволяют изменить порядок режимов.

Подсказка:: после того, как вы добавили другой режим сборки, в главной панели IDE появится новая кнопка для быстрого переключения текущего активного режима.

Light bulb  Примечание: При открытии нового проекта со старой IDE (<0.9.31) вы увидите только режим по умолчанию. Если вы сохраните проект со старой IDE, вы потеряете все остальные режимы, все макросы и условия.

Опция «Режимы сборки» существует с версии 0.9.31.

Добавление режимов release(окончательный релиз) и debug(отладка)

Наиболее распространенной задачей для проектов будет добавление простых режимов сборки окончательного релиза(release) и отладки(debug). Не забывайте всегда использовать режим сборки debug(отладки), потому что отладка не будет работать в режиме сборки окончательного релиза, а затем использовать режим сборки окончательного релиза только в окончательной версии приложения.

  1. Перейдите к Project(Проект) / Project Options(Параметры проекта) / Compiler Options(Параметры компилятора)
  2. Включите "Build Modes"(Режимы сборки) вверху. Появится комбобокс для режимов сборки и кнопка редактирования.
  3. Нажмите на кнопку с надписью «...», чтобы открыть диалог режимов сборки.
  4. Нажмите на кнопку "Create Debug and Release modes"(Создать режимы отладочной и конечной сборки). Это добавит два режима сборки "Debug" and "Release".
  5. Закройте диалоговое окно

BuildModesAddedDebugAndRelease1.png

Каждый режим сборки представляет собой полный набор параметров компилятора. Вы можете легко переключаться между режимами сборки либо с помощью комбинированного списка в верхней части параметров проекта, либо на главной панели инструментов IDE с помощью кнопки со стрелкой справа от кнопки Compile(Скомпилировать).

BuildModeSelectorInIDEToolBar1.png

После того, как мы выберем режим сборки Debug, все конфигурации в диалоге параметров проекта будут привязаны к этому режиму сборки. Вот страница по умолчанию Debugging(Отладка) в режиме Debug:

BuildModeDebugPageDebugging.png

Когда мы выбираем режим сборки Release, все конфигурации в диалоге параметров проекта будут привязаны к этому режиму сборки. Вот страница по умолчанию Debugging(Отладка) в режиме Release:

BuildModeReleasePageDebugging.png

Выбор активного режима сборки

Можно выбрать активный в настоящий момент режим сборки либо в диалоговом окне "Project Options"(Параметры проекта), либо в главном окне IDE, в специальной кнопке с выпадающим списком, который появится только в том случае, если проект имеет более одного режима сборки, как можно увидеть на этом скриншоте:

Selecting Build Mode Main IDE Windows.png

Project macros

See here for adding your own macros or defining the LCLWidgetType macro.

Обработка (Parsing)

Смотрите Free Pascal - Online documentation

Режим синтаксиса (Syntax mode)

Выберите режим по умолчанию. Если модуль не содержит директивы {$mode somemode}, выбранный режим будет использоваться по умолчанию.

Смотрите Free Pascal - Online documentation


Параметры синтаксиса (Syntax Options)

  • Операторы в стиле C (C Style Operators) (*=, +=, /= and -=)
  • Включить код Assert (Include Assertion Code)
  • Разрешить LABEL и GOTO (Allow LABEL and GOTO)
  • INLINE в стиле C++ (C++ Styled INLINE)
  • Макросы в стиле C (C Style Macros (global))
  • Конструктор должен быть init (деструктор должен быть done) (Constructor name must be init (destructor must be done))
  • Ключевое слово Static в объектах (Static Keyword in Objects)
  • Использовать строки Ansi (Use Ansi Strings)

Стиль ассемблера (Assembler style)

  • -Rdefault по умолчанию
  • -Ratt AT&T
  • -Rintel Intel

Код (Code)

Смотри Free Pascal - Online documentation

Связывание (Linking)

CompilerOptions-Compilation and Linking.png

Для настройки отладки см. Настройки проекта


Debugging

Compiler Options - Debugging

Сообщения (Verbosity (Messages))

Compiler Options - Verbosity

Смотри Free Pascal - Online documentation. Примечание: добавление большого количество сообщений сильно замедляет процесс компиляции даже если большинство сообщений будет спрятано в окне сообщений.

Сообщения (Messages)

Compiler Options - Messages

(Появилась в версии 0.9.27) Эта страница позволяет контролировать какие сообщения компилятор будет показывать в Notes, Hints и Warnings. Необходимо, чтобы компилятор FP поддерживал переключатель -m (версия 2.2.2 или выше).

Также возможно указать язык текста сообщений (файл должен быть в кодировке Utf-8), чтобы видеть сообщения компилятора переведёнными без необходимости модифицировать файл конфигурации компилятора fpc.cfg.

Пример перевода файла сообщений можно найти ${LazarusDir}/fpc/${FPCTARGET}/msg, например C:\Lazarus\fpc\2.2.3\msg

Custom Options

CompilerOptions-Custom Options.png

You'll typically define some compiler options here. For example you can define in a build mode something like

-dRELEASE

Then in the build mode, only the code surrounded by the {$IFDEF RELEASE} {$ENDIF} will be compiled. This can be used alternatively to the Macro system, particularly if you come from Delphi.

Spaces at start and end are removed. Line breaks are replaced by a space before passing to the compiler. A leading space is added automatically.

The IDE substitutes IDE macros in custom options and parses the options. Flags like -dRelease are passed to codetools, so the source editor knows them immediately.

Warning-icon.png

Предупреждение: Do not add the path options -Fu, -Fi, -Fl, -FU, -o. Use the fields on the page Paths instead. The IDE ignores the paths in the custom options. It does not update them, when you add or delete files or when you open the project on another host.

Additions and Overrides

The page "Additions and Overrides" exists since 1.1.

Overview

The page contains a matrix of build options.

CompilerAdditionsAndOverrides1.png

The settings "custom options", "output directory", and "IDE Macros" within any target can be switched on and off separately for each build mode.

Thus, for each target, there is a Matrix of enabling check boxes.

The vertical words in the header show all the Build Modes that are currently defined, and by this they denote the column in the matrices.

At the right side of each row of any matrix, the description of the type (such as "Custom", "OutDir", or "IDE Macro" ) and the value of the option to be enabled, is given.

Types of build options

A build option can

  • set an IDE macro. The value must be of the form MacroName:=Value. For instance LCLWidgetType:=qt. You can use IDE macros in the value, but not in the name.
  • append some custom compiler options via Custom (e.g. append -O3). You do not need a leading space. That is added automatically. See the notes about Custom options.
  • override the output directory (-FU) via OutDir. Note that when you use a relative directory like lib/$(TargetOS) the working directory of the target is added, not the project directory. For example when the option overrides the output directory of the package SynEdit, then the output directory of synedit is changed to <lazarusdir>/components/synedit/lib/$(TargetOS).

You can create a new option by clicking on the Add button above the matrix. You can change the type of an option at any time.

Enabling build options in build modes

An option can be enabled with the build modes of the project. You can enable the option only in one build mode or several of them. Each build option has a row in the matrix, each build mode has a column in the matrix. Each combination has a checkbox. Build options are applied from top to bottom.

Note that enabling options in build modes of the session (stored in the .lps) does not alter the lpi file. This information is stored in the lps file. That's why these checkboxes have a yellow background.

The currently active build mode and options have a green background.

When you rename a build mode the enabled states of the lpi and lps options are migrated too. The enabled states of IDE options are *not* migrated. For example when an IDE option is enabled for mode debug and you rename the mode to Test, then the IDE option is still enabled for mode debug for other projects.

Storage location of build options

An option can be stored in

  • the project (.lpi)
  • the project session (.lps)
  • or in the IDE configuration (environmentoptions.xml), then it is available to all projects

Build options are applied from top to bottom. That means first the options stored in the IDE, then the options stored in the .lpi and last the options stored in the session.

You can move build options and whole targets via the Up and Down button above the matrix to other storage groups.

Note: An option in the IDE configuration for mode debug is applied to all projects with this mode. For instance when you open a third party project having the build mode debug the option will be applied and there will be no warning. This might break the project.

Targets of build options

A build option can be applied to the project and/or to one or more packages. You can limit the scope of the build options to only apply to specific targets (project, packages). Build options are grouped by Targets. The targets are case insensitive and allow the asterisk "*" for any number of arbitrary characters and the question mark "?" for one arbitrary character. You can exclude targets by prepending a minus "-". To edit a target click behind the 'Targets:'.

Examples of targets:

  • *: The asterisk "*" means fits all. The option is applied to the project and all packages. This is the default.
  • LCL,Lazutils: Apply it only to package "LCL" and "LazUtils"
  • *dsgn,-syneditdsgn: Apply it to all packages ending with "dsgn", except "syneditdsgn".
  • #project: This fits the project itself. The option is applied only to the project, not to the used packages.
  • #ide: This fits the IDE. The option is applied only to the IDE, not to installed packages.

You can have any number of targets. You can create a new target via the the Add button above the matrix. You can move targets via the up and down buttons to other storages. All build options of the target group are moved as well.

Colors in the matrix

  • Green: currently active mode and options
  • Yellow: stored in session, not altering the lpi
  • Red: syntax error

Examples for additions and overrides

  • Append compiler options to packages without touching the lpk. For example you can append range checking -Cr via custom option under Targets: *.
  • Changing the output directory of packages without touching the lpk. For example add a OutDir under Targets: *.
  • Define IDE macros only for some packages or only for the project. For example compile the LCL with flag -dQT_NATIVE_DIALOGS, add a new target Targets: LCL, then add a custom option.
  • Append compiler options to all projects with build mode "debug" by adding options to the IDE storage group.
  • Change the package(s) output directory for all projects with build mode "release". Add the build option to the options stored in the IDE.
  • Combine the above with sessions and you can alter third party projects and packages without touching them.

Changing the LCLWidgetType in Version 1.1 and above

This setting is only available when the project uses the package LCL.

Go to Project > Project Options > Comiler Options > Additions and Overrides > Set "LCLWidgetType".

SetLCLWidgetTypeIn1 7.png

Add a flag to project and all packages

Note: This modifies the project (.lpi). It does not alter the package files (.lpk), but it effects them when you build the project. It also effects building the IDE.

Go to Additions and Overrides. Click on the Add button and select Custom Option:

addflagtoprojectsandpackages1.png

You should now see a "Targets: *" and the new option. It is enabled for the currently active build mode and disabled for all other. The Targets: * means it applies to the project and all packages.

addflagtoprojectsandpackages2.png

Click in the value cell behind the option and add your flag. For example: -dSomeFlag.

addflagtoprojectsandpackages3.png

That's it.

Add a flag to all projects and packages

The flag from the previous paragraph is only active when the project is loaded. To set the flag for all projects, select the option and click on the up button (green arrow up). This moves the option to the "Stored in IDE" group.

addflagtoallprojectsandpackages1.png

Note: The IDE uses the options of build mode "default".

Change the output directory of project and all packages

Go to Additions and Overrides. Click on the Add button and select Output Directory (-FU).

AddsAndOverridesOutDir1.png

You should now see a "Targets: *" and the new option "OutDir" with the default value lib/$(TargetCPU)-$(TargetOS)/$(BuildMode). It is enabled for the currently active build mode and disabled for all other. The Targets: * means it applies to the project and all packages.

AddsAndOverridesOutDir2.png

For example: Click in the value cell behind the option and change it to lib/$(FPCVer)/$(TargetCPU)-$(TargetOS). This will use different output directories for each Free Pascal compiler version.

If you want to use the same output directories for all your projects, you can put the option under Stored in IDE. Click in the value cell of the OutDir option to select the row. Then use the Up (arrow up) button to move the option.

If you want to apply the output directory to all packages, but not projects, change the Targets value from * to *,-#project.

AddsAndOverridesAllPkgOutDir1.png

Note: If a package does not support your output directory, append to Targets value -packagename. For example: *,-chmhelp.

If you want to put the package output files into sub directories of the project, change the OutDir to $(ProjPath)/lib/$(PkgName)/$(TargetCPU)-$(TargetOS)/$(BuildMode). Note the use of the macros $(ProjPath) for the project directory and $(PkgName) to give each package its own directory.

OutputDirectoryOFAllPackagesIntoProjectDirectory.png

For example if your project directory is C:\pascal\myapp then the package LCL will be compiled into C:\pascal\myapp\lib\LCL\i386-win32\default.

Add a flag to one package without altering the lpk itself

This examples appends the option -vm4104 to the package lazreport.

  • Go to Additions and Overrides.
  • Click on the Add button and select "New Target". A new row is inserted with "Targets: *"
  • Click on the new row right behind the "Targets:". The * is now editable.
  • Change it to the package name. In this example: lazreport. Press return or click on another row to finish editing.
  • When you move the mouse over the new row you should see the hint Apply to all packages matching the name "lazreport".
  • 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
  • Click in the new empty value and change its value to -vm4104.

This option is stored in your current project (lpi) and is only added if you compile this project. If the option should be used with all your projects on your machine, use the green buttons to move the Targets: lazeport up to Stored in IDE.

AdditionsAndOverridesOptionForSinglePkg1.png

Компиляция (Compilation)

Compiler Commands

CompilerOptions-Compiler Commands.png

Создать Makefile (Create Makefile)

Включите эту опцию, если хотите, чтобы IDE создавала файл Makefile и Makefile.fpc перед каждой сборкой. В данный момент этот флаг используется только для пакетов, но не для проектов.

Выполнить перед компиляцией (Execute before)

Настройте здесь команду, которая будет выполнена перед запуском компилятора.

Вызов при (Call on):

  • компиляции (Compile) - выполняется при нормальной компиляции (F9).
  • сборке (Build) - выполняется, когда происходит полная сборка. Например это может быть скрипт, который чистит каталоги.
  • запуске (Run) - выполняется, когда выполняется быстрая компиляция. При запуске проекта, IDE проверяет нужно ли чего-нибудь компилировать. Если ничего компилировать не нужно, то IDE пропускает этап компиляции. Установите эту опцию, чтобы выполнять команду даже если этап компиляции был пропущен.

IDE может разбирать и фильтровать вывод этой команды и останавливаться при ошибках. Отметьте какие сообщения вы хотите видеть в IDE.

Компилятор (Compiler)

Здесь указывается компилятор используемый проектом или пакетом. По умолчанию это макрос $(CompPath), который заменяется версией компилятора из переменных окружения.

Выполнить после компиляции (Execute after)

Настройте здесь команду, которая будет выполнена после того, как закончится работа компилятора. Смотри выше 'Выполнить перед компиляцией (Execute before)' для дополнительной информации.

One handy usage might be to automatically copy your cross-compiled executable from your PC onto your target device, e.g. a Raspberry:

scp "$TargetFile()" pi@raspberry:/home/pi/bin

(And yes, this works even without a password, if you create a key pair with ssh-keygen and then add it to sour target's authorized_keys file via "ssh-copy-id [remoteuser@]remotehost"; for details see here)

Inherited

Note: This was moved in Lazarus 1.1 to the Show Options dialog.

This page shows all the compiler options inherited from packages. Packages inherit options via their usage options.

The topmost node shows all inherited options, that is the sum of all used packages.

The nodes below show the inherited options of each used package.

You can see/edit the set the used packages for the project in the project inspector. You can see/edit the set of used packages for a package in the package editor.

For information about packages in general see Lazarus Packages.


Use these settings as default for new projects

Check this checkbox and click Ok. The settings will be saved to ~/.lazarus/compileroptions.xml (or whatever you have as primary config path). When you create a new project this file will be loaded to initialize the compiler options. This feature exists since 0.9.29.

Кнопки (Buttons)

Тест (Test)

Эта кнопка запустит различные тесты и обнаружит основные ошибки настройки. Для fpc 2.2.0 сообщит о дублирующихся модулях. Предупреждения корректны, но вы можете игнорировать их, если не хотите использовать эти модули.

Показать параметры (Show Options)

Открывает диалог и показывает текущие настройки параметров командной строки.

Загрузка/Сохранение (Load/Save)

Открывает диалог для сохранение и/или загрузки текущих настроек компилятора из/в файла xml.

Ok

Эта кнопка применяет выбранные настройки и закрывает диалог.

Cancel

Эта кнопка откатывает на предыдущую версию настроек и закрывает диалог.



Макросы IDE

Compiler Options - IDE Macros


Для [версий с] 0.9.29 по 1.0.x

Эта страница позволяет определить макросы и условия вашего проекта/пакета. В среде IDE уже есть много [предопределенных] макросов. Вы можете добавить свои собственные макросы, которые действительны при загрузке проекта/пакета. Условия позволяют устанавливать значения макросов в зависимости от целевой платформы и других макросов. Например, вы можете добавить опцию компоновщика при компиляции для Mac OS X.

Используйте левую кнопку +, чтобы добавить новый макрос для проекта/пакета. Выберите макрос и нажмите среднюю кнопку +, чтобы добавить новое возможное значение. Фактическое значение макроса задается в условных выражениях ниже или в текущем проекте на странице build modes (меню IDE / Project / Project Options / Compiler options / Build Modes). Чтобы удалить значение или макрос, выберите его и нажмите кнопку -.

В условных выражениях используется язык сценариев, похожий на паскаль, и они редактируются в текстовом редакторе внизу страницы. Многие ярлыки работают как в редакторе исходного кода, включая завершение слова/идентификатора (по умолчанию: Ctrl + Spase).

Для получения дополнительной информации о макросах сборки и условных выражениях см. Macros and Conditionals.

Compileroptions buildmacros1.png

Эта страница существует с версии 0.9.29.

Для [версии] 1.1 и выше

Эта страница доступна только для пакетов. Это позволяет пакетам определять свои собственные макросы IDE. В среде IDE уже есть много [предопределенных] макросов.

Используйте левую кнопку +, чтобы добавить новый макрос для проекта/пакета. Выберите макрос и нажмите среднюю кнопку +, чтобы добавить новое возможное значение. Фактическое значение макроса задается в условных выражениях ниже или в текущем проекте на странице build modes ("режимы сборки") (меню IDE / Project / Project Options / Compiler options / Build Modes). Чтобы удалить значение или макрос, выберите его и нажмите кнопку -.

Для получения дополнительной информации о макросах сборки и условных выражениях см. Macros and Conditionals.

Прочее

См. Free Pascal - Online documentation

Обычно вы определяете здесь некоторые параметры компилятора. Например, вы можете определить в режиме сборки что-то вроде

 -dRELEASE

Затем в режиме сборки будет скомпилирован только код, окруженный

{$ IFDEF RELEASE}
...
{$ ENDIF}

Это можно использовать в качестве альтернативы системе макросов, особенно если вы перешли с Delphi.

Пробелы в начале и в конце удаляются. Разрывы строк заменяются пробелом перед передачей компилятору. Ведущий пробел добавляется автоматически.

Среда IDE заменяет макросы IDE в пользовательских параметрах и анализирует параметры. Флаги, такие как -dRelease, передаются в codetools, поэтому редактор исходного кода узнает о них сразу.

Warning-icon.png

Предупреждение: Не добавляйте параметры пути -Fu, -Fi, -Fl, -FU, -o. Вместо этого используйте поля на странице Пути (Paths). Среда IDE игнорирует пути в пользовательских параметрах. Она не обновляет их при добавлении или удалении файлов или при открытии проекта на другом хосте.

Нажав кнопку All options... ("Все параметры ..."), вы можете легко настроить параметры FPC:

options.png