make: пытается передать git_commit_id переменной в make_file - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь получить идентификатор коммита git и передать его скрипту в качестве значения командной строки в файл, который я скомпилировал в cpp.С этой целью я написал следующий отсканированный это мой make-файл.

%.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 голосов
/ 27 февраля 2019

Waayyyyy слишком много уровней вызова интерпретатора.Попробуйте

%.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, не заменяя начальные пробелы ведущими вкладками).

0 голосов
/ 27 февраля 2019

Окружите команду $(shell..) при вызове eval, как показано ниже

$(eval git_commit_id=$(shell git rev-parse HEAD)) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...