Bat файл компіляції проекту

bat файл компіляції проекту

Намагаюся виконати компіляцію проекту за допомогою командного рядка, ніяк не зрозумію як це зробити, невже необхідно прикручувати всі директорії з компонентами вручну. Як саме відбувається компіляція проекту в IDE мабуть використовується файл * .cfg # XA0; в директорії з проектом, але як саме?

Ketmar, пам'ятається, хвалився, що виключно через MakeFile працює.

set DELPHI = C: \ Program Files \ Borland \ Delphi7

set PATHCOMMON = "C: \ Program Files \ EurekaLog 5 \ Delphi7; .ELPHI% \ Lib; .ELPHI% \ Bin; .ELPHI% \ Imports; .ELPHI% \ Projects \ Bpl; C: \ Program Files \ PostgresDAC \; E: \ 01_Common \ DBEngine; E: \ 01_Common \ DBEngine \ PgSQL; E: \ 01_Commo n \ DBEngine \ PgSQL \ UpdateSQL; C: \ Program Files \ MySQLDAC \; E: \ 01_Common \ QuickImport ;;. XVCL% \ ExpressScript Engine \ Sources; .XVCL% \ Innerfuse Pascal Script \ Sources; .XVCL% \ ExpressWeb Framework \ Sources; .XVCL% \ ExpressMemData \ Sources; .XVCL% \ ExpressDBTree Suite \ Sources; .XVCL% \ ExpressPrinting System \ Sources ;. XVCL% \ ExpressSpreadSheet \ Sources; E: \ 1_FastReport \ LibD7; E: \ 01_Common \ Other; E: \ 01_Commo n \ SysPack "

"C: \ Program Files \ Borland \ Delphi7 \ Bin \ dcc32.exe" -B -GD -CG - $ A8 - $ B- - $ C + - $ D- - $ E- - $ F- - $ G + - $ H + - $ I + - $ J- - $ K- - $ L- - $ M- - $ N + - $ O + - $ P + - $ Q- - $ R- - $ S- - $ T- - $ U- - $ V + - $ W- - $ X + - $ YD - $ Z1 -N "_DCU" -U% PATHCOMMON% -D "EUREKALOG; EUREKALOG_VER5; RELEASE"

Жахливо це. Я простіше зробив, запускаю після билда групи проектів батнічек, який копіює все куди треба і реєструє все що треба.

найцікавіше, в KDE в KDevelop під FreeBSD 6.0 є класне віконце налаштувань компілятора fpc, і млин не працює. ) Компілятор на них плювати хотів. )

До речі, можна і експерт для IDE написати, шоб запускав потрібний батнічек після компіляції :) Там делов на 15 хвилин.


> pasha_golub

Спасибі, приблизно ясно тепер все

> Ega23

Теж рішення, звичайно трохи по простіше, і менш привабливо відповідно.

> Джо

А ось це мені теж спочатку в голову прийшло. Але ніколи не писав експертів, тому не знаю скільки приблизно часу займе.


> До речі, можна і експерт для IDE написати, шоб запускав потрібний
> Батнічек після компіляції :) Там делов на 15 хвилин.

Ось із задоволенням би подивився на код такого експерта.

> А ось це мені теж спочатку в голову прийшло. Але ніколи не
> Писав експертів, тому не знаю скільки приблизно часу
> Займе.

Ось заготовка, видер з одного свого старого експерта, прикрутити сюди можна все, що фантазія дозволить :)

interface
uses Windows, ExptIntf, ToolIntf;

# XA0; TCompileTimeNotifier = class (TIAddInNotifier)
# XA0; public
# XA0; # XA0; procedure FileNotification (NotifyCode: TFileNotification;
# XA0; # XA0; # XA0; const FileName: string; var Cancel: Boolean); override;
# XA0; # XA0; procedure EventNotification (NotifyCode: TEventNotification;
# XA0; # XA0; # XA0; var Cancel: Boolean); override;
# XA0; end;

implementation
uses SysUtils, DateUtils;

var
# XA0; Notifier: TCompileTimeNotifier;
# XA0; LastCompileDt: TDateTime = 0;

procedure Register; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0;
begin
# XA0; //
end;

procedure TCompileTimeNotifier.EventNotification (
# XA0; NotifyCode: TEventNotification; var Cancel: Boolean);
var
# XA0; Fv: TextFile;
# XA0; Fn: string;
begin
# XA0; if ToolServices.GetProjectName = "" then
# XA0; # XA0; Exit;

# XA0; # XA0; case NotifyCode of
# XA0; # XA0; # XA0; enBeforeCompile:
# XA0; # XA0; # XA0; begin
# XA0; # XA0; # XA0; # XA0; //
# XA0; # XA0; # XA0; end;
# XA0; # XA0; # XA0; enAfterCompile:
# XA0; # XA0; # XA0; begin
# XA0; # XA0; # XA0; # XA0; //
# XA0; # XA0; # XA0; end;
# XA0; # XA0; end;
end;

procedure TCompileTimeNotifier.FileNotification (
# XA0; NotifyCode: TFileNotification; const FileName: string;
# XA0; var Cancel: Boolean);
begin
end;

initialization
# XA0; Notifier: = TCompileTimeNotifier.Create;
# XA0; ToolServices.AddNotifierEx (Notifier);

finalization
# XA0; ToolServices.RemoveNotifier (Notifier);
# XA0; Notifier.Free;

Потрібно, ясна річ, помістити в пакет і інсталювати в IDE.

На «зайве» не звертати увагу, видирав «по живому» :)

TIAddInNotifier - де його подивитися можна?


> Можна використовувати ці настройки при запуску dcc32?

За ідеєю можна. Але я не знайшов як. - (


> По ідеї можна. Але я не знайшов як. - (


> Ega23

Так хотілося б використовувати в якості параметрів то що прописано в cfg і в якості PATHCOMMON використовувати значення відомого одного ключа в реєстрі і було б просто ідеально

Створив програму prog.pas такого вмісту

var
# XA0; I. array of Integer;
begin
# XA0; SetLength (I, 1);
# XA0; I [6]: = 10;
# XA0; writeln (I [6]);
end.

поруч з програмою, в тому ж каталозі поклав вот такой вот батник compile.bat

cd% cd%
dcc32 prog.pas

при виконанні програма компілюється, запускається, видає 10.

Далі, під враженням від рядків "When DCC32 starts, it looks for DCC32.CFG in the current directory. If the file isn" t found there, DCC32 looks in the directory where DCC32.EXE resides. ". Я ложу в цей же каталог якийсь файлик dcc32.cfg ось такого ось вмісту

Після цього запускаю compile.bat, запускаю prog.exe, програма лається, як і слід було очікувати.

Далі не копав, поки що не знаю підводних каменів, але думаю що в цьому напрямку можна нарити чогось корисного.

Пам'ять: 0.77 MB
Час: 0.076 c

Схожі статті