Qmake в режиме выпуска и отладки

У меня есть библиотека, и я хотел бы, чтобы она копировала себя в каталог в зависимости от того, в какой конфигурации я нахожусь (отладка или выпуск). Вот мой файл проекта.

#-------------------------------------------------
#
# Project created by QtCreator 2011-08-13T12:48:33
#
#-------------------------------------------------

TARGET = JECLibrary
TEMPLATE = lib

DEFINES += JECLIBRARY_LIBRARY

SOURCES += \
    JECMessageText.cpp \
    JECMessageCombo.cpp \
    JECButton.cpp

HEADERS +=\
        JECLibrary_global.h \
    JECMessageText.h \
    JECMessageCombo.h \
    JECButton.h

CONFIG(debug, debug|release)
{
    DLLDESTDIR += $$quote(../../../Jane/Jane/Build/debug)
    message("Copying to Jane Debug Directory.")
}
CONFIG(release, debug|release)
{
    DLLDESTDIR += $$quote(../../../Jane/Jane/Build/release)
    message("Copying to Jane Release Directory.")
}

FORMS += \
    JECMessageText.ui \
    JECMessageCombo.ui

По какой-то причине DLL отладки или выпуска копируются в оба каталога, а не только в один. Поэтому, если я работаю в режиме выпуска, я получаю DLL выпуска как в каталоге отладки, так и в каталоге выпуска.

Я совершенно запуталась. Может кто-нибудь пролить свет на это? Спасибо


person jecjackal    schedule 18.08.2011    source источник


Ответы (1)


Открывающая скобка должна находиться на той же строке, что и условие:

CONFIG(debug, debug|release) {
    DLLDESTDIR += $$quote(../../../Jane/Jane/Build/debug)
    message("Copying to Jane Debug Directory.")
}
CONFIG(release, debug|release) {
    DLLDESTDIR += $$quote(../../../Jane/Jane/Build/release)
    message("Copying to Jane Release Directory.")
}

or

CONFIG(debug, debug|release) {
    DLLDESTDIR += $$quote(../../../Jane/Jane/Build/debug)
    message("Copying to Jane Debug Directory.")
} else {
    DLLDESTDIR += $$quote(../../../Jane/Jane/Build/release)
    message("Copying to Jane Release Directory.")
}

Но оба сообщения будут отображаться, потому что файлы Makefile.Debug и Makefile.Release создаются при запуске qmake (в Windows или при добавлении debug_and_release в переменную CONFIG в других ОС).

person alexisdm    schedule 18.08.2011
comment
да, но результирующая dll или exe (в зависимости от того, какой проект я запускаю) будет выпускаться или отлаживаться в зависимости от того, в каком режиме он находится. Поэтому, если я запустил его в отладке, exe в папке выпуска будет отладочной версией. Как мне это остановить? Также я попробовал метод else, и QMake выдал мне ошибку. TY за ответ. - person jecjackal; 20.08.2011
comment
Я исправил первый блок, и оба метода работают правильно (каждый сгенерированный файл Makefile содержит правильный путь). Какую ошибку вам выдал qmake? - person alexisdm; 20.08.2011