library make_exe; uses Windows, Messages, kol, CGTShare in '..\..\CGTShare.pas'; type TCGrec = record Code:PStrList; end; PCGrec = ^TCGrec; function buildGetParamsProc(var params:TBuildParams):integer; cdecl; begin params.flags := CGMP_COMPRESSED or CGMP_RUN; Result := CG_SUCCESS; end; procedure RunWait(const app:string); var si: Tstartupinfo; p: Tprocessinformation; begin FillChar( Si, SizeOf( Si ) , 0 ); with Si do begin cb := SizeOf( Si); dwFlags := STARTF_USESHOWWINDOW; wShowWindow := SW_HIDE; end; CreateProcess(nil,PChar(app), nil, nil, false, CREATE_DEFAULT_ERROR_MODE, nil, nil, si, p); WaitForSingleObject(p.hProcess, INFINITE); end; function buildMakePrj(const params:TBuildMakePrjRec):integer; cdecl; var lst:PStrList; src,pn:string; begin lst := NewStrList; lst.Text := PChar(params.result); lst.SaveToFile(params.prjFilename); SetCurrentDirectory(PChar(ExtractFilePath(params.prjFilename))); pn := ExtractFileNameWOext(params.prjFilename); // lst.text := 'TEMPLATE = app'#13#10'TARGET = '#13#10'DEPENDPATH += .'#13#10'INCLUDEPATH += .'#13#10#13#10'SOURCES += ' + pn + '.cpp'#13#10; // lst.SaveToFile(pn + '.pro'); src := pn + '.cpp'; DeleteFile(PChar(src)); MoveFile(PChar(params.prjFilename), PChar(src)); // RunWait('qmake'); lst.free; Result := CG_SUCCESS; end; function buildCompliteProc(const params:TBuildCompliteRec):integer; cdecl; //var src:string; // lst:PStrList; begin //src := ExtractFilePath(params.prjFilename) + 'gcc_mswddll/' + ExtractFileNameWOext(params.appFilename) + '.exe'; //DeleteFile(PChar(params.appFilename)); //MoveFile(PChar(src), PChar(params.appFilename)); // lst := NewStrList; // lst.add('qmake -project'); // lst.add('qmake'); // lst.add('mingw32-make'); // lst.SaveToFile(ExtractFilePath(params.appFilename) + '\build.bat'); // lst.Free; Result := CG_SUCCESS; end; function buildRunProc(var params:TBuildRunRec):integer; cdecl; var AppName:string; si:TStartupInfo; p: TProcessInformation; res:cardinal; begin AppName := ExtractFilePath(params.FileName) + 'gcc_mswddll/' + ExtractFileNameWOext(params.FileName) + '.exe'; FillChar( Si, SizeOf( Si ) , 0 ); with Si do begin cb := SizeOf( Si); dwFlags := STARTF_USESHOWWINDOW; wShowWindow := 4; end; SetCurrentDirectory(PChar(ExtractFilePath(AppName))); CreateProcess(nil,PChar('"' + AppName + '"'), nil, nil,false,CREATE_DEFAULT_ERROR_MODE, nil, nil, si, p); res := WAIT_TIMEOUT; Params.data := pointer(p.hProcess); while (res = WAIT_TIMEOUT) do res := WaitForSingleObject(p.hProcess,10); SetCurrentDirectory(PChar( GetStartDir )); Result := CG_SUCCESS; end; function buildStopProc(var params:TBuildRunRec):integer; cdecl; begin TerminateProcess(cardinal(Params.data),0); Result := CG_SUCCESS; end; exports buildGetParamsProc, buildMakePrj, buildCompliteProc, buildRunProc, buildStopProc; begin end.