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

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

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

Ответить
Ildus
новенький
Сообщения: 40
Зарегистрирован: 12.10.2018 18:35:38

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

Сообщение Ildus »

Нужно из TSynEdit или файл .pas скомпилировать приложение, используя встроенный компилятор Lazarus или FPC.
Вопрос: какой класс или компонент использовать и как реализовать все это?
Принимаю любые интересные и рабочие идеи :D
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

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

Сообщение Снег Север »

Почитайте про утилиту make и будут вам идеи.
gluhow
новенький
Сообщения: 41
Зарегистрирован: 13.08.2015 14:30:20

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

Сообщение gluhow »

Вызвать внешнюю программу можно с помощью 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
Ildus
новенький
Сообщения: 40
Зарегистрирован: 12.10.2018 18:35:38

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

Сообщение Ildus »

Спасибо большое.!
Я решил использовать lazbuild это очень удобно, нужно лишь указать путь к файлу проекта.
Может кому-нибудь и пригодится.

Код: Выделить всё

SysUtils.ExecuteProcess('E:\Lazarus\CGC (Уйнарер)\Test\lazbuild.exe', путь к файлу проекта .lpi); 

При этом нужно, что бы программа lazbuild была в папке с проектом или выше ее по ветви.
Ответить