我有一个 shell 脚本,想将其转换为 makefile,以便可以使用命令“make all”执行它。
我该如何处理这个问题?
谢谢
答案1
您可以创建一个包含以下内容的最小 makefile:
all:
YOUR SHELL COMMANDS HERE
但这样做其实并没有什么好处,除非你重写它来利用 Makefile 的一些特性 - 多个目标、目标依赖等等。参见这里(或许多其他 Makefile 教程)以获取有关如何使用 makefile 的一些信息。
(请注意,shell 命令是sh
针对每一行单独执行的,因此如果你正在执行循环、设置变量等复杂操作,它将不会只是工作,并且命令的缩进需要是TAB字符,而不是空格。)
针对所述情况的快速 Makefile(正常警告,可能有各种边缘情况,可能会杀死你的狗等):
src=$(wildcard pictures/*.jpg)
out=$(subst pictures,thumb,$(src))
all : $(out)
thumb/%.jpg: pictures/%.jpg
convert $< -thumbnail 100 $@
答案2
最好将 shell 脚本分成几个部分。例如,预构建、构建、后构建。几个小任务使测试脚本变得更容易。
clean:
rm -rf build
build:
gcc sample.c
changelog:
git log >> changelog.txt
package: changelog build
zip release.zip a.out changelog.txt
all: clean package
答案3
clean:
@-rm -rf build
@echo removed
build:
gcc sample.c
changelog:
git log >> changelog.txt
package: changelog build
zip release.zip a.out changelog.txt
all: clean package