[fpc-devel] units not getting rebuild after changes in other used ("uses") units
Martin Friebe
fpc at mfriebe.de
Wed Jan 21 12:43:00 CET 2009
Hi,
I encountered a strange problem. I am not yet sure what causes it, but I
have a suspicion. Before I go all the way, of trying to prove the cause,
and report it as a bug, let nme ask here if it may already be a knonw
issue, or maybe is by design.
Normally if I change a unit (e.g. changes to the inteface of "unit
Nested"), and then compile my project, fpc will recompile all other
units that have a "uses Nested;" (new ppu files, new .o files)
In my case for some reason this does not happen, and all I get is an
error from the linker at the very end: "Error: Undefined symbol:
VMT_SYNGUTTER_TSYNEDITMARK"
Btw, anyone, is there a way to make the linker tell me which file is
requiring this symbol?
Anyway, this means some unit was compiled using the other unit declaring
the symbol. Then when the symbol was removed, the unit was not recompiled.
The package containing it was rebuild, so it must have been fpc
believing that the file and all dependencies where unchanged; even so
dependencies had changed)
I have a suspicion why FPC may not see the change in the underlying unit.
- TSYNEDITMARK is defined in "unit SynEditMarks"
- "unit SynEdit" has a forward declaration (in it's interface)
that is "unit SynEdit" uses SynEditMarks, and then has a "type
TSYNEDITMARK = SynEditMarks.TSYNEDITMARK ;"
- Whatever unit causes the error, hust uses "Unit SynEdit", but not
"unit SynEditMarks"
Should such a case be detected?
Best Regards/Thanks
Martin
More information about the fpc-devel
mailing list