[fpc-devel] build unit dependency list
Mattias Gaertner
nc-gaertnma at netcologne.de
Sat Aug 5 10:23:48 CEST 2006
On Fri, 4 Aug 2006 09:53:00 -0300
"Mario R. Carro" <mcarro at gmx.net> wrote:
> Hi, I have a few hand made makefiles for some (up to now) Delphi projects that
> I use to build the releases. I would want to be able to automagically
> generate the dependencies for the units in the projects.
>
> I found that Lazarus has a dependencies view window. So after some browsing I
> wrote the following minimal test program:
>
> program getpdeps;
> {$mode objfpc}{$H+}
> uses
> Classes,
> CodeCache,
> CodeToolManager;
> var
> IntfFiles, ImplFiles: TStrings;
> Cache: TCodeCache;
> Buffer: TCodeBuffer;
> begin
> Cache := TCodeCache.Create;
> IntfFiles := TStringList.Create;
> ImplFiles := TStringList.Create;
> try
> Buffer := Cache.LoadFile(ParamStr(1));
> CodeToolBoss.ActivateWriteLock;
> try
> CodeToolBoss.FindUsedUnitFiles(Buffer, IntfFiles, ImplFiles);
> WriteLn('intf=' + IntfFiles.CommaText);
> WriteLn('impl=' + ImplFiles.CommaText);
> finally
> CodeToolBoss.DeactivateWriteLock;
> Buffer.Free;
> end;
> finally
> Cache.Free;
> IntfFiles.Free;
> ImplFiles.Free;
> end;
> end.
>
> It does what I need but it fails because it couldn't find some units. How do I
> tell CodeToolBoss where to find them?
See the codetools example finddeclaration.lpi.
BTW:
CodeToolBos already creates a code cache and many functions expect, that you only use that one.
To load a file, use Buffer:=CodeToolBoss.LoadFile.
And the ActivateWriteLock is only needed, when doing multiple searches.
Mattias
More information about the fpc-devel
mailing list