簡體   English   中英

c makefile with shell命令和變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM