IDE: new menu item: quick compile

git-svn-id: trunk@9776 -
This commit is contained in:
mattias 2006-08-31 21:19:18 +00:00
parent 588a4a2408
commit 0a80cefe54
8 changed files with 75 additions and 35 deletions

View File

@ -56,9 +56,9 @@ type
public
constructor Create;
destructor Destroy; override;
function Compile(AProject: TProject; BuildAll: boolean;
const WorkingDir, CompilerFilename, CompilerParams: string
): TModalResult;
function Compile(AProject: TProject;
const WorkingDir, CompilerFilename, CompilerParams: string;
BuildAll, SkipLinking, SkipAssembler: boolean): TModalResult;
procedure WriteError(const Msg: string);
property OnCommandLineCreate: TOnCmdLineCreate read FOnCmdLineCreate
write FOnCmdLineCreate;
@ -92,8 +92,9 @@ end;
{------------------------------------------------------------------------------
TCompiler Compile
------------------------------------------------------------------------------}
function TCompiler.Compile(AProject: TProject; BuildAll: boolean;
const WorkingDir, CompilerFilename, CompilerParams: string): TModalResult;
function TCompiler.Compile(AProject: TProject;
const WorkingDir, CompilerFilename, CompilerParams: string;
BuildAll, SkipLinking, SkipAssembler: boolean): TModalResult;
var
CmdLine : String;
Abort : Boolean;
@ -132,6 +133,11 @@ begin
end;
if BuildAll then
CmdLine := CmdLine+' -B';
if SkipLinking and SkipAssembler then
CmdLine := CmdLine+' -s'
else if SkipLinking then
CmdLine := CmdLine+' -Cn';
if CompilerParams<>'' then
CmdLine := CmdLine+' '+CompilerParams;
if Assigned(FOnCmdLineCreate) then begin

View File

