The best practice is: publish this external part, dll, lib, framework, etc..., somewhere and use the "compiled" in quotation marks because it is not necessarily a compiled object; in its code.
For example: You are developing software in modules, and make a framework that will be consumed in modules. The idea is to reuse code, but referencing the code directly in each module will recompile the entire tree, while publishing the object, for example, on a Nuget server, you will control the version in the compiled object and consume in your code. In the next module you will consume the same version, it is not necessary to recompilate this part of the code.
If your code does not need to be compiled, publishing to a package server will help maintain references correctly, being versioned and distributed from a central point.
Maybe you wanted something like this: https://git-scm.com/docs/git-submodule ?
– Otávio