Допустим, у меня есть приложение Qt, в котором у меня есть два класса с одинаковыми именами в двух разных пространствах имен:
namespace namespace1
{
class SomeClass;
}
namespace namespace2
{
class SomeClass;
}
, и у меня есть структура каталогов проекта в соответствии с этим:
-->src/
-->namespace1/
-->someclass.cpp
-->namespace2/
-->someclass.cpp
Когда я компилирую приложение с помощью qmake, оно помещает все файлы объектов (.o) в один каталог - поэтому сначала создается файл someclass.o , а затем перезаписывается со вторым someclass.o - это конфликт имен, так что это плохо.
Почему qmake не учитывает структуру каталогов исходных файлов и почему он не создает что-то вроде namespace1_someclass.o и namespace2_someclass.o ?
Да, я могу поместить свои классы в один каталог и присвоить им имена namespace1_someclass.cpp и namespace2_someclass.cpp и не будет никаких конфликтов имен, но это вызывает небольшие неудобства при просмотре исходных файлов в проводнике проекта в Qt Creator, потому что, когда есть много исходных файловТак как в проекте он гораздо менее читабелен, чем если бы существовала структура каталогов , которую я могу развернуть или свернуть.
Еще одна крайность - иметь такую структуру каталогов:
-->src/
-->namespace1/
-->namespace1_someclass.cpp
-->namespace2/
-->namespace2_someclass.cpp
, который решает конфликт имен, но дублирует избыточно имена пространства имен - и, следовательно, опять менее читаем.
Почему qmake не имеет по крайней мере опцию дляположить объектные файлы в структуру каталогов в соответствии с исходными файлами ?Разве создатели Qt не видят, что это важная особенность?
И еще одна вещь - вы можете порекомендовать мне использовать инструмент cmake вместо qmake , но я вижуиспользование cmake намного намного сложнее , чем qmake, и qmake пока отлично справляется со мной - за исключением размещения объектных файлов.