MyTetra Share
Делитесь знаниями!
Как в qmake в target.commands пользоваться Bash-переменными
Время создания: 26.03.2026 16:41
Текстовые метки: linux, qt, qt4, qt5, qmake, .commands, bash, шелл, shell, переменная, значение, прописать, $, доллар, экранирование, кастомная, дополнительная, цель, экранирование, синтаксис
Раздел: Компьютер - Программирование - Язык C++ (Си++) - Библиотека Qt - Инсталляция Qt и сборка проектов
Запись: xintrea/mytetra_syncro/master/base/1774532496iypjtk4on5/text.html на raw.githubusercontent.com

Потратил полдня, пока нащупал как можно пользоваться Bash-переменными внутри файла проекта *.pro при написании команд в дополнительных (кастомных) целях.


Часто надо в свойстве цели .commands прописать несколько Bash- команд. Причем необходимо вначале выполнить какую-то Bash-команду и поместить ее результат в переменную, а следом использовать эту перемнную в следующей Bash-команде. Как только попытаться это сделать, то сразу окажется, что никакой синтаксис, описанный в документации Qt, не подходит для работы с Bash-переменными. И в Интернете почему-то нет вообще никакой информации по этой теме.


В общем, не стоит тратить время, вот готовый пример который работает. В нем заполняется Bash-переменная каким-то значением, а затем эта переменная используется:



mytarget.commands = \

VERSION="1.0" ; \

echo Version: "$\$VERSION"

QMAKE_EXTRA_TARGETS += mytarget



Какие здесь есть особенности?


1. Чтобы обе строки (обе команды) выполнялись в одном шелле, надо в конце первой команды ставить точку с запятой ";" и завершать строку обратным слешем "\". Если этого не сделать, тогда каждая строка будет выполнена в отдельном шелле, и переменная из первой строки просто не попадет в команду из второй строки.


2. Когда прописывается Bash-переменная VERSION в первой строке, после нее нельзя ставить пробелы, надо сразу писать знак равно "=" и далее, тоже без пробела, значение. Это особенность Bash, и о ней легко забыть, так как окружающий синтаксис qmake позволяет и приветствует использование пробелов вокруг знака "=" для лучшей читаемости.


3. Чтобы использовать значение переменной, надо соблюдать два правила:


  • имя переменной надо обязательно заключать в двойные кавычки "...";
  • чтобы имя переменной попало в Makefile в виде $VERSION, надо писать $\$VERSION .


Если не соблюсти оба этих правила одновременно, qmake не пропишет в итоговый Makefile имя переменной а сделает на этом месте либо пробел, либо впишет кривую строку, которая не будет являться для Bash синтаксисом обращения к значению переменной.


Так же в этом разделе:
 
MyTetra Share v.0.67
Яндекс индекс цитирования