mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-09 01:28:19 +02:00
IDE: new menu item: quick compile
git-svn-id: trunk@9776 -
This commit is contained in:
parent
588a4a2408
commit
0a80cefe54
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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';
|
||||
|
51
ide/main.pp
51
ide/main.pp
@ -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;
|
||||
|
@ -229,6 +229,7 @@ type
|
||||
//itmRunBuilding: TIDEMenuSection;
|
||||
itmRunMenuBuild: TIDEMenuCommand;
|
||||
itmRunMenuBuildAll: TIDEMenuCommand;
|
||||
itmRunMenuQuickCompile: TIDEMenuCommand;
|
||||
itmRunMenuAbortBuild: TIDEMenuCommand;
|
||||
//itmRunnning: TIDEMenuSection;
|
||||
itmRunMenuRun: TIDEMenuCommand;
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -85,6 +85,9 @@ type
|
||||
pbfCompileDependenciesClean,
|
||||
pbfOnlyIfNeeded,
|
||||
pbfDoNotSaveEditorFiles,
|
||||
pbfSkipLinking,
|
||||
pbfSkipAssembler,
|
||||
pbfSkipTools,
|
||||
pbfCreateMakefile
|
||||
);
|
||||
TProjectBuildFlags = set of TProjectBuildFlag;
|
||||
|
Loading…
Reference in New Issue
Block a user