mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-16 20:09:10 +02:00
implemented adjusting project compiler paths on saving project as
git-svn-id: trunk@8570 -
This commit is contained in:
parent
8e7fce284d
commit
8aaac32221
@ -121,6 +121,9 @@ function MergeSearchPaths(const OldSearchPath, AddSearchPath: string): string;
|
|||||||
function RemoveSearchPaths(const SearchPath, RemoveSearchPath: string): string;
|
function RemoveSearchPaths(const SearchPath, RemoveSearchPath: string): string;
|
||||||
function CreateAbsoluteSearchPath(const SearchPath, BaseDirectory: string): string;
|
function CreateAbsoluteSearchPath(const SearchPath, BaseDirectory: string): string;
|
||||||
function CreateRelativeSearchPath(const SearchPath, BaseDirectory: string): string;
|
function CreateRelativeSearchPath(const SearchPath, BaseDirectory: string): string;
|
||||||
|
function RebaseSearchPath(const SearchPath,
|
||||||
|
OldBaseDirectory, NewBaseDirectory: string;
|
||||||
|
SkipPathsStartingWithMakro: boolean): string;
|
||||||
function ShortenSearchPath(const SearchPath, BaseDirectory,
|
function ShortenSearchPath(const SearchPath, BaseDirectory,
|
||||||
ChompDirectory: string): string;
|
ChompDirectory: string): string;
|
||||||
function GetNextDirectoryInSearchPath(const SearchPath: string;
|
function GetNextDirectoryInSearchPath(const SearchPath: string;
|
||||||
@ -428,6 +431,40 @@ begin
|
|||||||
SetLength(Result,ResultStartPos-1);
|
SetLength(Result,ResultStartPos-1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function RebaseSearchPath(const SearchPath, OldBaseDirectory,
|
||||||
|
NewBaseDirectory: string; SkipPathsStartingWithMakro: boolean): string;
|
||||||
|
// change every relative search path
|
||||||
|
var
|
||||||
|
EndPos: Integer;
|
||||||
|
StartPos: Integer;
|
||||||
|
CurPath: String;
|
||||||
|
begin
|
||||||
|
Result:=SearchPath;
|
||||||
|
if CompareFilenames(OldBaseDirectory,NewBaseDirectory)=0 then exit;
|
||||||
|
EndPos:=1;
|
||||||
|
repeat
|
||||||
|
StartPos:=EndPos;
|
||||||
|
while (StartPos<=length(Result)) and (Result[StartPos]=';') do
|
||||||
|
inc(StartPos);
|
||||||
|
if StartPos>length(Result) then break;
|
||||||
|
EndPos:=StartPos;
|
||||||
|
while (EndPos<=length(Result)) and (Result[EndPos]<>';') do
|
||||||
|
inc(EndPos);
|
||||||
|
if EndPos>StartPos then begin
|
||||||
|
CurPath:=copy(Result,StartPos,EndPos-StartPos);
|
||||||
|
if (not FilenameIsAbsolute(CurPath))
|
||||||
|
and ((not SkipPathsStartingWithMakro) or (CurPath[1]<>'$'))
|
||||||
|
then begin
|
||||||
|
CurPath:=TrimFilename(AppendPathDelim(OldBaseDirectory)+CurPath);
|
||||||
|
CurPath:=CreateRelativePath(CurPath,NewBaseDirectory);
|
||||||
|
Result:=copy(Result,1,StartPos-1)+CurPath
|
||||||
|
+copy(Result,EndPos,length(Result));
|
||||||
|
EndPos:=StartPos+length(CurPath);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
until false;
|
||||||
|
end;
|
||||||
|
|
||||||
function ShortenSearchPath(const SearchPath, BaseDirectory,
|
function ShortenSearchPath(const SearchPath, BaseDirectory,
|
||||||
ChompDirectory: string): string;
|
ChompDirectory: string): string;
|
||||||
// Every search path that is a subdirectory of ChompDirectory will be shortened.
|
// Every search path that is a subdirectory of ChompDirectory will be shortened.
|
||||||
|
20
ide/main.pp
20
ide/main.pp
@ -5036,6 +5036,26 @@ begin
|
|||||||
UpdateSourceNames;
|
UpdateSourceNames;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
// update paths
|
||||||
|
Project1.CompilerOptions.OtherUnitFiles:=
|
||||||
|
RebaseSearchPath(Project1.CompilerOptions.OtherUnitFiles,OldProjectPath,
|
||||||
|
Project1.ProjectDirectory,true);
|
||||||
|
Project1.CompilerOptions.IncludeFiles:=
|
||||||
|
RebaseSearchPath(Project1.CompilerOptions.IncludeFiles,OldProjectPath,
|
||||||
|
Project1.ProjectDirectory,true);
|
||||||
|
Project1.CompilerOptions.Libraries:=
|
||||||
|
RebaseSearchPath(Project1.CompilerOptions.Libraries,OldProjectPath,
|
||||||
|
Project1.ProjectDirectory,true);
|
||||||
|
Project1.CompilerOptions.ObjectPath:=
|
||||||
|
RebaseSearchPath(Project1.CompilerOptions.ObjectPath,OldProjectPath,
|
||||||
|
Project1.ProjectDirectory,true);
|
||||||
|
Project1.CompilerOptions.SrcPath:=
|
||||||
|
RebaseSearchPath(Project1.CompilerOptions.SrcPath,OldProjectPath,
|
||||||
|
Project1.ProjectDirectory,true);
|
||||||
|
Project1.CompilerOptions.DebugPath:=
|
||||||
|
RebaseSearchPath(Project1.CompilerOptions.DebugPath,OldProjectPath,
|
||||||
|
Project1.ProjectDirectory,true);
|
||||||
|
|
||||||
// invalidate cached substituted macros
|
// invalidate cached substituted macros
|
||||||
IncreaseCompilerParseStamp;
|
IncreaseCompilerParseStamp;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user