Является ли QT DEFINES тем же, что и #define в С++?

Что делает DEFINES += includthisvariable в QT для файла .pro?

Если он работает как #define в С++, где includethisvariable определено так, что препроцессор может заменить includethisvariable на значение I, установленное?

Я понимаю, что #define делает в С++, потому что вы устанавливаете значение рядом с тем, что вы определяете. Однако здесь кажется, что вы просто перечислили имя... Документы QT не помогли объяснить это для меня.

Ответ 1

Элементы в файле DEFINES файла проекта Qt заканчиваются в командной строке компилятора с опцией -D (или что-то, что подходит для используемого компилятора). Чтобы дать вашему определению макроса значение вместо простого его определения, используйте следующее:

DEFINES += FOOBAR=foobar_value

Это будет отображаться в командной строке компилятора как -DFOOBAR=foobar_value

Если вам нужны пробелы, вам нужно указать значение - и избежать кавычек, которые будут переданы в командной строке компилятора:

DEFINES += FOOBAR="\"foobar value\""

Это отображается как: -DFOOBAR="foobar value"

Ответ 2

Да, он работает одинаково. DEFINES += includethisvariable включает в себя препроцессорный символ includethisvariable в скомпилированных источниках.

Это означает, что любые операторы #ifdef типа

#ifdef includethisvariable
...
...
#endif

включены в скомпилированный источник.

Макросы со значениями также могут быть определены

`DEFINES += "MAXBUFFERSIZE=4096"

Ответ 3

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

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

#define NAME value