Потратил полдня, пока нащупал как можно пользоваться 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 синтаксисом обращения к значению переменной.