PureBasic

Компиляция Ваших программ

Компиляция дело несложное. Просто выберите "Компилировать/Запуск" ("Compile/Run") (по умолчанию F5) и ваша программа будет скомпилирована и выполнит тестовый запуск.

Чтобы настроить процесс компиляции, вы можете открыть диалог "Опции компилятора" ("Compiler options"). Сделанные здесь настройки связываются с текущим файлом исходного кода или текущим проектом, а также запоминаются при их закрытии. Место, где сохраняется эта информация, может настраиваться. По умолчанию она сохраняется в конце исходного кода в виде комментария.(невидимый в IDE).

В случае ошибки, мешающей компилятору совершить компиляцию, он прерывается и отображает сообщение об ошибке. Это сообщение также записывается в журнал ошибок, а строка, которая вызвала ошибку, помечается.

Некоторое количество функций из старых версий PureBasic, которые были убраны из комплекта поставки, пока ещё существуют как обёртка для совместимости, чтобы обеспечить возможность более просто тестировать/переносить старый код. Если такая функция используется в коде, компилятор выдаст предупреждение. Будет открыто окно, отображающее все предупреждения, которые были выданы в процессе компиляции. Двойной клик на предупреждении отобразит файл/строку, которые вызвали предупреждение. Учтите, что такие обёртки для совместимости не останутся на неопределённый срок, а будут удалены в будущем обновлении, так что рекомендуется исправить все моменты, которые вызывают предупреждения компилятора, вместо того чтобы полагаться на такие отзываемые функции.

Меню компилятора

Компиляция/Запуск (Compile/Run)
Компилирует текущий исходный код с опциями компилятора, которые были заданы для него, и выполняет его. Исполняемый файл размещается во временном местоположении, но при его запуске значением текущего пути будет директория исходного кода. (так что загрузка файла из той же директории, где исходный код, будет работать)

Исходный код для этого сохранять не требуется. (но любые включенные файлы должны быть сохранены).

Опция "Компиляция/Запуск" ("Compile/Run") учитывает настройку отладчика (включен или выключен) из меню компилятора или меню отладчика. (они суть одно и то же)

Запуск (Run)
Запускает последний скомпилированный исходный код ещё раз. Будет или не будет включен отладчик зависит от настройки последней компиляции.

Компиляция с отладчиком (Compile with Debugger)
То же, что "Компилировать/Запуск" ("Compile/Run"), исключая то, что эта опция игнорирует настройку отладчика и включает отладчик для этой компиляции. Это полезно, когда вы обычно выключаете отладчик, но хотите включить его только для этой компиляции.

Компиляция без отладчика (Compile without Debugger)
То же, что Компилировать с Отладчиком ("Compile with Debugger"), исключая то, что эта опция выключит отладчик для этой компиляции.

Перезапустить Компилятор (Restart Compiler) (присутствует не во всех ОС),
Заставляет компилятор перезапуститься. Также заставляет компилятор перезагрузить все библиотеки и резидентные файлы (resident files), и с ними обновить перечень известных PureBasic функций, Структур, Интерфейсов и Констант. Эта функция полезна когда вы добавили новую Пользовательскую Библиотеку в директорию PB, но не хотите перезапускать всю среду разработки. Это особенно полезно разработчикам библиотек для тестирования своих библиотек.

Настройки компилятора (Compiler Options)
Открывает диалоговое окно опций компилятора, который позволяет вам задавать опции компиляции этого исходного файла.

Создать приложение
Открывает диалоговое окно с запросом имени и места сохранения файла. Если формат исполняемых файлов будет установлен в DLL, он создаст DLL для Windows, объект shared для Linux или dylib для OS X. Когда создаётся исполняемый файл на OS X, добавление '.app' в имени создадут связанный исполняемый файл с необходимой структурой каталогов, включая значок. Если '.app' не будет добавлен, то это создаст обычный консольный исполняемый файл.

Установить Цель по умолчанию (Set default Target)
Когда проект открыт, это подменю показывает все цели компиляции и позволяет быстро менять текущую цель по умолчанию. Цель по умолчанию это та, которая компилируется/запускается с помощью пункта меню "Компиляция/Запуск" ("Compile/Run").

Собрать Цель (Build Target)
Когда проект открыт, это подменю показывает все цели компиляции и позволяет непосредственно компилировать одну из них.

