如何将bash脚本执行到makefile中

时间:2019-04-16 07:03:38

标签: bash makefile

我有一个简单的bash脚本,用于安装和压缩NodeJS应用程序。这在当地很棒。现在,我想从Makefile执行此脚本。所以我写了这段代码

.FOO: install_and_zip
    install_and_zip: ./install_and_zip_foo.sh

因此,如果我使用make foo运行此Makefile,则会收到此错误消息:

make: *** No rule to make target `foo'.  Stop.

Makefile和bash脚本位于同一目录中。

我做错了什么?您能帮我修复此Makefile吗?

2 个答案:

答案 0 :(得分:3)

不同的错误。这将起作用:

foo:    install_and_zip
install_and_zip:
# next line must start with a real TAB (ASCII 9)
    ./install_and_zip_foo.sh
  • 如果您想制作foo,则调用规则foo,而不是FOO.FOO
  • 代码始终低于规则。所有命令行必须以真实的TAB(ASCII 9,但不能为一系列空格)开头。

规则foo调用规则install_and_zip。这是你的愿望吗?否则,它也会这样做:

foo:
# next line must start with a real TAB (ASCII 9)
    ./install_and_zip_foo.sh

答案 1 :(得分:1)

您应该按照定义的那样编写“ make .FOO”。但是,您必须正确地编写Makefile(选项卡标识等)。如果这样做,您只需编写“ make”,该工具就会将“ install_and_zip”标识为主要目标,从而执行脚本。

PD:定位目标以“。”开头。 (并且没有斜杠)在尝试确定主要目标时将被make忽略(即它们不会仅执行“ make”而运行)。因此,除非您知道自己在做什么,否则只需将目标重命名为'foo'。