#qt #qmake
#qt #qmake
Вопрос:
У меня есть файл qmake, созданный Qt creator. Я изменяю его, но мне не удается понять, как создать переменную.
Например, я хочу объявить библиотеку MYPATH, как я сделал здесь:
MYPATH = /lib/aaa/bbb
unix:!macx:!symbian: LIBS = -L$(MYPATH)
Когда я запускаю qmake, я нахожу в сгенерированном файле makefile
LIBS = ....... -L$(MYPATH) .....
Но переменная MYPATH нигде не объявлена.
Кто-нибудь знает, как правильно объявить такую переменную?
Ответ №1:
QMake использует свой собственный синтаксис для ссылок на переменные.
VAR = foobar
=> Присваивать значение переменной при запуске qmake$$VAR
=> Значение переменной QMake во время выполнения qmake$${VAR}
=> Значение переменной QMake во время выполнения qmake (идентично, но заключено отдельно от окружающего текста)$(VAR)
=> Содержимое переменной среды во время выполнения Makefile (не qmake)$$(VAR)
=> Содержимое переменной среды во время выполнения qmake (не Makefile)
Попробуйте сделать это так
MYPATH = /lib/aaa/bbb
unix:!macx:!symbian: LIBS = -L$${MYPATH}
Комментарии:
1. Не забывайте $$(VAR) для содержимого переменной среды во время запуска qnake (не Makefile!)
2. Итак, в чем тонкая разница между
$$VAR
и$${§VAR}
? Я смотрел на каждое объяснение и не могу найти ни единой разницы … o.03. @AdriC.S. Я считаю, что они точно такие же.
$${VAR}
существует для решения таких случаев, какlib$$VERSION.dll
. без помещения переменной в фигурные скобкиlib$${VERSION}.dll
она не будет разрешаться, поскольку за ней не следует пробел или косая черта.4. @ZawLin Спасибо! Я этого не знал.
5. Было бы неплохо, если бы вы добавили, что это на самом деле означает «во время qmake» и «во время makefile». Я сам не знаю, я думал, что мы работаем с qmake и никогда не беспокоимся о makefile.
Ответ №2:
Другой полезный тип переменной: $$[...]
Это означает «параметр конфигурации, который был установлен при создании Qt»
Пример:
message($$[QT_INSTALL_BINS])
Это дает:
C:QtQt5.0.25.0.2msvc2010_openglbin