Собрать все Цели (Build all Targets)
Когда проект открыт, этот пункт меню компилирует все цели, у которых включена эта опция в опциях компилятора. Открывается окно, показывающее ход сборки.

Опции компилятора для непроектных файлов

Главный исходный файл (Main source file)
Включив эту опцию, вы можете определить другой файл, который будет передаваться компилятору вместо этого файла. Использование этого когда вы редактируете файл, который не запускается сам по себе, а включен в другой файл, вы можете сказать компилятору использовать тот другой файл для начала компиляции.

Примечание: При использовании этой опции вы ДОЛЖНЫ сохранять ваш исходник перед компиляцией, так как в этом случае используются только файлы, записанные на диск. Большая часть настроек компилятора берётся из главного исходного файла, поэтому если задать эту опцию, они отключаются. Из текущего исходника используются только некоторые настройки, такие как настройки отладчика.

Использовать Компилятор (Use Compiler)
Эта опция позволяет выбрать другой компилятор и использовать его вместо текущей версии PureBasic. Это упрощает компилирование различных версий той же программы (x86 и x64 или PowerPC) без необходимости запуска среды разработки другого компилятора только для компиляции. Конфигурация добавочных компиляторов для этой опции должна быть определена в Настройках IDE.

Если версия компилятора совпадает с таковой компилятора по умолчанию, но целевой процессор отличается, то для отладки скомпилированного исполняемого файла всё же можно использовать встроенный отладчик среды разработки. Это означает, что исполняемый файл, скомпилированный на процессоре x86, можно отлаживать в среде разработки x64 и наоборот в Windows и в Linux. То же относится к компиляторам x86 и PowerPC для Mac OSX. Это особенно полезно, так как этим способом быстрые среда разработки и отладчик x86 можно использовать на Маке с процессором Intel и при этом компилировать программы для процессора PowerPC с помощью более медленной эмуляции. Если версия не совпадает, то чтобы избежать конфликта версий для отладки используется самостоятельный отладчик, который поставляется с выбранным компилятором.

Использовать иконку (Use Icon) (только для Windows и MacOS X)
Здесь вы можете задать иконку, которая отображается когда мы видим созданный исполняемый файл в проводнике. Она также отображается в заголовке окна вашей программы и на Панели задач.

Windows: значок должен быть в формате ICO (Windows Icon).

MacOS X: значок должен быть в формате ICNS (Значок Macintosh). Чтобы создать такой значок, Вы должны создать файл PNG с размерами 128x128, 48x48, 32x32 и 16x16 их Вашего изображения и затем использовать инструмент "Icon Composer", который идет с инструментами разработчика OSX. Это должно быть расположено в/Developer/Applications/Utilities/. To be displayed once the application has just been created, the Finder may need to be restarted.

Включить подсветку синтаксиса встроенного ASM (Enable inline ASM syntax coloring )
Это позволяет подсветить код встроенного ASM. Обратитесь к разделу Встроенный ассемблер x86 справки для получения дополнительной информации об этой опции.

Создавать исполняемый файл с поддержкой многопоточности (Create threadsafe executable)
Велит компилятору использовать особую версию некоторых команд, чтобы сделать их безопасными при использовании в потоках. Дальнейшие сведения смотрите в библиотеке Thread.

Так же эта опция даёт возможность Отладчику отображать при использовании потоков верную информацию. Без этой опции отладчик может например выводить неверные номера строк при наличии потоков.

Включить поддержку тем (только Windows)
Включает поддержку использующих скины окон в Windows начиная от Windows XP и новее

Запрос режима администратора для Windows Vista и выше (только Windows)
Создаваемый исполняемый файл будет всегда запускаться с правами администратора в Windows (он не запустится если пароль администратора не введён). Эту опцию следует задавать для программ, которым нужен доступ к служебным каталогам или к служебным областям реестра, чтобы они получили полный доступ.
Если эта опция включена, при отладке автоматически выбирается Автономный Отладчик, чтобы программу можно было тестировать в режиме администратора.

Примечание: Эта опция ни на что не влияет если программа выполняется в других версиях Windows.