@ -483,6 +483,7 @@ begin
// run menu
ecBuild: SetResult(VK_F9,[ssCtrl],VK_UNKNOWN,[]);
ecBuildAll: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecQuickCompile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecAbortBuild: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecRun: SetResult(VK_F9,[],VK_UNKNOWN,[]);
ecPause: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
@ -794,6 +795,7 @@ begin
// run menu
ecBuild: SetResult(VK_F9,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecBuildAll: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecQuickCompile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecAbortBuild: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecRun: SetResult(VK_F9,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecPause: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
@ -1362,6 +1364,7 @@ begin
// run menu (menu string resource)
ecBuild : Result:= srkmecBuild;
ecBuildAll : Result:= srkmecBuildAll;
ecQuickCompile : Result:= srkmecQuickCompile;
ecAbortBuild : Result:= srkmecAbortBuild;
ecRun : Result:= srkmecRun;
ecPause : Result:= srkmecPause;
@ -2287,6 +2290,7 @@ begin
C:=Categories[AddCategory('RunMenu',srkmCatRunMenu,nil)];
AddDefault(C,'Build project/program',ecBuild);
AddDefault(C,'Build all files of project/program',ecBuildAll);
AddDefault(C,'Quick compile, no linking',ecQuickCompile);
AddDefault(C,'Abort building',ecAbortBuild);
AddDefault(C,'Run program',ecRun);
AddDefault(C,'Pause program',ecPause);

View File

@ -251,6 +251,7 @@ resourcestring
lisMenuBuild = 'Build';
lisMenuBuildAll = 'Build all';
lisMenuQuickCompile = 'Quick compile';
lisMenuAbortBuild = 'Abort Build';
lisMenuProjectRun = 'Run';
lisMenuPause = 'Pause';
@ -1532,6 +1533,7 @@ resourcestring
// run menu
srkmecBuild = 'build program/project';
srkmecBuildAll = 'build all files of program/project';
srkmecQuickCompile = 'quick compile, no linking';
srkmecAbortBuild = 'abort build';
srkmecRun = 'run program';
srkmecPause = 'pause program';

View File

@ -247,6 +247,7 @@ type
// run menu
procedure mnuBuildProjectClicked(Sender: TObject);
procedure mnuBuildAllProjectClicked(Sender: TObject);
procedure mnuQuickCompileProjectClicked(Sender: TObject);
procedure mnuAbortBuildProjectClicked(Sender: TObject);
procedure mnuRunProjectClicked(Sender: TObject);
procedure mnuPauseProjectClicked(Sender: TObject);
@ -672,6 +673,7 @@ type
function DoBuildProject(const AReason: TCompileReason;
Flags: TProjectBuildFlags): TModalResult;
function DoAbortBuild: TModalResult;
procedure DoQuickCompile;
function DoInitProjectRun: TModalResult; override;
function DoRunProject: TModalResult;
function SomethingOfProjectIsModified: boolean;
@ -2054,6 +2056,7 @@ begin
with MainIDEBar do begin
itmRunMenuBuild.OnClick := @mnuBuildProjectClicked;
itmRunMenuBuildAll.OnClick := @mnuBuildAllProjectClicked;
itmRunMenuQuickCompile.OnClick := @mnuQuickCompileProjectClicked;
itmRunMenuAbortBuild.OnClick := @mnuAbortBuildProjectClicked;
itmRunMenuRun.OnClick := @mnuRunProjectClicked;
itmRunMenuPause.Enabled := false;
@ -2457,6 +2460,7 @@ begin
ecBuildAll: DoBuildProject(crBuild,[pbfCleanCompile,
pbfCompileDependenciesClean]);
ecQuickCompile:DoQuickCompile;
ecAbortBuild: DoAbortBuild;
ecRun:
@ -3228,6 +3232,11 @@ Begin
DoBuildProject(crBuild,[pbfCleanCompile,pbfCompileDependenciesClean]);
end;
procedure TMainIDE.mnuQuickCompileProjectClicked(Sender: TObject);
begin
DoQuickCompile;
end;
Procedure TMainIDE.mnuAbortBuildProjectClicked(Sender: TObject);
Begin
DoAbortBuild;
@ -7637,13 +7646,15 @@ begin
end;
// execute compilation tool 'Before'
ToolBefore:=TProjectCompilationToolOptions(
if not (pbfSkipTools in Flags) then begin
ToolBefore:=TProjectCompilationToolOptions(
Project1.CompilerOptions.ExecuteBefore);
if (AReason in ToolBefore.CompileReasons) then begin
Result:=DoExecuteCompilationTool(Project1.CompilerOptions.ExecuteBefore,
Project1.ProjectDirectory,
lisExecutingCommandBefore);
if Result<>mrOk then exit;
if (AReason in ToolBefore.CompileReasons) then begin
Result:=DoExecuteCompilationTool(Project1.CompilerOptions.ExecuteBefore,
Project1.ProjectDirectory,
lisExecutingCommandBefore);
if Result<>mrOk then exit;
end;
end;
if (AReason in Project1.CompilerOptions.CompileReasons)
@ -7655,8 +7666,10 @@ begin
ConnectOutputFilter;
// compile
Result:=TheCompiler.Compile(Project1, pbfCleanCompile in Flags,
WorkingDir,CompilerFilename,CompilerParams);
Result:=TheCompiler.Compile(Project1,
WorkingDir,CompilerFilename,CompilerParams,
pbfCleanCompile in Flags,pbfSkipLinking in Flags,
pbfSkipAssembler in Flags);
if Result<>mrOk then begin
DoJumpToCompilerMessage(-1,true);
exit;
@ -7670,13 +7683,16 @@ begin
end;
// execute compilation tool 'After'
ToolAfter:=TProjectCompilationToolOptions(Project1.CompilerOptions.ExecuteAfter);
// no need to check for mrOk, we are exit if it wasn't
if (AReason in ToolAfter.CompileReasons) then begin
Result:=DoExecuteCompilationTool(Project1.CompilerOptions.ExecuteAfter,
Project1.ProjectDirectory,
lisExecutingCommandAfter);
if Result<>mrOk then exit;
if not (pbfSkipTools in Flags) then begin
ToolAfter:=TProjectCompilationToolOptions(
Project1.CompilerOptions.ExecuteAfter);
// no need to check for mrOk, we are exit if it wasn't
if (AReason in ToolAfter.CompileReasons) then begin
Result:=DoExecuteCompilationTool(Project1.CompilerOptions.ExecuteAfter,
Project1.ProjectDirectory,
lisExecutingCommandAfter);
if Result<>mrOk then exit;
end;
end;
// add success message
@ -7699,6 +7715,11 @@ begin
TheOutputFilter.StopExecute:=true;
end;
procedure TMainIDE.DoQuickCompile;
begin
DoBuildProject(crCompile,[pbfSkipLinking,pbfSkipTools,pbfSkipAssembler]);
end;
function TMainIDE.DoInitProjectRun: TModalResult;
var
ProgramFilename: string;

View File

@ -229,6 +229,7 @@ type
//itmRunBuilding: TIDEMenuSection;
itmRunMenuBuild: TIDEMenuCommand;
itmRunMenuBuildAll: TIDEMenuCommand;
itmRunMenuQuickCompile: TIDEMenuCommand;
itmRunMenuAbortBuild: TIDEMenuCommand;
//itmRunnning: TIDEMenuSection;
itmRunMenuRun: TIDEMenuCommand;

View File

@ -615,6 +615,7 @@ begin
CreateMenuItem(ParentMI,itmRunMenuBuild,'itmRunMenuBuild',lisMenuBuild,'menu_build');
CreateMenuItem(ParentMI,itmRunMenuBuildAll,'itmRunMenuBuildAll',lisMenuBuildAll,'menu_buildall');
CreateMenuItem(ParentMI,itmRunMenuQuickCompile,'itmRunMenuQuickCompile',lisMenuQuickCompile);
CreateMenuItem(ParentMI,itmRunMenuAbortBuild,'itmRunMenuAbortBuild',lisMenuAbortBuild);
CreateMenuSeparatorSection(mnuRun,itmRunnning,'itmRunnning');
@ -896,6 +897,7 @@ begin
// run menu
itmRunMenuBuild.Command:=GetCommand(ecBuild);
itmRunMenuBuildAll.Command:=GetCommand(ecBuildAll);
itmRunMenuQuickCompile.Command:=GetCommand(ecQuickCompile);
itmRunMenuAbortBuild.Command:=GetCommand(ecAbortBuild);
itmRunMenuRun.Command:=GetCommand(ecRun);
itmRunMenuPause.Command:=GetCommand(ecPause);

View File

@ -200,21 +200,22 @@ const
// compile menu
ecBuild = ecFirstLazarus + 400;
ecBuildAll = ecFirstLazarus + 401;
ecAbortBuild = ecFirstLazarus + 402;
ecRun = ecFirstLazarus + 403;
ecPause = ecFirstLazarus + 404;
ecStepInto = ecFirstLazarus + 405;
ecStepOver = ecFirstLazarus + 406;
ecRunToCursor = ecFirstLazarus + 407;
ecStopProgram = ecFirstLazarus + 408;
ecResetDebugger = ecFirstLazarus + 409;
ecBuildLazarus = ecFirstLazarus + 410;
ecBuildFile = ecFirstLazarus + 411;
ecRunFile = ecFirstLazarus + 412;
ecConfigBuildFile = ecFirstLazarus + 413;
ecInspect = ecFirstLazarus + 414;
ecEvaluate = ecFirstLazarus + 415;
ecAddWatch = ecFirstLazarus + 416;
ecQuickCompile = ecFirstLazarus + 402;
ecAbortBuild = ecFirstLazarus + 403;
ecRun = ecFirstLazarus + 404;
ecPause = ecFirstLazarus + 405;
ecStepInto = ecFirstLazarus + 406;
ecStepOver = ecFirstLazarus + 407;
ecRunToCursor = ecFirstLazarus + 408;
ecStopProgram = ecFirstLazarus + 409;
ecResetDebugger = ecFirstLazarus + 410;
ecBuildLazarus = ecFirstLazarus + 411;
ecBuildFile = ecFirstLazarus + 412;
ecRunFile = ecFirstLazarus + 413;
ecConfigBuildFile = ecFirstLazarus + 414;
ecInspect = ecFirstLazarus + 415;
ecEvaluate = ecFirstLazarus + 416;
ecAddWatch = ecFirstLazarus + 417;
// project menu
ecNewProject = ecFirstLazarus + 500;

View File

@ -85,6 +85,9 @@ type
pbfCompileDependenciesClean,
pbfOnlyIfNeeded,
pbfDoNotSaveEditorFiles,
pbfSkipLinking,
pbfSkipAssembler,
pbfSkipTools,
pbfCreateMakefile
);
TProjectBuildFlags = set of TProjectBuildFlag;