I know, but it seemed hard to fix I also have shared units no part of components in that directory. I started trying to split it up but gave up.
Don't give up. You can also make 2 packages.
- One contains components and is installed in Lazarus IDE.
- Other contains utility code needed by applications and maybe by components, which both then have a dependency for it.
They can be in one directory but more logical would be to place them in different directories.
Your problems may be caused by circular "spaghetti" dependencies. Everything depends on everything else. Do yourself a favor and clean it. Use abstract base classes etc. to break dependencies.
About "Additions and Overrides":
The settings there are passed to all dependent packages by default. It is also possible to pass specific settings to a specific package but I have never done it myself.
Packages are always rebuilt automatically when the flags change. You don't need to care about it once the configuration is right.
This can be seen also with LCL and other packages used by the IDE. If you build Lazarus, LCL is built with it. If you then build your application with different flags, LCL is built again. It always goes right. Don't worry.