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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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