如何使用 shell 脚本创建 makefile

如何使用 shell 脚本创建 makefile

我有一个 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

相关内容