QMake — как добавить и использовать переменную в файл .pro

#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.0

3. @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