在特定目录中运行的可执行Makefile

问题描述 投票:0回答:1

我想实现的目标

  • 使用shebang制作makefile可执行文件
  • 预先将其切换到某个目录,因此可以从任何地方调用它

我有什么

/ docker / images / Makefile(带有可执行标志):

#!/usr/bin/make -f

default: ...
...

我能做

cd /docker/images
./Makefile

但是,我想做些什么

cd /somewhere/else
/docker/images/Makefile

我尝试了什么

man make声明,我可以设置--directoy <dir>参数。但是,shebang #!/usr/bin/make --directory=/docker/images -f无效:

$ cd /somewhere/else
$ /docker/images/Makefile
make: *** =/docker/images -f: Datei oder Verzeichnis nicht gefunden.  Schluss.

(找不到文件或目录)

任何猜测?我正在使用带有GNU Make 4.1的Devuan ASCII]

我看过related thread不能解决我的问题。

linux makefile gnu-make executable gnu
1个回答
0
投票

当我们放#!/usr/bin/make --directory=/docker/images -f

并运行/docker/images/Makefile

相当于运行:

/usr/bin/make "--directory=/docker/images -f" /docker/images/Makefile

一种解决方案是委派给第二行:

#!/home/debian/bin/run_second_line
# /usr/bin/make --directory=/docker/images -f

default: ...
...

在/ home / debian / bin / run_second_line中:

#!/bin/bash
get_second_line=$(awk 'NR == 2{print}' "$1")
exec bash -c "${get_second_line#?} $1"
© www.soinside.com 2019 - 2024. All rights reserved.