[Lazarus] How to find out why a unit is used in a project?
R.Smith
ryansmithhe at gmail.com
Thu Sep 24 12:19:26 CEST 2020
On 2020/09/24 11:04, Sven Barth via lazarus wrote:
> Bo Berglund via lazarus <lazarus at lists.lazarus-ide.org
> <mailto:lazarus at lists.lazarus-ide.org>> schrieb am Do., 24. Sep. 2020,
> 08:08:
>
>
> >If course there is. That's how the unit system is supposed to
> work after
> >all.
> >
> Yes, I realize that now.
>
> It means that the client even though it will not interface to the
> hardware will have all of the code used to do that included in the
> app, right?
>
>
> The compiler (and linker) only includes code that is used. Thus as
> long as you don't call the hardware functions anywhere in your program
> (this includes indirectly or through initialization/finalization
> sections) then the code won't be in the final binary either.
>
> Regards,
> Sven
Sven, I believe Bo's problem is that even though he won't need the Code
(which the linker/compiler will surely cleverly disregard), he also do
not even wish to "need" the physical Unit files to be in view of the
compiler - at least not the secondary-dependency units - when he
references a unit file in which he only needs a few declarations visible.
Sadly Bo, the entire premise of the Unit system is that every dependency
will be in view, the compiler cannot decide BEFORE compiling that it
would or wouldn't need a unit which appears in a "unit" clause lower
down the dependency tree. Consider that a used unit may well declare a
global variable that overrides one from a higher-up unit, for instance.
So even though the program has all the participating symbols at hand
without looking at this depended unit with the override, it will produce
a different program (than when that override IS considered) and so
cannot simply decide to ignore/not require a unit preemptively before
actually parsing the physical file.
All units you use, pluse every dependent unit they use, must be
available and visible to the compiler. That rule is absolute.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20200924/a387b8bb/attachment.html>
More information about the lazarus
mailing list