Предполагая, что вы пытаетесь сделать это из контекста рецепта, вам нужно будет сделать это следующим образом:
define INSTALL_SCRIPT
set SRC_DIR=$(ROOT)\\src & \
cd %SRC_DIR% & \
%SRC_DIR%\\stage.bat
endef
sometarget:
@$(INSTALL_SCRIPT)
Вам нужно \
в конце каждой строки, чтобы соединить их водна строка рецепта (в противном случае переменная, которую вы установите, выйдет из контекста, когда завершится оболочка первой строки рецепта).Вы, кажется, используете окна, поэтому я считаю, что вам нужно использовать синтаксис %varname%
для ссылки на переменные.Обратите внимание, что $(ROOT)
является переменной makefile в этом случае, поэтому она все еще использует синтаксис $
.(Обратите внимание, что если бы вы были в bash, вам нужно было бы использовать $$
для ссылки на переменные оболочки).Вам также нужно удвоить \\
в именах каталогов, так как make будет интерпретировать первый слэш как escape, а затем передать одиночный слеш cmd.
Обратите внимание, что на моем компьютере с Windows не было установлено makeна этом, поэтому я не мог проверить выше, так что вполне возможно, что я что-то пропустил.