QMake. Legendary scope switch CONFIG(debug, debug|release)



  • Hy,

    I and many other developers came to this point, when project debug and release versions must have some different config. In QMake docs everything seems very easy ... just use "debug { ... }" or "release { ... }" and you have what you want, but that that's not so easy if one is using QtCreator.

    For half of day I was searching for normal explanation in the internet what a heck these parameters mean in the config function: "CONFIG (debug, debug|release)" or "CONFIG (release, debug|release)". There is some info in QMake docs but it does not make much sense for me. What exactly the second parameters does??



  • Here's a little test .pro:
    @CONFIG(debug) {
    message(debug)
    }
    CONFIG(release) {
    message(release)
    }
    CONFIG(debug, debug|release) {
    message("debug, debug|release")
    }
    CONFIG(release, debug|release) {
    message("release, debug|release")
    }
    @

    With the outputs:
    @$ qmake
    Project MESSAGE: debug
    Project MESSAGE: release
    Project MESSAGE: debug, debug|release

    $ qmake CONFIG-=release CONFIG+=debug
    Project MESSAGE: debug
    Project MESSAGE: debug, debug|release

    $ qmake CONFIG-=release CONFIG-=debug

    $ qmake CONFIG+=release CONFIG-=debug
    Project MESSAGE: release
    Project MESSAGE: release, debug|release
    @
    The second parameter seems to be which configuration options to check for. If I change the last check into
    @CONFIG(release, debug|unrelease) {
    message("release, debug|release")
    }@

    @$ qmake CONFIG+= release CONFIG-=debug
    Project MESSAGE: release
    @

    If I change the check into
    @CONFIG(release, release) {
    message("release, debug|release")
    }@

    I get
    @$ qmake CONFIG+=release CONFIG+=debug
    Project MESSAGE: debug
    Project MESSAGE: release
    Project MESSAGE: debug, debug|release
    Project MESSAGE: release, debug|release
    @

    Besides specifying the items to check for, some seem to take precedence. I'm not all too sure how this is determined. Anyway, I hope this at least clarifies something.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.