Требовать режим Пользователя в Windows Vista и выше (только Windows)
Эта опция отключает возможность "Виртуализации" этого исполняемого файла на Windows Vista и выше. Виртуализация заставляет обращения к файлам и к реестру перенаправляться в специальный пользовательский каталог, если пользователь не имеет требуемых прав для выполнения операции. (это сделано для совместимости со старыми программами)
Учтите, что это перенаправление делается без уведомления пользователя, что может привести к некоторому замешательству, если он попытается найти сохранённые файлы в файловой системе. Из-за этого рекомендуется выключить эту возможность если программа соответствует правилам доступа к файлам/реестру Windows Vista и выше.

Примечание: Эта опция ни на что не влияет, если программа выполняется в другой версии Windows. Её невозможно сочетать с упомянутой выше опцией "Режим Администратора".

Включить поддержку DPI Aware в исполняемом файле (Enable DPI Aware Executable) (Только для Windows)
Этот параметр включает поддержку DPI при создании исполняемого файла. Это означает, что графический интерфейс, созданный в PureBasic, будет автоматически масштабироваться, если DPI экрана превышает 100%.
Большая часть процесса окажется незаметной, но необходимо разобраться с некоторыми случаями, такими как пиксельные гаджеты (ImageGadget, CanvasGadget и т. д.).

Включить поддержку строк для OnError (Enable OnError lines support) (только Windows)
Внедряет в исполняемый файл информацию о номерах строк для библиотеки OnError.

Подсистема библиотек (Library Subsystem)
Здесь Вы можете выбрать различные подсистемы библиотек (Directx, OpenGl и тд.) для компиляции. Можно выбрать несколько подсистем разделяя их пробелом. Для получения дополнительной информации смотрите Подсистемы.

Формат исполняемого файла (Executable format)
Позволяет вам указать формат создаваемого исполняемого файла:
Windows: обычный исполняемый файл windows.
Консоль: исполняемый файл с консолью по умолчанию. Он по прежнему может создавать окна и так далее, но у него всегда открыта консоль. При запуске из командной строки этот вид исполняемого файла использует командный терминал в как свою консоль и пишет туда, тогда как "Оконный" исполняемый файл создал бы отдельное окно консоли при использовании функции OpenConsole().Эта настройка должна использоваться для создания Консольного приложения, ввод/вывод которого можно перенаправлять с помощью каналов.
Совместно используемая DLL (Shared DLL) : создать динамическую библиотеку windows. Дальнейшие сведения смотрите в разделе Создание DLL
Примечание: Когда вы делаете "Компиляцию/Запуск" ("Compile/Run") с исходным кодом dll, он выполняется как обычный исполняемый файл. А сама dll создаётся только когда вы используете "создать исполняемый файл" ("create executable").

Оптимизация CPU (Cpu Optimisation) (следующий справа за Форматом исполняемых файлов)
Эта настройка позволяет включать в ваш исполняемый файл оптимизированные для разных процессоров функции PB:
Для всех CPU (All CPU) : Подключаются базовые функции, работающие на всех процессорах.
CPU Динамически (Dynamic CPU) : Подключаются базовые функции, а также все имеющиеся процессороспецифичные функции. Какую функцию выполнять, решается при выполнении программы. Это создаёт больший по размеру исполняемый файл, но он будет работать так быстро, как только возможно, на всех процессорах.
Все прочие опции : Подключать только функции для конкретного процессора. Исполняемый файл не запустится на любом процессоре, который не поддерживает эту возможность

Примечание: На данный момент никакие функции PB пока не поддерживают эту возможность (для них она игнорируется). Тем не менее некоторые Пользовательские Библиотеки включают такие оптимизации.

Файл опций сборщика (Linker options file)
Здесь можно указать текстовый файл с опциями командной строки, которые следует передать сборщику при создании исполняемого файла. Файл должен содержать одну опцию на строке.

Компиляция/Запуск

Этот раздел содержит опции, которые влияют на то, как исполняемый файл запускается из среды разработки для тестирования. Кроме опций инструментов, они играют никакой роли при использовании меню "Создать исполняемый файл" ("Create executable").

Использовать отладчик (Enable Debugger)
Задаёт состояние отладчика (вкл/выкл) для этого исходного кода, или, если используется опция главного файла, для него тоже. Также это можно задать в меню отладчика.

Включить Пурифаер 'поиск ошибок при отладке' (Enable Purifier)
Включает поддержку пурифаера для отладчика. Пурифаер может обнаруживать определённый вид ошибок программирования, таких как запись после конца выделенного буфера в памяти. Подробности смотрите в разделе Встроенные средства отладки.

