2010-09-06 12 views

Répondre

11

De l'QT Documentation:

Les définit sont spécifiées dans le fichier .config. Le fichier .config est un fichier C++ , ajouté à tous vos fichiers sources lorsqu'ils sont analysés. Utilisez uniquement le fichier .config pour ajouter des lignes comme dans l'exemple ci-dessous :

#define NAME value 

C'est, si vous importez un projet MyProject, puis les définitions pré-processeur doivent être spécifiées dans MyProject.config

Pour mes projets, l'indexeur reconnaît ce paramètre de définition de projet et modifie l'auto-complétion pour refléter cela.

+0

Je n'ai pas essayé ça. Je ne travaille plus en Qt. Mais je pense que d'après votre réponse, cela pourrait être juste. Donc, l'accepter dès maintenant pour les autres utilisent. – Bharathwaaj

+3

Cela fonctionne, et est correct. –

+1

Cela fonctionne quand je fais comme le disent les docs et "Utilisez uniquement le fichier .config pour ajouter des lignes comme dans l'exemple ci-dessous". J'espérais que "le fichier .config est un fichier C++ normal" signifiait que je pouvais aussi utiliser # ifdef/# else/# endif, mais donnait des résultats bizarres. Est-ce censé fonctionner? – anr78

1

Vous pouvez définir un PREPROCESSOR 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.

+0

Je ne pouvais pas trouver un tel cadre dans le Projet Config uration. – Bharathwaaj

+0

Le nom de l'onglet est "Projets", Vous pouvez personnaliser la compilation ici en ajoutant votre préprocesseur définir –

+0

Je n'utilise pas qt créateur pour la compilation. Je l'utilise pour l'indexation. – Bharathwaaj

35

Cela dépend :-)

Ce qui suit est en supposant que vous utilisez des projets basés qmake:

D'abord, vous pouvez ajouter DEFINES += SOME_DEFINE=value dans votre fichier .pro. Cela est repris 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 lancera lors de la configuration du projet. Cela se produit dans le mode Project, Build Settings, QMake Steps. Enfin, vous pouvez mettre #define SOME_DEFINE valeur de privilèges dans un fichier d'en-tête et l'inclure. Cela fonctionne pour tous les types de projets :-)

+1

Non, je n'utilise pas qtcreator pour la construction. Je ne le voulais que pour son indexation puissante. – Bharathwaaj

+0

Et mon projet n'est pas basé sur qmake. – Bharathwaaj

+12

+1 Cela n'aide pas l'affiche originale, mais c'est le hit de "qtcreator définit" sur google et beaucoup d'entre nous utilisent qmake et construisent dans qtcreator. Merci! – sage

4

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 citations, puis échapper aux évasions pour obtenir une paire de citations pour durer jusqu'à mon code. C'est parce que qmake supprime un ensemble d'évasions et quelques citations, puis la ligne de commande enlève le reste d'entre eux. Cela a fonctionné pour moi:

DEFINES += "VERSION=\"\\\"0.1.0\\\"\"" 

Sous Windows, cette chaîne de version peut ensuite être utilisé dans le fichier .rc pour créer la substance de la version sur laquelle Windows veut et ainsi que dans le code pour un menu « A propos ».

+1

J'ai eu un problème similaire. En bash sur la ligne de commande, cela a fonctionné pour moi: 'qmake DEFINES + =" BUILD_DATE = '\' \ "Août 17, 2016 \" \ '' "' – cgmb

2

Je pense que les premières réponses sont bonnes, mais ils exigent que vous gérez votre configuration manuellement alors il sont les moyens de laisser l'IDE gérer pour vous automatiquement selon que vous avez un version ou debug configuration sélectionnée.

Ce bit peut être redondant, mais veuillez noter que cela fonctionnera pour vous seulement si vous utilisez l'EDI pour construire.Évidemment, si ce n'est pas le cas, vous aurez besoin d'une solution différente.

étapes

Depuis les images valent mille mots, voici un exemple de la façon dont vous définissez une macro de débogage pour votre version de débogage en utilisant Qt Creator 4.3.1:

  1. Assurez-vous que vous avez votre Déboguer configuration sélectionnée;

Run Configurations

  1. Aller à la section Projets dans le menu à gauche;
  2. Aller à la Construire section

Projects >> Build

  1. Sous Étapes de constructions, recherchez les arguments supplémentaires boîte d'entrée;
  2. Entrez vos définitions de macros (par exemple DEBUG pour vos #ifdef DEBUG s dans le code, dans mon cas, il est __CTS_DEBUG__)

Additional Arguments

La macro sera défini maintenant que lorsque vous utilisez votre config de débogage ; Lorsque vous choisissez votre config config (voir l'étape 1), il deviendra indéfini automatiquement et votre code de débogage conditionnellement compilé sera supprimé, comme le montrent les images ci-dessous, ce qui est exactement ce que vous avez toujours voulu.

Résultats

Avec le debug config sélectionnés

Debug Config

Avec le version config choisie:

Release Config

+1

c'est génial! Merci! – KGCybeX