Компиляция кода программно

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Компиляция кода программно

Сообщение Ildus » 24.06.2019 15:02:43

Нужно из TSynEdit или файл .pas скомпилировать приложение, используя встроенный компилятор Lazarus или FPC.
Вопрос: какой класс или компонент использовать и как реализовать все это?
Принимаю любые интересные и рабочие идеи :D
Ildus
новенький
 
Сообщения: 33
Зарегистрирован: 12.10.2018 19:35:38

Re: Компиляция кода программно

Сообщение Снег Север » 24.06.2019 15:18:02

Почитайте про утилиту make и будут вам идеи.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2128
Зарегистрирован: 27.11.2007 16:14:47

Re: Компиляция кода программно

Сообщение gluhow » 26.06.2019 12:38:19

Вызвать внешнюю программу можно с помощью TProcess
Код: Выделить всё
Procedure Compile;
var AProcess:TProcess; S:TStringList;
begin
  AProcess := TProcess.Create(nil);
  AProcess.Executable:='fpc';
  AProcess.Parameters.AddStrings(['-MObjFPC', '-B', '-O1', '-Fuaddfile']);
  AProcess.Parameters.AddStrings(['-ve', '-vw', '-vn']);
  AProcess.Parameters.AddStrings([ '-o Filename']);
  AProcess.Parameters.AddStrings(['-Fcutf8', '-fPIC', 'Project.lpr']);
  AProcess.Options := AProcess.Options + [poWaitOnExit, poUsePipes];
  AProcess.Execute;
  S:=TStringList.Create;
  S.LoadFromStream(AProcess.Output);
  S.SaveToFile(LPRPath+'compile.info');
  S.Free;
  AProcess.Free;
end;

Кроме fpc, есть lazbuild, fpcmake
Если нужен не скомпилированный файл, а результат выполнения, то рассмотрите еще Pascal Script
gluhow
новенький
 
Сообщения: 32
Зарегистрирован: 13.08.2015 15:30:20

Re: Компиляция кода программно

Сообщение Ildus » 27.06.2019 22:57:02

Спасибо большое.!
Я решил использовать lazbuild это очень удобно, нужно лишь указать путь к файлу проекта.
Может кому-нибудь и пригодится.
Код: Выделить всё
SysUtils.ExecuteProcess('E:\Lazarus\CGC (Уйнарер)\Test\lazbuild.exe', путь к файлу проекта .lpi);

При этом нужно, что бы программа lazbuild была в папке с проектом или выше ее по ветви.
Ildus
новенький
 
Сообщения: 33
Зарегистрирован: 12.10.2018 19:35:38


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

Рейтинг@Mail.ru