Выбрать отладчик (Selected Debugger)
Позволяет выбирать различные виды отладчиков только для этого файла. Если эта опция выключена, используется отладчик по умолчанию, который можно указать в Настройках IDE.

Режим предупреждения (Warning mode)
Позволяет выбрать другой режим предупреждения только для этого файла. Если эта опция выключена, используется выбор по умолчанию, который можно указать в Настройках IDE. Доступны такие опции:
Игнорировать Предупреждения (Ignore Warnings) : Предупреждения игнорируются без отображения чего-либо.
Показывать Предупреждения (Display Warnings) : Предупреждения показываются в журнале ошибок и отмечается строка в исходном коде, но программа продолжает выполняться.
Считать Предупреждения Ошибками (Treat Warnings as Errors) : С предупреждением обращаться как с ошибкой.

Командная строка приложения (Executable Commandline)
Заданная здесь строка передаётся программе как командная строка при запуске из IDE.

Текущий каталог (Current directory)
Директория, указанная здесь, задаётся как текущая директория для программы при запуске её из IDE.

Создавать временный исполняемый файл в исходном каталоге (Create temporary executable in the source directory)
При включенной этой опции временный исполняемый файл для запуска программы из среды разработки размещается в директории исходников. Это может быть полезно если тестирование программы зависит от файлов внутри директории исходников. При этой опции выключенной исполняемый файл создаётся в системной директории временных файлов.

Запустить инструменты (Execute tools)
Здесь можно включить внешние инструменты отдельно для каждого исходника. Колонка "Глобальные настройки" ("Global settings") показывает, включен или выключен инструмент в конфигурации инструментов. Инструмент может запускаться для исходника только если он включен и глобально, и для этого исходника.

Примечание: Чтобы инструмент был перечислен здесь, его опция "Включить Инструмент для отдельных исходников" ("Enable Tool on a per-source basis") должна быть отмечена в конфигурации инструментов и он должен запускаться по триггеру, связанному с исходным файлом. (т.е. не из меню или при запуске редактора, например)

Константы

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

#PB_Editor_CompileCount
Если включена, эта константа содержит количество раз, которое код компилировался (обоими способами - и с помощью "Компиляция/Запуск" ("Compile/Run"), и с помощью "Создать исполняемый файл" ("Create Executable")) из IDE. Этот счётчик можно вручную редактировать в поле ввода.

#PB_Editor_BuildCount
Если включена, эта константа содержит количество раз, которое код компилировался только с помощью "Создать исполняемый файл" ("Create Executable"). Этот счётчик можно вручную редактировать в поле ввода.

#PB_Editor_CreateExecutable
Если включена, эта константа содержит значение, равное 1 если код компилировался через пункт меню "Создать исполняемый файл" ("Create Executable"), или 0 если использовался пункт "Компилировать/Запуск" ("Compile/Run").

Пользовательские константы (Custom constants)
Здесь можно определить произвольные константы, а затем легко включать/выключать их посредством чекбоксов. Определения констант следует добавлять так же, как они были бы написаны в исходном коде. Это обеспечивает способ включать/выключать некоторые возможности в программе посредством определения константы здесь и последующей проверки её в исходнике для включения/выключения этих возможностей с помощью директив компилятора CompilerIf/CompilerEndIf.

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

Пример: #Creator=$USERNAME
Здесь переменная $USERNAME будет заменена на имя зарегистрировавшегося пользователя в системах Windows. Если переменная окружения не существует, она заменяется на пустую строку.

Примечание: Чтобы внутри исходного кода проверить, определена константа или нет, воспользуйтесь функцией компилятора Defined().

Информация о версии

Только для Windows. При разрешении этой опции в исполняемый файл включается ресурс с информацией о вашей программе. Её можно посмотреть, если сделать правый клик на исполняемом файле в проводнике windows и выбрать "Свойства". Также её можно прочитать с помощью других программ, таких как инструменты настройки.

