Почему qmake помещает все объектные (.o) файлы в один каталог?

Допустим, у меня есть приложение 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 пока отлично справляется со своей работой для меня - за исключением размещения объектных файлов.

24
задан Peter Sivák 26 February 2012 в 03:18
поделиться