There can be problems when multiple libraries depend on the same library, or the project depends on a library that also other libraries depend on.
Example: libA and libB both depend on libX. Both libA and libB specify a version of libX they require. What if these versions don't match?
Can libA specify: I need libX with version "2.x" or "at least 2.1" or "2.x to 4.x"?
Which version should be selected when there is a choice?
If libA is allowed to only only 1 version of libX, do we need multiple versions of libA for every version of libX even when nothing in libA has to be changed?
This is not bound to source libraries only, but can also hold for binary ones.
There can be problems when multiple libraries depend on the same library, or the project depends on a library that also other libraries depend on.
Example: libA and libB both depend on libX. Both libA and libB specify a version of libX they require. What if these versions don't match?
Can libA specify: I need libX with version "2.x" or "at least 2.1" or "2.x to 4.x"?
Which version should be selected when there is a choice?
If libA is allowed to only only 1 version of libX, do we need multiple versions of libA for every version of libX even when nothing in libA has to be changed?
This is not bound to source libraries only, but can also hold for binary ones.