我正在尝试获取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)传递到代码段的最后一行。
请告知。
答案 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))