Является ли 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