Создайте дубликаты символов для двух классов с одинаковыми именами в разных пространствах имен. - PullRequest
3 голосов
/ 03 февраля 2012

У меня есть 2 класса с одним и тем же именем, но в разных пространствах имен.Я не могу изменить название этих классов или файлов.Проблема в том, что qmake генерирует Makefile с удаленной информацией о папке.Таким образом, он создает цели OBJECTS с плоскими именами файлов.

Makefile, сгенерированный qmake:

SOURCES       = ../quml/src/lang/Type_.cpp \
    ...
    ../quml/src/uml/Type_.cpp \
    ...

OBJECTS       = Type_.o \
    ...
    Type_.o \
    ...

Как видите, в очень разных папках находятся 2 файла .cpp.Предполагается, что это позже объединит оба объекта в один исполняемый файл.Он пытается это сделать, но дважды берет один и тот же файл, производит дубликаты символов и не хватает других, потому что Type_.o создается только из одного из файлов .cpp (последний выигрывает).По сути, это означает, что я никогда не смогу иметь 2 исходных файла с одинаковым именем в разных папках, примененных к одной и той же цели.

Кто-нибудь знает, как мне решить эту проблему?Могут ли здесь помочь какие-нибудь трюки с про / при или субдиректором?

1 Ответ

1 голос
/ 03 февраля 2012

Лучшее решение, которое я нашел для этой проблемы, - это попытаться создать файлы .pro (или простой Makefile) для каждой папки и скомпилировать их как статические библиотеки или просто изменить их имена.

...