PureBasic

Использование компилятора из командной строки

Введение

Компилятор командной строки находится в подкаталоге 'Compilers\' в каталоге PureBasic. Самый простой способ получить к нему доступ - добавить этот каталог в переменную PATH в windows, которая будет всегда предоставлять доступ ко всем командам этого каталога. Каждый командный ключ, который используется с символом '/', предназначен только для OS Windows.

Кросс-платформенные Ключи команд

-h, --help, /?: выводит на экран быструю справку о компиляторе.

-c, --commented, /COMMENTED: создаёт откомментированный файл вывода '.asm' при создании исполняемого файла. Этот файл можно впоследствии передать ассемблеру, после того как будут сделаны нужные изменения. Эта опция только для опытных программистов.

-d, --debugger, /DEBUGGER: включает поддержку отладчика.

-pf, --purifier, /PURIFIER: включает Пурифаер. Отладчик должен быть активирован, чтобы от этого был эффект.

-e, --executable, /EXE "filename": создает автономный исполняемый файл или библиотеку DLL, с указанным именем файла и в заданной папке. В MacOS X можно создать пакет приложений, добавив ".app" к имени исполняемого файла. Таким образом, автоматически будет создана вся структура каталогов.

-r, --resident, /RESIDENT "filename": создаёт резидентский файл, с указанным именем файла.

-i, --import, /IMPORT "filename": создает файл импорта для данного имени файла. В файле разрешен только один блок Import/EndImport. Импортируемые функции будут автоматически загружаться для каждого проекта PureBasic.

-l или - linenumbering, /LINENUMBERING: добавляет информация о строках и файлах к исполняемому файлу, что может значительно его замедлить. Это позволяет библиотеке OnError сообщать о файле и Номере строки ошибки.

-q, --quiet, /QUIET: отключает вывод ненужного текста, что очень полезно при использовании другого редактора.

-sb, --standby, /STANDBY: загружает компилятор в память и ожидает внешних команд (редактор, скрипты ...). Дополнительная информация об использовании этого флага доступна в файле 'CompilerInterface.txt' из PureBasic 'SDK'.

-ir, --ignoreresident, /IGNORERESIDENT "filename": не загружает указанный резидентный файл при запуске компилятора. Обычно это полезно при обновлении при обновлении уже существующего резидента, чтобы не загружать его.

-o, --constant, /CONSTANT name=value: создаёт указанную константу с данным выражением. Пример: 'pbcompiler test.pb /CONSTANT MyConstant=10'. Константа #MyConstant будет создан на лету со значением 10, до того как программа будет скомпилирована.

-t, --thread, /THREAD: использует потокобезопасную среду выполнения (thread safe runtime) для строк и общих процедур.

-s, --subsystem, /SUBSYSTEM "name": использует указанную подсистему, для замещения набора внутренних функций. Для получения дополнительной информации см. подсистемы.

-k, --check, /CHECK: проверяет только синтаксис, не создает и не запускает исполняемый файл.

-pp, --preprocess, /PREPROCESS "filename": позволяет предварительно обработать исходный код и записать результат в указанном "Filename". Обработанный файл представляет собой одиночный файл со всеми развёрнутыми макросами, с учётом директив компилятора и многострочным разрешением. Это позволяет упростить синтаксический анализ исходных файлов PureBasic, потому что все доступно и развернуто в формат "плоского" файла. По умолчанию комментарии не включаются, но флаг "--commented" может использоваться для того, чтобы у всех исходных кодов все тексты комментариев остались нетронутыми и разрешает обработку комментариев. Предварительно обработанный файл можно перекомпилировать как любой другой исходный файл PureBasic для создания окончательного исполняемого файла.

-g, --language, /LANGUAGE \"language\": использует указанный язык для сообщений об ошибках компилятора.

-v, --version, /VERSION: показывает версию компилятора.

Примеры:

CLI> pbcompiler sourcecode.pb

Компилятор скомпилирует исходный код и выполнит его.

CLI> pbcompiler sourcecode.pb --debugger

Компилятор скомпилирует исходный код и выполнит его с отладчиком.

