make:尝试将git_commit_id传递给make_file

时间:2019-02-26 23:00:45

标签: git shell makefile

我正在尝试获取git commit id并将其作为命令行值传递给脚本,该命令行值传递给我在cpp中编译的文件。为此,我编写了以下内容作为其makefile的片段。

%.cool_stuff:  %.c cool_stuff.cpp 
    $(CXX) $(OPT) cool_stuff.cpp -include $< -o $@ -l sqlite3 
    git_commit_id=$(shell $$(git rev-parse HEAD))
    ./$@ 1 $(git_commit_id)

问题是,当我运行代码时,输​​出的一部分包含以下语句:

  

/ bin / sh:1:cdc8bdff6ccbc9dd14da68343fe4809f02cbe07e:找不到

,以便最终不会将$(git_commit_id)传递到代码段的最后一行。

请告知。

2 个答案:

答案 0 :(得分:3)

Wayayyyyy解释器调用太多层。试试

%.cool_stuff:  %.c cool_stuff.cpp 
    $(CXX) $(OPT) cool_stuff.cpp -include $< -o $@ -l sqlite3
    git_commit_id=`git rev-parse HEAD`; \
    ./$@ 1 $$git_commit_id

(编辑:注释中的更正;还:请注意,降价格式会占用制表符,在不用前导制表符替换前导空格的情况下,请不要进行c&p)。

答案 1 :(得分:0)

在对eval的调用中环绕$(shell..)命令,如下所示

$(eval git_commit_id=$(shell git rev-parse HEAD))