Я не думаю, что это правило означает то, что вы думаете, оно означает:
$(PROGS) $(EXTRA_PROGS) $(CTF_INTEGRATION_TESTS): $(GO_BIN_BUILD_DEPS)
$(GO_BIN_BUILD)
Во-первых, make расширит все переменные в первой строке (вторая строка - это рецепт, поэтому это не так. расширяется до тех пор, пока make не захочет построить цель).
В результате вы получите что-то вроде этого:
path/to/file/1 path/to/file/2 path/to/file/3 path/to/file/4 a/a.suite b/b.suite : dep1 dep2 dep3
, где a/a.suite
и b/b.suite
- это результаты foreach
функция (не зная значения переменной CTF_DIRS
, я не могу сказать, какими могут быть реальные значения) и dep1
, dep2
, dep3
- результаты выполнения SOME_COMMAND_TO_BUILD_GO_DEPENDENCIES
, которые, как я полагаю,$(shell ...)
command.
Это интерпретируется так, как если бы вы объявили индивидуальные правила для каждого из этих файлов с одинаковым рецептом, вот так:
path/to/file/1 : dep1 dep2 dep3
$(GO_BIN_BUILD)
path/to/file/2 : dep1 dep2 dep3
$(GO_BIN_BUILD)
path/to/file/3 : dep1 dep2 dep3
$(GO_BIN_BUILD)
path/to/file/4 : dep1 dep2 dep3
$(GO_BIN_BUILD)
a/a.suite : dep1 dep2 dep3
$(GO_BIN_BUILD)
b/b.suite : dep1 dep2 dep3
$(GO_BIN_BUILD)