Скомпилируйте и запустите freepascal из редактора Atom.

Я хотел бы использовать редактор Atom для изучения Pascal. Как правильно скомпилировать и запустить простой файл Pascal из редактора? Я на Windows и использую компилятор FreePascal.

РЕДАКТИРОВАТЬ: я получил его с помощью пакета build следующим образом (спасибо, @Wosi):

  1. Создайте папку для хранения моего модуля Pascal HelloWorld.pas
  2. В ту же папку я поместил следующий .atom-build.json файл:

    {
        "cmd": "CompileAndRun.bat",
        "args": ["{FILE_ACTIVE}"],
        "sh": false,
        "cwd": "{FILE_ACTIVE_PATH}"
    }
    
  3. И содержимое CompileAndRun.bat:

    @echo off
    set FileName=%1
    fpc %FileName%
    set ProgName=%FileName:~0,-5%
    start "" %ProgName%.exe
    

person Anton Ganev    schedule 24.08.2015    source источник
comment
Обратите внимание, что параметры в исходном файле могут изменить сгенерированное имя исполняемого файла. Многие настройки компилятора можно установить из исходного кода с помощью директив. Не все файлы Pascal доставляют исполняемый файл.   -  person Marco van de Voort    schedule 27.08.2015


Ответы (1)


Используйте lazbuild для компиляции ваших проектов. Это самый простой способ.

Пример:

C:\development\lazarus\lazbuild.exe MyProject.lpi 
MyProject.exe

Нажмите здесь, чтобы узнать, как определить команду сборки в Atom: https://atom.io/packages/build#custom-build-command

РЕДАКТИРОВАТЬ: вы хотите скомпилировать и запустить открытый в данный момент файл .pas. Я настоятельно не рекомендую делать это, так как программа на Паскале обычно является частью множества разных .pas файлов, начинающихся со слова unit. Обычно вы работаете с проектами, а не с отдельными .pas файлами.

Тем не менее, результирующий exe-файл (я предполагаю, что вы работаете в Windows) по умолчанию создается в той же папке, что и скомпилированный файл .pas. Поэтому вам просто нужно вызвать программу после ее компиляции. К сожалению, вы не можете установить fpc в качестве значения для cmd в вашем файле .atom-build.json. Вам нужно создать пакетный скрипт, который вызывается при каждой сборке, чтобы выполнить оба шага.

Создайте файл с именем CompileAndRun.bat с таким содержимым

@echo off 
set FileName=%1%
fpc %FileName%
set ProgName=%FileName:~0,-4%
%ProgName%.exe

и измените значение cmd в файле .atom-build.json на

"cmd": "CompileAndRun.bat",
person Wosi    schedule 24.08.2015
comment
Я уже пробовал пакет сборки, но безуспешно. Я создал каталог для хранения моих исходных файлов Pascal и поместил в него следующий .atom-build.json файл: { "cmd": "fpc", "sh": true, "args": ["{FILE_ACTIVE}"], }. Когда я запускаю команду сборки, ничего не происходит. - person Anton Ganev; 24.08.2015
comment
{FILE_ACTIVE} — это файл, открытый в данный момент в редакторе. Вам нужно указать на файл проекта .lpi. - person Wosi; 24.08.2015
comment
Текущий открытый файл — это файл, который я хочу скомпилировать и запустить. Я создаю исходный файл вручную (например, HelloWorld.pas). fpc HelloWorld.pas работает из командной строки, но не в Atom. - person Anton Ganev; 24.08.2015
comment
Вы не можете скомпилировать и запустить один файл .pas. Вы можете только запустить проект. - person Wosi; 24.08.2015
comment
Тогда возникает вопрос, как я могу запустить fpc HelloWorld.pas, а затем открыть соответствующий файл .exe из Atom? - person Anton Ganev; 24.08.2015
comment
Нет, вопрос в том, что вы ожидаете, когда вы выполняете паскаль? Паскаль основан на проектах. Блок может быть частью многих различных проектов. Определите проект и укажите на него в команде сборки. - person Wosi; 24.08.2015
comment
У меня есть частичное решение сейчас. Я отредактировал свой вопрос, чтобы включить его. - person Anton Ganev; 25.08.2015
comment
Большое спасибо за ваши усилия! К сожалению, ваше решение открывает исполняемый файл в консоли сборки в атоме, и это проблема, когда ожидается ввод данных пользователем. Можно ли открыть исполняемый файл во внешней консоли, где возможен ввод данных пользователем? - person Anton Ganev; 25.08.2015
comment
Измените последнюю строку CompileAndRun.bat на call start %ProgName%.exe. Обычный способ сказать «спасибо» на StackOverflow — это проголосовать и/или принять ответ ;-) - person Wosi; 25.08.2015
comment
К сожалению, это только открывает окно консоли, но не запускает программу. Мне также пришлось изменить предпоследнюю строку на set ProgName=%FileName:~0,-5% - person Anton Ganev; 26.08.2015
comment
Я понял: последняя строка должна читаться как start "" %ProgramName%.exe - person Anton Ganev; 26.08.2015