mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-19 04:19:09 +02:00
IDE: compile: warn if target filename is a directory
git-svn-id: trunk@58033 -
This commit is contained in:
parent
b9e42b85a9
commit
6365ee6f91
@ -1031,8 +1031,12 @@ resourcestring
|
||||
lisTheProjectUsesFPCResourcesWhichRequireAtLeast = 'The project uses '
|
||||
+'FPC resources, which require at least FPC 2.4';
|
||||
lisCreateDirectory = 'Create directory?';
|
||||
lisFileFound = 'File found';
|
||||
lisTheTargetDirectoryIsAFile = 'The target directory is a file:%s';
|
||||
lisTheOutputDirectoryIsMissing = 'The output directory "%s" is missing.';
|
||||
lisCreateIt = 'Create it';
|
||||
lisInvalidFileName = 'Invalid file name';
|
||||
lisTheTargetFileNameIsADirectory = 'The target file name is a directory';
|
||||
|
||||
// file dialogs
|
||||
lisOpenFile = 'Open File';
|
||||
|
46
ide/main.pp
46
ide/main.pp
@ -6594,7 +6594,7 @@ var
|
||||
TargetExeName: String;
|
||||
TargetExeDirectory: String;
|
||||
FPCVersion, FPCRelease, FPCPatch: integer;
|
||||
aCompileHint: String;
|
||||
aCompileHint, ShortFilename: String;
|
||||
OldToolStatus: TIDEToolStatus;
|
||||
IsComplete: Boolean;
|
||||
StartTime: TDateTime;
|
||||
@ -6784,21 +6784,39 @@ begin
|
||||
// create target output directory
|
||||
TargetExeName := Project1.CompilerOptions.CreateTargetFilename;
|
||||
TargetExeDirectory:=ExtractFilePath(TargetExeName);
|
||||
if (FilenameIsAbsolute(TargetExeDirectory))
|
||||
and (not DirPathExistsCached(TargetExeDirectory)) then begin
|
||||
if not FileIsInPath(TargetExeDirectory,WorkingDir) then begin
|
||||
Result:=IDEQuestionDialog(lisCreateDirectory,
|
||||
Format(lisTheOutputDirectoryIsMissing, [TargetExeDirectory]),
|
||||
mtConfirmation, [mrYes, lisCreateIt,
|
||||
mrCancel]);
|
||||
if Result<>mrYes then exit;
|
||||
end;
|
||||
Result:=ForceDirectoryInteractive(TargetExeDirectory,[mbRetry]);
|
||||
if Result<>mrOk then begin
|
||||
debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] ForceDirectoryInteractive "',TargetExeDirectory,'" failed']);
|
||||
exit;
|
||||
if FilenameIsAbsolute(TargetExeDirectory) then begin
|
||||
if FileExistsCached(TargetExeDirectory) then begin
|
||||
if not DirPathExistsCached(TargetExeDirectory) then begin
|
||||
Result:=IDEQuestionDialog(lisFileFound,
|
||||
Format(lisTheTargetDirectoryIsAFile, [sLineBreak
|
||||
+TargetExeDirectory]),
|
||||
mtWarning, [mrCancel,mrIgnore]);
|
||||
if Result<>mrIgnore then exit(mrCancel);
|
||||
end;
|
||||
end else begin
|
||||
if not FileIsInPath(TargetExeDirectory,WorkingDir) then begin
|
||||
Result:=IDEQuestionDialog(lisCreateDirectory,
|
||||
Format(lisTheOutputDirectoryIsMissing, [TargetExeDirectory]),
|
||||
mtConfirmation, [mrYes, lisCreateIt,
|
||||
mrCancel]);
|
||||
if Result<>mrYes then exit;
|
||||
end;
|
||||
Result:=ForceDirectoryInteractive(TargetExeDirectory,[mbRetry]);
|
||||
if Result<>mrOk then begin
|
||||
debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] ForceDirectoryInteractive "',TargetExeDirectory,'" failed']);
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
ShortFilename:=ExtractFileName(TargetExeName);
|
||||
if (ShortFilename='') or (ShortFilename='.') or (ShortFilename='..')
|
||||
or (FilenameIsAbsolute(TargetExeName) and DirPathExistsCached(TargetExeName)) then
|
||||
begin
|
||||
Result:=IDEQuestionDialog(lisInvalidFileName,
|
||||
lisTheTargetFileNameIsADirectory,
|
||||
mtWarning, [mrCancel,mrIgnore]);
|
||||
if Result<>mrIgnore then exit(mrCancel);
|
||||
end;
|
||||
|
||||
// create application bundle
|
||||
if Project1.UseAppBundle and (Project1.MainUnitID>=0)
|
||||
|
Loading…
Reference in New Issue
Block a user