Search code examples
qtconfigqmake

Qmake in release and debug mode


I have a library and I would like it to copy itself to a directory depending upon what configuration i'm in (debug or release). Here is my project file.

#-------------------------------------------------
#
# 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

For some reason, the debug or release DLL are copied to both directories instead of just one. So if I run in release mode, I get the release DLL in both the Debug directory and release directory.

I'm totally confused. Could someone shed some light on this? Thanks


Solution

  • The opening brace should be on the same line as the condition:

    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.")
    }
    

    But both messages will be displayed, because the files Makefile.Debug and Makefile.Release are both created when you run qmake (on Windows, or if you add debug_and_release to the CONFIG variable on other OSes).