Как добавить предварительную обработку определений (макросов) в Qt Creator? - PullRequest
32 голосов
/ 06 сентября 2010

В Eclipse есть возможность указать предварительную обработку определений (#ifdef macros) для проекта с помощью опции Symbols в Paths and Symbols.Это помогает в эффективной индексации кода, который является кроссплатформенным.Есть ли возможность предоставить их в Qt creator?

Ответы [ 5 ]

37 голосов
/ 08 сентября 2010

Зависит от: -)

Предполагается, что вы используете проекты на основе qmake:

Сначала вы можете добавить DEFINES += SOME_DEFINE=value в ваш .pro файл. Это обнаруживается внутри создателя и при сборке в командной строке, а также должно отображаться при создании проекта MSVC или XCode из файла .pro.

Затем вы можете добавить DEFINES += SOME_DEFINE=value к вызову qmake, который Qt Creator выдаст при настройке проекта. Это происходит в режиме проекта, настройках сборки, QMake Steps.

Наконец, вы можете поместить значение #define SOME_DEFINE в заголовочный файл и включить его. Это работает для всех видов проектов: -)

17 голосов
/ 28 ноября 2011

Из документации QT :

Определения указаны в файле .config.Файл .config - это обычный файл C ++, добавляемый ко всем вашим исходным файлам при их анализе.Используйте только файл .config для добавления строк, как показано в примере ниже:

#define NAME value

То есть, если вы импортируете проект с именем MyProject, тогда в MyProject должны быть указаны определения препроцессора.config

Для моих проектов это заставляет индексатор распознавать этот проект определения в целом и изменяет автозаполнение, чтобы отразить это.

6 голосов
/ 30 апреля 2016

Я хотел указать строку #define в файле .pro, но мой код заканчивался содержимым строки без кавычек.Я должен был избежать кавычек, а затем избежать побегов, чтобы получить одну пару кавычек, чтобы продлиться весь путь до моего кода.Это связано с тем, что qmake удаляет один набор экранированных символов и несколько кавычек, а командная строка удаляет остальные из них.Это сработало для меня:

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

В Windows эту строку VERSION можно затем использовать в файле .rc для создания версии, в которой ее хочет Windows, а также в коде для меню «О программе»..

2 голосов
/ 22 декабря 2017

Я думаю, что первоначальные ответы хороши, но они требуют, чтобы вы управляли своей конфигурацией вручную , в то время как есть способы позволить IDE управлять этим для вас автоматически в зависимости от того, выбрана конфигурация release или debug .

Этот бит может быть избыточным, но учтите, что он будет работать для вас , только если вы используете IDE для сборки . Очевидно, что если это не так, вам понадобится другое решение.

Steps

Поскольку изображения стоят тысячи слов, вот пример того, как вы определяете макрос отладки для вашей сборки отладки, используя Qt Creator 4.3.1:

  1. Убедитесь, что выбрана конфигурация Debug ;

Run Configurations

  1. Перейти в раздел Проекты в левом меню;
  2. Перейти в Build раздел

image> Build">

  1. В разделе Шаги сборки найдите поле ввода Дополнительные аргументы ;
  2. Введите определения макросов (например, DEBUG для ваших #ifdef DEBUG s в коде; в моем случае это __CTS_DEBUG__)

Additional Arguments

Макрос теперь будет определяться только при использовании вашей конфигурации отладки; когда вы выбираете конфигурацию Release (см. шаг 1), она автоматически становится неопределенной, а ваш условно скомпилированный код отладки будет удален, как показано на рисунках ниже, и это именно то, что вы всегда хотели.

Результаты

При выбранной конфигурации debug

Debug Config

При выбранной конфигурации release :

Release Config

1 голос
/ 06 сентября 2010

Вы можете определить PREPROCESSOR в настройках проекта в QtCreator. У меня нет QtCreator здесь, но я помню, что есть вкладка для конфигурации проекта.

...