Соединение с lib отладки/выпуска с qmake/Qt Создателем

Подход модуля работает хорошо. Если мне абсолютно нужен одиночный элемент, я предпочитаю подход Метакласса.

class Singleton(type):
    def __init__(cls, name, bases, dict):
        super(Singleton, cls).__init__(name, bases, dict)
        cls.instance = None 

    def __call__(cls,*args,**kw):
        if cls.instance is None:
            cls.instance = super(Singleton, cls).__call__(*args, **kw)
        return cls.instance

class MyClass(object):
    __metaclass__ = Singleton
25
задан Rob 15 July 2009 в 08:26
поделиться

2 ответа

В файле проекта вы можете сделать что-то вроде этого

debug {
    LIBS += -L./libfolder -lmydebuglib.lib
}

release {
    LIBS += -L./libfolder -lmyreleaselib.lib
}

Бит внутри скобок отладки используется, если DEBUG был добавлен в переменную CONFIG qmake, аналогично то, что внутри скобок выпуска включено если RELEASE был добавлен в переменную CONFIG.

Вы также можете использовать "! debug" вместо "release" (т.е. когда отладка отсутствует в конфигурации)

Вы можете найти больше информации о qmake здесь .

25
ответ дан 28 November 2019 в 18:10
поделиться

Обычное

debug:LIBS += ...
else:LIBS += ...

решение ломается, когда пользователи наивно используют CONFIG + = debug или CONFIG + = release для переключения между отладочной и выпускной сборками ( и они это делают; никто не забыл сказать CONFIG - = release release_and_debug до CONFIG + = debug :).

Это канонический способ определения области видимости для debug :

CONFIG( debug, debug|release ) {
    # debug
    QMAKE_LIBDIR += "path/to/debug/lib"
} else {
    # release
    QMAKE_LIBDIR += "path/to/release/lib"
}

Ср. документы qmake .

РЕДАКТИРОВАТЬ 2013-11-17 : Не используйте -Lfoo в LIBS . Канонический способ - добавить пути (без -L ) в QMAKE_LIBDIR .

44
ответ дан 28 November 2019 в 18:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: