Это из сценария 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. Если кто-нибудь знает, как это сделать, я бы не прочь узнать, как это сделать. Большое спасибо.