Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: sergek от Январь 15, 2021, 16:18



Название: [Решено] multiple definition
Отправлено: sergek от Январь 15, 2021, 16:18
Коллеги, прошу прощения, если вопрос из первого класса.
Для сборки я использую pro-файл, qmake, маке. Проекты однотипные, связаны с мониторингом оборудования, различаются аппаратными особенностями (интерфейсами, протоколами и т.д.). Года 4 назад я сделал так: в pro-файл включил модули ядра программы, основные интерфейсы и т.д., а модули, связанные с конкретным оборудованием разделил на pri-файлы, примерно так:
Код:
INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD
DEFINES += UNIT_PROJECT1

HEADERS += $$PWD/csensors.h
HEADERS += $$PWD/cmcdspi.h
...
SOURCES += $$PWD/csensors.cpp
SOURCES += $$PWD/cmcdspi.cpp
...
В проекте включаю этот файл
Код:
include($$ROOT_DIR/units/modules.pri)
А сейчас появилась необходимость объединить несколько проектов в один. Хотелось бы просто включить несколько pri, но в них встречаются одни и те же модули и при сборке получаю ошибки multiple definition of `CSensors::CSensors(int, int, int, QString, int)'... /units/csensors.cpp:9: first defined here ...
Как бы вы посоветовали избежать этого?
Отказываться от pri не хочется, т.к. разнообразие поддерживаемых аппаратных модулей уже сейчас сносит крышу, а так я хоть вижу, где какая начинка стоит.


Название: Re: multiple definition
Отправлено: kambala от Январь 15, 2021, 16:32
можно попробовать использовать оператор *= — добавит файл в список только если его там еще нет


Название: Re: multiple definition
Отправлено: sergek от Январь 15, 2021, 19:09
Подозревал, что все элементарно.  Сработало, спасибо!