У меня есть make-файл, который огромен и довольно сложен. Поэтому я хотел разделить это. Разделяясь, я столкнулся с интересной проблемой.
Предположим, у меня есть некоторые пользовательские функции в некотором make-файле, т.е. tools.mk
, compile.mk
и test.mk
tools.mk
выглядит как
define clean
rm -rf some_folder
endef
compile.mk
выглядит как
define generate_binaries
...
creates some executables
...
endef
test.mk
выглядит как
define run_test
/bin/sh runtest.sh
endef
Теперь мой Makefile
берет все эти пользовательские функции и выполняет некоторую работу. Похоже
include tools.mk
include compile.mk
include test.mk
.PHONY: build
build:
$(call clean)
$(call run_test)
$(call generate_binaries)
Здесь возникает проблема. Теперь я не знаю, в каком файле определена функция очистки. Таким образом, отладка будет проблемой, если сложность и масштаб возрастут. Вместо этого я хочу что-то вроде этого
include tools.mk as tools
include compile.mk as compile
include test.mk as test
.PHONY: build
build:
$(call tools.clean)
$(call test.run_test)
$(call compile.generate_binaries)
Может кто-нибудь сказать мне, как этого добиться? Заранее спасибо:)