Dans Eclipse, il existe une option pour spécifier des définitions de prétraitement (macros #ifdef) à un projet en utilisant l'option Symboles dans Chemins et symboles. Cela aide à une indexation efficace du code qui est multiplateforme. Existe-t-il une option pour les fournir dans Qt creator?
Depuis Documentation QT :
Les définitions sont spécifiées dans le fichier .config. Le fichier .config est un fichier C++ standard, ajouté à tous vos fichiers source lors de leur analyse. Utilisez uniquement le fichier .config pour ajouter des lignes comme dans l'exemple ci-dessous:
#define NAME value
Autrement dit, si vous importez un projet nommé MyProject, les définitions du pré-processeur doivent être spécifiées dans MyProject.config
Pour mes projets, l'indexeur reconnaît cette définition de l'ensemble du projet et modifie l'auto-complétion pour refléter cela.
Ça dépend:-)
Ce qui suit suppose que vous utilisez des projets basés sur qmake:
Vous pouvez d'abord ajouter DEFINES += SOME_DEFINE=value
dans votre fichier .pro. Cela est récupéré dans le créateur et lors de la construction sur la ligne de commande et devrait également apparaître lors de la création d'un projet MSVC ou XCode à partir du fichier .pro.
Ensuite, vous pouvez ajouter DEFINES += SOME_DEFINE=value
à l'appel qmake que Qt Creator émettra lors de la configuration du projet. Cela se produit dans le mode projet, les paramètres de construction, les étapes QMake.
Enfin, vous pouvez mettre #define SOME_DEFINE
valoriser les privilèges dans un fichier d'en-tête et les inclure. Cela fonctionne pour toutes sortes de projets :-)
Je voulais spécifier une chaîne #define dans le fichier .pro, mais mon code s'est retrouvé avec le contenu de la chaîne sans les guillemets. J'ai dû échapper aux guillemets, puis échapper aux échappées pour obtenir une paire de guillemets pour durer jusqu'à mon code. En effet, qmake supprime un ensemble d'échappements et de guillemets, puis la ligne de commande supprime les autres. Cela a fonctionné pour moi:
DEFINES += "VERSION=\"\\\"0.1.0\\\"\""
Sous Windows, cette chaîne de VERSION peut ensuite être utilisée dans le fichier .rc pour créer les éléments de version là où Windows le souhaite et ainsi que dans le code d'un menu "À propos".
Je pense que les réponses initiales sont bonnes, mais elles nécessitent que vous gériez votre configuration - manuellement alors qu'il existe des moyens de laisser le IDE gérer cela pour vous automatiquement selon que vous avez une configuration release ou debug sélectionnée.
Ce bit peut être redondant, mais veuillez noter que cela fonctionnera pour vous uniquement si vous utilisez le IDE pour la construction. Évidemment, si ce n'est pas le cas, vous aurez besoin d'une solution différente.
Étant donné que les images valent mille mots, voici un exemple de la façon dont vous définissez une macro de débogage pour votre build de débogage à l'aide de Qt Creator 4.3.1:
DEBUG
pour votre #ifdef DEBUG
s dans le code; dans mon cas, c'est __CTS_DEBUG__
)La macro ne sera désormais définie que lorsque vous utilisez votre configuration de débogage; lorsque vous choisissez votre version config (voir l'étape 1), elle ne sera pas définie automatiquement et votre code de débogage compilé conditionnellement sera supprimé, comme indiqué dans le photos ci-dessous, ce qui est exactement ce que vous avez toujours voulu.
Avec la configuration debug sélectionnée
Avec la configuration release sélectionnée:
Vous pouvez définir un PREPROCESSEUR dans les paramètres du projet dans QtCreator. Je n'ai pas QtCreator ici mais je me souviens qu'il y a un onglet pour la configuration du projet.
La première suggestion de la réponse de @Tobias Hunger a fonctionné pour moi. Je faisais cela dans mon fichier .pro:
DEFINE += KEY=value
qui n'a pas fonctionné jusqu'à ce que je le change en:
DEFINES += KEY=value
Cela dit, si vous voulez tout faire depuis la ligne de commande, une solution presque hybride qui n'utilise pas l'interface graphique de Qt Creator, mais utilise des fichiers .pro, est décrite ici:
https://www.linux.org/threads/c-tutorial-create-qt-applications-without-qtcreator.18409/
En utilisant la méthode décrite dans le lien ci-dessus, vous pouvez utiliser qtcreator -project
pour produire un .pro
fichier, puis utilisez notepad
ou vim
ou un autre éditeur de texte pour ajouter le DEFINES += KEY=value
ligne vers le .pro
fichier que vous venez de créer. Utilisez ensuite qmake ainsi: qmake <your_project>.pro
, pour faire le prétraitement Qt, et enfin juste make
pour construire un exécutable.
J'ai également entendu parler d'un qtcreator -D
option pour ajouter des définitions de préprocesseur à partir de la ligne de commande comme décrit ici: https://doc.qt.io/archives/qt-4.8/qmake-variable-reference.html#defines mais je ' Je ne l'ai jamais essayé.
J'espère que quelque chose fonctionne pour vous! Votre dévouement à la CLI est admirable.