Поля, отмеченные символом * обязательны, если вы хотите включить информацию о версии. (если заданы не все обязательные поля, в некоторых версиях Windows информация может отображаться некорректно.

Первые два поля ДОЛЖНЫ состоять из 4 чисел, разделённых запятыми. Все другие поля могут содержать любые строки. В 3 пустых прямоугольниках вы можете определить ваши собственные поля для включения их в блок информации о версии.

Во всех строковых полях вы можете вставлять особые лексемы, которые заменяются при компиляции:
%OS : заменяется на версию Windows, использовавшуюся для компиляции программы
%SOURCE : заменяется на имя файла (без пути) исходного файла.
%EXECUTABLE : заменяется на имя созданного исполняемого файла (это работает только когда используется "Создать исполняемый файл" ("create executable"), не работает с "Компиляция/Запуск" ("Compile/Run").
%COMPILECOUNT : заменяется на значение константы #PB_Editor_CompileCount.
%BUILDCOUNT : заменяется на значение константы #PB_Editor_BuildCount.

Более того, вы можете использовать любую лексему, перечисленную в описании команды FormatDate(). Эти лексемы заменяются на их соответствующие значения из описания команды FormatDate() применённые к дате компиляции (т.е. %yy даёт год компиляции)

Значение нижних 3 полей:

ОС файла (File OS)
Указывает ОС, для которой скомпилирована эта программа. (использование VOS_DOS или VOS_WINDOWS16 имеет мало смысла. Они включена для полноты перечня)

Тип файла (File Type)
Тип исполняемого файла. (здесь только VFT_UNKNOWN, VFT_APP или VFT_DLL имеют смысл для программ PB)

Язык (Language)
Указывает язык, на котором написана эта информация о версии.

К значениям полей можно получить доступ, компилируя программу из IDE, используя следующие константы (тот же порядок):
  #PB_Editor_FileVersionNumeric
  #PB_Editor_ProductVersionNumeric
  #PB_Editor_CompanyName
  #PB_Editor_ProductName
  #PB_Editor_ProductVersion
  #PB_Editor_FileVersion
  #PB_Editor_FileDescription
  #PB_Editor_InternalName
  #PB_Editor_OriginalFilename
  #PB_Editor_LegalCopyright
  #PB_Editor_LegalTrademarks
  #PB_Editor_PrivateBuild
  #PB_Editor_SpecialBuild
  #PB_Editor_Email
  #PB_Editor_Website

Ресурсы

Только для Windows. Здесь вы можете включить столько сценариев ресурсов (файлы *.rc), сколько захотите. Они будут скомпилированы и включены в исполняемый файл. Вы можете использовать любой редактор ресурсов (например, среду разработки PellesC IDE) для создания таких сценариев.

Примечание: Поскольку Ресурсы специфичны только для платформы Windows, PB не содержит библиотеки для работы с ними и они здесь далее не документируются. Дальнейшие сведения смотрите в документации по Windows API и ресурсам.

Опции компилятора для проектов

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

Цель по умолчанию это та, которая будет скомпилирована при выборе пункта меню "Компиляция/Запуск" ("Compile/Run"). Её можно быстро переключить с помощью чекбокса "Назначить целью по умолчанию" ("Set as default target") или в меню компилятора. Опция "Включить в 'Собрать все Цели'" ("Enable in 'Build all Targets'") указывает будет или нет выбранная цель собрана при использовании пункта меню 'Собрать все Цели' ('Build all Targets').

Правая сторона опций компилятора почти такая же, как в непроектном режиме и отображает настройки цели компиляции, которая в данный момент выбрана слева. Единственное отличие это поля "Входной файл исходника" ("Input source file") и "Итоговый исполняемый файл" ("Output executable") на первой закладке. Эти поля необходимо указать для всех целей компиляции. Кроме этого все опции компилятора те же, что описаны выше.

В режиме проекта информация о цели компиляции сохраняется в файле проекта, а не в отдельных исходных файлах. Информация, которая относится к файлу (такая как состояние свёртывания), всё же сохраняется для отдельных исходных файлов в месте, указанном в Настройках IDE.

Окно прогресса Сборки

Когда в открытом проекте выбран пункт меню 'Собрать все Цели' ('Build all Targets'), все цели, у которых есть соответствующий набор опций в опциях компилятора, будут скомпилированы в порядке, заданном в опциях компилятора. Окно хода сборки показывает текущий ход компиляции, а также статус каждой цели. Когда процесс завершится, журнал сборки можно скопировать в буфер обмена или сохранить на диск.