[英]c makefile with shell commands and variables
這是我用來構建程序的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更改為makefile:
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"
我似乎無法正確獲取shell變量。 我認為它是因為它們最終成為Makefile vars。 如果有人知道怎么做,我不介意知道如何做。 非常感謝。
請記住,每個命令都在自己的shell中運行,因此在第三個和第四個命令中將取消設置dateString和revision。
所以你在每一行的末尾都使用分號和反斜杠來使它成為一個命令。 你還需要使用$$來引用shell的$。
或者不使用中間變量,那么你不需要它就是一個命令。 像這樣的東西:
version.h:
echo \#define VERSION_DATE \"$$(date +%Y/%m/%d\ %H:%M:%S)\" > version.h.tmp
echo \#define VERSION_REVISION \"$$(svn info | grep Revision | tr -d [:alpha:]:)\" >> version.h.tmp
mv version.h.tmp version.h
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.