Que fait le DEFINES += includthisvariable
dans QT pour un fichier .pro
?
Si cela fonctionne comme le #define
en C++, où est-ce que includethisvariable
est défini de sorte que le préprocesseur puisse remplacer includethisvariable
par la valeur que j'ai définie?
Je comprends ce que #define
fait en c ++ parce que vous définissez la valeur en regard de ce que vous définissez. Cependant, ici, il semble que vous n'indiquiez qu'un nom ... La documentation QT n'a pas aidé à expliquer cela pour moi.
Les éléments de la variable DEFINES
du fichier de projet Qt se retrouvent sur la ligne de commande du compilateur avec l'option -D
(ou ce qui convient pour le compilateur utilisé). Pour donner une valeur à votre définition de macro au lieu de simplement la définir, utilisez ce qui suit:
DEFINES += FOOBAR=foobar_value
Cela apparaîtra sur la ligne de commande du compilateur sous la forme -DFOOBAR=foobar_value
Si vous avez besoin d'espaces, vous devez citer la valeur - et échapper aux guillemets qui seront transmis sur la ligne de commande du compilateur:
DEFINES += FOOBAR="\"foobar value\""
Celui-ci apparaît comme suit: -DFOOBAR="foobar value"
Oui cela fonctionne de la même manière. DEFINES += includethisvariable
inclut le symbole pré-processeur includethisvariable
dans les sources en cours de compilation.
Cela signifie que toutes les déclarations #ifdef telles que
#ifdef includethisvariable
...
...
#endif
sont inclus dans la source en cours de compilation.
Des macros avec des valeurs peuvent également être définies
`DEFINES += "MAXBUFFERSIZE=4096"
De la documentation :
Les définitions sont spécifiées dans le fichier .config. Le fichier .config est un fichier C++ Normal, ajouté à tous vos fichiers source lorsqu'ils sont Analysés. Utilisez uniquement le fichier .config pour ajouter des lignes comme dans l'exemple Ci-dessous:
#define NAME value
Si vous souhaitez définir une macro d'un littéral chaîne dans votre fichier qmake, équivalent à #define VAR "Some string"
Ça va ressembler à ça:
DEFINES += CODE_WORKING_DIR=\\\"$$PWD\\\"
Ainsi, cela produirait cela comme argument de g ++ (ou de tout ce que vous utilisez pour compiler):
g++ -c -DCODE_WORKING_DIR=\"/path/to/my/code\"
C'est moche. Si quelqu'un connaît un meilleur moyen, s'il vous plaît faites le moi savoir.