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/macOS): если это библиотека, то имя в нижнем регистре, и если имя не начинается с 'lib', оно предшествует 'lib'.
  • Linux, BSD: Если это библиотека, то добавляется '.so'.
  • Darwin/macOS: Если это библиотека, то добавляется '.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  Примечание: Если вы хотите передать некоторые параметры в зависимости от платформы, например, передать некоторые дополнительные параметры компоновщика в macOS, пожалуйста, посмотрите на макросы 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

Макросы проекта

См. здесь, чтобы добавить собственные макросы или переопределить макросы LCLWidgetType.

Обработка (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

Пользовательские параметры

CompilerOptions-Custom Options.png

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

-dRELEASE

Затем в режиме сборки будет скомпилирован только код, окруженный {$IFDEF RELEASE} {$ENDIF}. Это можно использовать в качестве альтернативы системе Macro, особенно если вы "переехали" с Delphi.

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

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

Warning-icon.png

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

Дополнения и перекрытия

Страница «Дополнения и перекрытия» существует с 1.1.

Обзор

Страница содержит матрицу вариантов сборки.

CompilerAdditionsAndOverrides1.png

Параметры «Пользовательские параметры», «Каталог вывода» и «Макросы IDE» в любой цели можно включать и выключать отдельно для каждого режима сборки.

Таким образом, для каждой цели есть Матрица с включающимися флажками.

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

Справа от каждой строки любой матрицы дается описание типа (например, «Пользовательский», «OutDir» или «Макрос IDE») и значение включаемой опции.

Типы вариантов сборки

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

  • установить IDE macro(макрос IDE). Значение должно иметь вид MacroName:=Value. Например, LCLWidgetType:=qt. Вы можете использовать макросы IDE в значении, но не в имени.
  • добавить некоторые пользовательские параметры компилятора через Custom (например, добавить -O3). Вам не нужен ведущий пробел. Это добавляется автоматически. См. примечания по пользовательским параметрам.
  • переопределить выходной каталог (-FU) через OutDir. Обратите внимание, что при использовании относительного каталога, такого как lib/$(TargetOS), добавляется рабочий каталог цели, а не каталог проекта. Например, когда опция переопределяет выходной каталог пакета SynEdit, тогда выходной каталог synedit изменяется на <lazarusdir>/components/synedit/lib/$(TargetOS).

Вы можете создать новую опцию, нажав кнопку Add(Добавить) над матрицей. Вы можете изменить тип опции в любое время.

Включение параметров сборки в режимах сборки

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

Обратите внимание, что включение параметров в режимах сборки сеанса (хранящихся в .lps) не изменяет файл lpi. Эта информация хранится в файле lps. Вот почему эти чекбоксы имеют желтый фон.

Текущий активный режим и параметры сборки имеют зеленый фон.

Когда вы переименовываете режим сборки, также переносятся включенные состояния опций lpi и lps. Включенные состояния параметров IDE *не* переносятся. Например, когда опция IDE включена для режима debug и вы переименовываете режим в Test, тогда опция IDE все еще включена для режима debug для других проектов.

Место хранения настроек сборки

Настройка может быть сохранена в

  • проекте (.lpi)
  • сеансе работы проекта (.lps)
  • или в конфигурации IDE (environmentmentoptions.xml) - тогда он доступен для всех проектов

Параметры сборки применяются сверху вниз. Это означает, что сначала параметры сохраняются в IDE, затем параметры сохраняются в .lpi и, наконец, параметры сохраняются в сеансе работы.

С помощью кнопок «Вверх» и «Вниз» над матрицей вы можете перемещать параметры сборки и целевые объекты в другие группы хранения.

Light bulb  Примечание: Опция в конфигурации IDE для режима debug применяется кj всем проектам с этим режимом. Например, когда вы открываете сторонний проект с режимом сборки debug, опция будет применена и предупреждения не будет. Это может сломать проект.

Цели параметров сборки

Параметры сборки могут быть применены к проекту и/или к одному или нескольким пакетам. Вы можете ограничить область действия параметров сборки, чтобы они применялись только к определенным целям (проектам, пакетам). Параметры сборки сгруппированы по Targets(Целям). Targets(Цели) не чувствительны к регистру и допускают звездочку "*" для любого количества произвольных символов и знак вопроса "?" за один произвольный символ. Вы можете исключить цели, добавив минус "-". Чтобы отредактировать цель, нажмите позади 'Targets:'.

Примеры целей:

  • *: Звездочка "*" - значит подходит всем. Опция применяется к проекту и всем пакетам. Это по умолчанию.
  • LCL,Lazutils: Применимо только к пакетам "LCL" и "LazUtils"
  • *dsgn,-syneditdsgn: Применимо ко всем пакетам, оканчивающимся на "dsgn", исключая "syneditdsgn".
  • #project: Это соответствует самому проекту. Опция применяется только к проекту, а не к используемым пакетам.
  • #ide: Это соответствует IDE. Опция применяется только к IDE, а не к установленным пакетам.

Вы можете иметь любое количество целей. Вы можете создать новую цель с помощью кнопки Add(Добавить) над матрицей. Вы можете перемещать цели с помощью кнопок вверх и вниз в другие хранилища. Все параметры сборки целевой группы также перемещены.

targets project options.png

Цвета в матрице

  • Зеленый: текущий активный режим и опции
  • Желтый: сохраненные в сеансе работы без изменения lpi
  • Красный: ошибка синтаксиса

Примеры для дополнений и перекрытий

  • Добавьте параметры компилятора к пакетам, не затрагивая lpk. Например, вы можете добавить проверку диапазона -Cr с помощью опции custom в разделе Targets: *.
  • Измените каталог вывода пакетов без затрагиванияя lpk. Например, путем добавления OutDir в поле Targets: *.
  • Определите макросы IDE только для некоторых пакетов или только для проекта. Например, скомпилируйте LCL с флагом -dQT_NATIVE_DIALOGS, добавьте новую цель Targets: LCL, а затем добавьте пользовательский параметр.
  • Добавьте параметры компилятора ко всем проектам с режимом сборки «debug», путем добавления параметров в группу хранения IDE.
  • Измените каталог вывода пакета(ов) для всех проектов с режимом сборки «релиз». Добавьте опцию сборки к опциям, хранящимся в IDE.
  • Объедините вышеперечисленное с сессиями, и вы сможете изменять сторонние проекты и пакеты, не касаясь их.

Изменение LCLWidgetType в версии 1.1 и выше

Этот параметр доступен только тогда, когда проект использует пакет LCL

Перейдите в Project(Проект) > Project Options(Параметры проекта) > Comiler Options(Параметры компилятора) > Additions and Overrides(Дополнения и перекрытия) > Set(Прсивоить) "LCLWidgetType".

SetLCLWidgetTypeIn1 7.png

Добавление флага в проект и все пакеты

Light bulb  Примечание: Это изменяет проект (.lpi). Оно не изменяет файлы пакета (.lpk), но влияет на них при сборке проекта. Это также влияет на сборку IDE.

Перейдите к Additions and Overrides(Дополнениям и перекрытия). Нажмите кнопку Add(Добавить) и выберите Custom Option(Пользовательский параметр):

addflagtoprojectsandpackages1.png

Теперь вы должны увидеть "Targets: *"(Цель: *) и новую опцию [Custom]. Она включена для текущего активного режима сборки и отключена для всех остальных. Targets: *(Цель: *) означает, что это относится к проекту и всем пакетам.

addflagtoprojectsandpackages2.png

Нажмите на ячейку [справа от] опции [Custom] и добавьте свой флаг. Например: -dSomeFlag.

addflagtoprojectsandpackages3.png

Вот так.

Добавление флага ко всем проектам и пакетам

Флаг из предыдущего абзаца активен только при загрузке проекта. Чтобы установить флаг для всех проектов, выберите опцию и нажмите кнопку «вверх» (зеленая стрелка вверх). Это перемещает параметр в группу "Stored in IDE"(Хранящиеся в IDE).

addflagtoallprojectsandpackages1.png

Light bulb  Примечание: В среде IDE используются параметры режима сборки "default"(по умолчанию).

Изменение каталога вывода проекта и всех пакетов

Перейдите к Additions and Overrides(Дополнения и перекрытия). Нажмите кнопку Add(Добавить) и выберите Output Directory (-FU)(Каталог вывода (-FU)).

AddsAndOverridesOutDir1.png

Теперь вы должны увидеть "Targets: *"(Цели: *) и новый параметр «OutDir» со значением по умолчанию lib/$(TargetCPU)-$(TargetOS)/$(BuildMode). Он включен для текущего активного режима сборки и отключен для всех остальных. "Targets: *"(Цели: *) означает, что это относится к проекту и всем пакетам.

AddsAndOverridesOutDir2.png

Например: щелкните ячейку [справа от параметра OutDir] и измените ее [значение] на lib/$(FPCVer)/$(TargetCPU)-$(TargetOS). Это заставит IDE использовать разные каталоги вывода для каждой версии компилятора Free Pascal.

Если вы хотите использовать одни и те же выходные каталоги для всех ваших проектов, вы можете поместить опцию в [раздел] Stored in IDE(Хранящиееся в IDE). Щелкните в ячейке [справа от] параметра OutDir, чтобы выбрать строку. Затем используйте кнопку «Вверх» (стрелка вверх), чтобы переместить параметр.

Если вы хотите применить каталог вывода для всех пакетов, но не для проектов, измените значение Targets(Цели) с * на *,-#project.

AddsAndOverridesAllPkgOutDir1.png

Light bulb  Примечание: Если пакет не поддерживает ваш каталог вывода, добавьте к Targets(Цели) значение -packagename. Например: *, - chmhelp.

Если вы хотите поместить выходные файлы пакета в подкаталоги проекта, измените OutDir на $(ProjPath)/lib/$(PkgName)/$(TargetCPU)-$(TargetOS)/$(BuildMode). Обратите внимание на использование макросов $(ProjPath) для каталога проекта и$(PkgName) для предоставления каждому пакету своего собственного каталога.

OutputDirectoryOFAllPackagesIntoProjectDirectory.png

Например, если каталог вашего проекта - C:\pascal\myapp, то пакет LCL будет скомпилирован в C:\pascal\myapp\lib\LCL\i386-win32\default.

Добавление флага в один пакет без изменения самого lpk

В этих примерах опция -vm4104 добавляется в пакет lazreport.

  • Перейдите в Additions and Overrides(Дополнения и перекрытия).
  • Нажмите на кнопку Add(Добавить) и выберите "New Target"(Новая цель). Вставляется новая строка с «Targets: *»(Цели: *)
  • Нажмите на новую строку сразу [справа от] "Targets:"(Цели:). * теперь становится редактируемым.
  • Измените [текущее значение] на имя пакета. В этом примере: lazreport. Нажмите Enter или нажмите на другую строку, чтобы закончить редактирование.
  • При наведении указателя мыши на новую строку вы должны увидеть подсказку Apply to all packages matching the name "lazreport"(Применить ко всем пакетам с именем «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
  • Нажмите кнопку Add(Добавить) и выберите "Custom Option"(Пользовательский параметр). Новая строка вставится ниже строки Targets: lazreport(Цели: lazreport).
Light bulb  Примечание: Строки можно перемещать с помощью зеленых стрелок.
  • Нажмите на новое пустое значение и измените его значение на -vm4104.

Эта опция сохранится в вашем текущем проекте (lpi) и добавится только, если вы скомпилируете этот проект. Если эта опция должна использоваться со всеми вашими проектами на вашем компьютере, используйте зеленые кнопки, чтобы переместить Targets: lazeport(Цели: lazeport) в Stored in IDE(Хранящиеся в 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)' для дополнительной информации.

Одним из удобных способов использования может быть автоматическое копирование кросс-скомпилированного исполняемого файла с вашего ПК на целевое устройство, например на Raspberry:

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

(И да, это работает даже без пароля, если вы создаете пару ключей с помощью ssh-keygen, а затем добавляете их в файл selected_keys вашей цели через "ssh-copy-id [remoteuser@]remotehost"; подробности см.[https: //www.debian.org/devel/passwordlessssh здесь])

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

Light bulb  Примечание: Это было перенесено в Lazarus 1.1 в диалоговое окно Show Options(Показать параметры).

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

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

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

Вы можете просмотреть/отредактировать набор используемых пакетов для проекта в Инспекторе проектов. Вы можете просмотреть/отредактировать набор используемых пакетов для пакета в редакторе пакетов.

Для получения информации о пакетах в целом см. пакеты Lazarus.

Использовать эти настройки по умолчанию для новых проектов

Установите этот флажок и нажмите Ok. Настройки будут сохранены в ~/.lazarus/compileroptions.xml (или в любом другом месте, указанном в качестве основного пути конфигурации). При создании нового проекта этот файл будет загружен для инициализации параметров компилятора. Эта функция существует с 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 уже есть много [предопределенных] макросов. Вы можете добавить свои собственные макросы, которые действительны при загрузке проекта/пакета. Условия позволяют устанавливать значения макросов в зависимости от целевой платформы и других макросов. Например, вы можете добавить опцию компоновщика при компиляции для macOS.

Используйте левую кнопку +, чтобы добавить новый макрос для проекта/пакета. Выберите макрос и нажмите среднюю кнопку +, чтобы добавить новое возможное значение. Фактическое значение макроса задается в условных выражениях ниже или в текущем проекте на странице 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