我有一个简单的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吗?
答案 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
。规则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'。