Russian Qt Forum
Апрель 24, 2024, 12:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено] multiple definition  (Прочитано 2416 раз)
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 870


Мы должны приносить пользу людям.


Просмотр профиля
« : Январь 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 не хочется, т.к. разнообразие поддерживаемых аппаратных модулей уже сейчас сносит крышу, а так я хоть вижу, где какая начинка стоит.
« Последнее редактирование: Январь 15, 2021, 19:09 от sergek » Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #1 : Январь 15, 2021, 16:32 »

можно попробовать использовать оператор *= — добавит файл в список только если его там еще нет
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 870


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #2 : Январь 15, 2021, 19:09 »

Подозревал, что все элементарно.  Сработало, спасибо!
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 22.