Подтвердить что ты не робот

Добавьте определение к qmake С значением?

Как добавить определение с помощью qmake С значением:

Например, это не работает (как я и ожидал) в моем файле .pro:

DEFINES += WINVER 0x0500

ни

DEFINES += "WINVER 0x0500"

Как определить WINVER как 0x0500, прежде чем что-либо начнет компиляцию, чтобы его определение никак не повлияло на компиляцию или включение порядка?

4b9b3361

Ответ 1

DEFINES += "WINVER=0x0500" работает для меня.

Таким образом, -DWINVER=0x0500 добавляется в командную строку компилятора, который является синтаксисом GCC/mingw, ожидающим определения препроцессора командной строки (см. здесь для деталей).

Ответ 2

DEFINES += MY_DEF=\\\"String\\\"

Этот формат должен использоваться, когда предполагается, что макрос заменен строковым элементом

Ответ 3

В качестве дополнения, если вы хотите выполнить код оболочки вместо установки константы (например, для получения номера версии или даты):

Используйте $$system(). Это выполняется при выполнении qmake:

DEFINES += GIT_VERSION=$$system(git describe --always)

Или используйте $(), если код должен быть запущен для каждой сборки (т.е. когда make файл выполняется). Для DEFINES вам нужно избежать команды, если она содержит пробелы, иначе qmake вставляет нежелательные -D 's:

DEFINES += GIT_VERSION='$(shell git describe --always)'

Это будет скопировано буквально в make файл.

Если выход команды содержит пробелы, вам нужен еще один уровень спуска (на этот раз для make):

DEFINES += BUILD_DATE='"$(shell date)"'

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

DEFINES += BUILD_DATE='"\\\"$(shell date)\\\""'

Я бы рекомендовал использовать препроцессоры в этом случае:

#define _STR(x) #x
#define STR(X)  _STR(x)

printf("this was built on " STR(BUILD_DATE) "\n");

Ответ 4

Ответ Greg отлично работает в файле .pro. Однако при вызове qmake из командной строки мне пришлось оставить пробелы, т.е. Использовать sth. как показано ниже, для выполнения задания:

qmake DEFINES+="WINVER 0x0500"