Ключи команд используемые в Windows

/ ICON "IconName.ico": добавляет указанный значок в исполняемый файл.

/CONSOLE: выходной файл в формате консоли. Формат по умолчанию - Win32.

/DLL: выходной файл - DLL.

/XP: добавляет поддержку тем Windows XP в исполняемый файл

/REASM: компилировать файл PureBasic.asm в исполняемый файл. Это позволяет использовать функцию /COMMENTED, модифицировать файл ASM и снова создавать исполняемый файл.

/MMX, /3DNOW, /SSE или /SSE2: создаёт исполняемый файл с учётом расширенных функций процессора. Это означает, что если доступна специальная процедура для такого процессора, она будет использоваться для этого исполняемого файла. Поэтому исполняемый файл будет корректно работать только на компьютере с таким процессором.

/DYNAMICCPU: создаёт исполняемый файл, содержащий оптимизированные для разных процессоров функции. Когда программа запускается, она определяет тип процессора и затем выбирает для использования наиболее подходящие функции. Это создаёт больший по размеру исполняемый файл, но он будет работать так быстро, как только возможно, на всех процессорах.

/RESOURCE "Filename": добавляет файл ресурса Windows (.rc) в создаваемый исполняемый файл или DLL. Это должен быть не скомпилированный файл ресурса, а файл ascii с директивами. Можно указать только один ресурс, но этот файл может включать другой ресурс, если нужно.

/LINKER "ResponseFile": указывает файл, содержащий команды, которые будут переданы непосредственно компоновщику. В Windows PureBasic использует компоновщик PellesC (polink), дополнительную информацию о возможных параметрах можно найти в соответствующей документации.


Следующие две опции компилятора требуются для создания программ, работающих в ОС Microsoft Vista или выше (Windows 7/8/10). Обе они относятся к включенному манифесту, так что они игнорируются в более старых версиях windows. Без хотя бы одного из этих ключей, исполняемый файл запустится как обычный пользовательский, но со включенной виртуализацией (т.е. с перенаправлением реестра и файлов). Рекомендуется использовать ключ /USER для отключения виртуализации для всех программ, которые соответствуют стандартных пользовательским привилегиям, так как это предназначено только для совместимости со старыми программами. Эти опции также доступны через настройки компилятора IDE.

/ADMINISTRATOR: заставит программу запрашивает права администратора. Без нее программа работать не будет. Этот параметр необходим. Примечание. Вы также можете отлаживать программы с этим флагом, но только с автономным отладчиком gui (так как он должен работать и в режиме с повышенными правами).

/USER: программа запустится как пользователь, который её запустил. Виртуализация для исполняемого файла выключена.

/DPIAWARE: Включить поддержку DPI для исполняемого файла.

Примеры:

CLI> pbcompiler "C:\Project\Source\DLLSource.pb" /EXE "C:\Project\project.dll" /DLL

Компилятор скомпилирует исходный код (здесь с полным путем) и создаст DLL "project.dll" в заданном каталоге.

Ключи команд используемые в Linux

-so или --sharedobject "filename": создаёт динамическую библиотеку (shared объект).

-mmx, -3dnow, -sse или -sse2: создаёт исполняемый файл с учётом расширенных функций процессора. Это означает, что если доступна специальная процедура для такого процессора, она будет использоваться для этого исполняемого файла. Поэтому исполняемый файл будет корректно работать только на компьютере с таким процессором.

-dc или --dynamiccpu: создаёт исполняемый файл, содержащий оптимизированные для разных процессоров функции. Когда программа запускается, она определяет тип процессора и затем выбирает для использования наиболее подходящие функции. Это создаёт больший по размеру исполняемый файл, но он будет работать так быстро, как только возможно, на всех процессорах.

Ключи команд используемые в OS X

-n или --icon "filename.icns": добавляет указанный значок в исполняемый файл.

-dl или --dylib "имя файла": создаёт динамическую библиотеку (объект dylib).

-f или --front: выводит запущенный процесс на передний план.

-ibp или --ignorebundlepath: не использовать путь пакета в качестве текущего каталога.