• Category Archives Qt
  • Tato rubrika se zabývá věcmi kolem psaní software používajícím Qt, tvořenými zejména v C++.

  • QMake DEFINES

    Posted on by myrmica

    Pokud potřebujeme výsledek provedení shellového příkazu do definice pak:

    Buď použijte $$system(). Toto je spuštěno při každém provádění qmake:

    DEFINES += GIT_VERSION=$$system(git describe --always)

    NEbo použijte $() pokud to chcete spustit při každém BUILDu (to je při provádění makefile).

    Pro DEFINES je nutno uzavřít příkaz do apostrofů (to je první vrstva úniku), zejména obsahuje-li mezary, jinak qmake vloží nechtěné -D:

    DEFINES += GIT_VERSION='$(shell git describe --always)'

    To to pak zkopíruje doslova do makefile.

    Pokud výstup příkazu obsahuje mezery, je potřeba další vrstva úniku – uvozovky (tentokrát pro make):

    DEFINES += BUILD_DATE='"$(shell date)"'

    Potřebujete-li uvozovky kolem hodnoty, pak je to pořeba provést obdobně jako v níže uvedeném příkazu. No zrovna hezké to není.

    DEFINES += BUILD_DATE='"\\\"$(shell date)\\\""'

    Mnozí doporučují použít stringfy provoz preprocesoru, v tomto případě:

    #define _STR(x) #x
    #define STR(X)  _STR(x)

    printf("Toto bylo vytvoreno " STR(BUILD_DATE) "\n");

    Čerpal jsem z fóra stackoverflow..