Это из скрипта bash, который я использовал для сборки программы:
dateString=$(date +%Y/%m/%d\ %H:%M:%S)
revision=(`svn info | grep Revision | tr -d [:alpha:]':'`)
echo "#define VERSION_DATE \"$dateString\"" > version.h
echo "#define VERSION_REVISION \"$revision\"" >> version.h
Я перешел с использования build.sh на make-файл:
version.h:
dateString=$$(date +%Y/%m/%d\ %H:%M:%S)
revision=(`svn info | grep Revision | tr -d [:alpha:]':'`)
echo "#define VERSION_DATE \"$dateString\"" > version.h.tmp
echo "#define VERSION_REVISION \"$revision\"" >> version.h.tmp
mv version.h.tmp version.h
Но файл version.h заканчивается таким образом:
#define VERSION_DATE "\ateString"
#define VERSION_REVISION "\evision"
Кажется, я не могу правильно получить переменные оболочки. Я думаю, потому что они заканчивают тем, что были переменными Makefile. Если кто-нибудь знает, как это сделать, я не возражаю, зная, как. Большое спасибо.