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) также [будет пустым] и не будет наследоваться для нисходящих пакетов и проектов. Используйте точку ".", чтобы определить текущий каталог.

Target file name

Note: Only projects have this. This option is not available for packages.

Set here the filename of the generated executable. If the file is relative it will be expanded with the project directory (where the .lpi file is). If no file is given the executable is put into the unit output directory and has the name of the main source file name (usually the .lpr file) without the extension. If no extension is given, the default extension for the platform is added (e.g. .exe for MS Windows, none for others). When a new project was not yet saved and is built the IDE saves the files to the test directory. The relative files are then relative to this directory.

Lazarus passes the compiler switch

  • -o to define the target file name.
  • -FE if the target file name is not in the project directory (where the lpi file is)
  • -FU if the unit output directory is not empty

If the target file name is in another directory (not the directory of the .lpi file), Lazarus will pass the -FE switch to the compiler to make sure that the secondary files, like .o and .rst are put into the same directory. If you cleared the unit output directory then the IDE will not pass the -FU switch and the compiler will generate the .ppu/.o files of the units in the target directory too.

If you cleared the unit output directory and your project target file is in the project directory, then neither -FU nor -FE is passed to the compiler and the compiler will work Delphi compatible and generate the .ppu/.o file of each unit in the same directory as the unit.

Apply Conventions

Enable this to apply various naming conventions depending on the target platform.

  • Windows: If it is a program, it appends the '.exe' extension; if it is a library, it appends '.dll'.
  • Unix (e.g. Linux, BSD, Darwin/OS X): If it is a library the name is lowercased and if the name does not start with 'lib' it prepends 'lib'.
  • Linux, BSD: If it is a library it appends '.so'.
  • Darwin/OS X: If it is a library it appends '.dylib'.

Examples

Unit output directory Target file name Generated options Note
lib/$(TargetCPU)-$(TargetOS) empty -FElib\x86_64-win64 -olib\x86_64-win64\project1.exe all output files are put into lib\x86_64-win64\
lib foo -FUlib -FE. -ofoo.exe all unit output files like ppu and o are put into lib\, program output files are put into the base directory (where the lpi is)
lib foo/bar -FUlib -FEfoo -ofoo\bar.exe all unit output files like ppu and o are put into lib\, program output files are put into foo
empty empty -oproject1.exe ppu files are put to the .pas files, e.g. a src\unit1.pas creates a src\unit1.ppu
empty foo -ofoo.exe ppu files are put to the .pas files
empty . (single dot and Apply conventions disabled) ppu files are put to the .pas files, output file is whatever the compiler's default is

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

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

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

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

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

Config and Target

CompilerOptions-Config and Target.png

Build modes

Adding, deleting, activating build modes

Only projects have build modes. A package does not have build modes.

Build modes allow to define sets of compiler options and to quickly switch between these sets. For example you can define a mode for debugging which compiles your project with range checking, while your default mode does not.

Note: If you want to pass some options depending on the platform, for example passing some extra linker options under OS X, please take a look at Build Macros.

How to reach this dialog: Project / Project Options / Compiler Options. Make sure that "Build Modes" is enabled.

EditProjectBuildModes.png

Click on the "..." button right to add/remove/rename build modes:

ListOfBuildModes1.png

The grid contains the list of build modes with three columns.

The first column shows which mode is currently active, it is checked. When you activate another mode, all compiler options pages will load the settings of the new mode, including the macro values on the build modes page. There is always only one mode active and you can only edit the properties of one mode at a time. Which mode is active is stored in the session file (lps). The default mode is the first mode.

If your project stores the session in a separate lps file (see Project options / Session / Save session info in), you can store extra modes in the lps session file, so that each developer can have her own set of modes. In this case the second column shows where the mode is stored, in the lpi or the lps (in session). Keep in mind that the first mode is the default mode for the project, so it must be stored in the project, not in the session file.

The last column is the name of the mode. It is an arbitrary string, so you can give it a short name or a whole sentence.

  • The plus button adds a new mode, by duplicating the currently active one and activates it.
  • The minus button delete the currently selected mode. There must be at least one mode. If you delete the first mode, which is the default mode, the second mode automatically becomes the default mode.
  • The up, down buttons allows to reorder the modes.
  • The rightmost button shows the differences between build modes.

Hint:: Once you added another build mode there will be a new button in the IDE main bar to quickly switch the currently active mode.

Note:: When opening a new project with an old IDE (<0.9.31), you will only see the default mode. If you save the project with the old IDE you will loose all other modes, all macros and conditionals.

Build modes exist since 0.9.31.

Adding a release and debug build modes

The most common task for projects will be adding a simple release and a simple debug build modes. Remember to always use the debug build mode, because debugging will not work in the release build mode, and then only use the release build mode in the final release of the application.

  1. Go to Project / Project Options / Compiler Options
  2. Enable "Build Modes" at the top. A selector for build modes and an edit button will appear.
  3. Click on the button labelled "..." to open the build modes dialog.
  4. Click on Create Debug and Release modes. This adds the two build modes "Debug" and "Release".
  5. Close the dialog.

BuildModesAddedDebugAndRelease1.png

Every Build Mode is a complete set of compiler options. You can switch easily between your build modes either via the combobox at the top of the project options, or in the IDE main toolbar, with the arrow button right of the Compile button.

BuildModeSelectorInIDEToolBar1.png

Once we select the Debug build mode, all configurations from the project options dialog will be specific to this build mode. Here is the default Debugging page in Debug mode:

BuildModeDebugPageDebugging.png

When we select the Release build mode, all configurations from the project options dialog will be specific to this build mode. Here is the default Debugging page in Release mode:

BuildModeReleasePageDebugging.png

Selecting the active build mode

One can select the currently active build mode either in the "Project Options" dialog or in the main IDE Window, in a special button with a drop down which will appear only if the project has more then 1 build mode, as one can see in this screenshot:

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

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

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

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

Эта страница была переименована в Verbosity, начиная с версии 0.9.27.

Сообщения (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

Другие (Other)

Смотри Free Pascal - Online documentation

Унаследованные (Inherited)

Эта страница позволяет посмотреть все настройки компилятора унаследованные от использованных пакетов. Пакеты наследуют свойства через их свойства 'usage'.

Самый верхний узел отображает все унаследованные функции, то есть сумма всех используемых пакетов.

Узлы ниже показывают унаследованные параметры каждого пакета.

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

Создать 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)' для дополнительной информации.

Кнопки (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