
Ну например:
- Код: Выделить всё
Main.pas
a\Unit1.pas
b\Unit1.pas
При этом a и b будут в списке путей. Компилятор тогда возьмёт первый встретившийся модуль. Таким образом, если Main использует Unit1, то возьмётся aUnit1.pas.

- Код: Выделить всё
Main.pas
a\Unit1.pas
b\Unit1.pas
b\Unit2.pas
Если Unit2 использует Unit1, то всё равно возьмётся a\Unit1.pas, хотя по логике должен наверное взяться модуль, который лежит "ближе", то есть, в той же папке, то есть, b\Unit1.pas. Но это не так, я проверял, будет всё равно браться a\Unit1.pas.

- Код: Выделить всё
a\Unit1 + a\Unit2 -> UnitA
b\Unit1 + b\Unit2 -> UnitB
---
UnitA + UnitB -> Main
не пройдёт, ведь для Main.exe понадобятся и Unit1.o и Unit2.o, из обоих папок, а так быть не может потому, что они затрут друг друга.

Таким образом, если в двух библиотеках будет модуль log, то вместе они не уживутся никак. Даже если log используется библиотекой только внутренне самой библиотекой и не входит в её функциональность. Не поэтому ли во всяких библиотеках в начале модуля приписывают префиксы типа gls для GLScene, fpg для fpgui и проч.


- Код: Выделить всё
GLSceneContainerUnit.pas,
GLSceneAbstractContainerUnit.pas
GLSceneNetworkLogWriterUnit.pas
...
GLSceneAbstractDataBaseConnectionProviderUnit.pas
Так вот: то, что имена модулей длинные сами по себе, это не такая уж и проблема. Проблема в другом: в Windows есть интересное ограничение на максимальную длину пути: 260 символов. И не смотря на то, что в NTFS максимальная длина пути вроде бы 32000, и от ограничения в 260 символов хотели как будто бы уйти, так вот, по факту от него никуда не ушли: оно везде лезет. Можно даже попробовать в Windows 8 создать папку с длиной имени 260 символов, и он не даст. Причём ограничение касается не одного файла, а всего пути. То есть, если будет вот так:
C:\1234.....259\a.txt
То файл a.txt окажется недоступным. То есть, если засунуть свою библиотеку с длинными именами файлов в какую-нибудь "жопу" типа
C:\MountedDrive\Storage\Archive\Programming\FreePascal\Libraries\GLScene\Source\GLSceneAbstractDataBaseConnectionProviderUnit.pas
То если таким образом "переборщить", то будет всё очень плохо

Таким образом, остаётся либо делать короткие имена типа connection.pas и рисковать получить 100500 конфликтов
Либо делать сокращения типа uGLSABDConProv.pas и потом вспоминать что же это значит
Либо делать длинные имена файлов и надеяться что полные пути никогда не вылезут за 260 символов. Либо работать только на линуксе, так как там такого ограничения нет.
Ну и воттттъъъъ........ кто-нибудь может что-нибудь посоветовать
Добавлено спустя 7 минут 9 секунд:
ну или вообще что-нибудь изложить по этому поводу