Car*_*rum 37
就像从makefile中调用任何其他命令一样:
target: prerequisites
shell_script arg1 arg2 arg3
Run Code Online (Sandbox Code Playgroud)
关于你的进一步解释:
.PHONY: do_script
do_script:
shell_script arg1 arg2 arg3
prerequisites: do_script
target: prerequisites
Run Code Online (Sandbox Code Playgroud)
Bro*_*her 13
目前使用 Makefile,我可以轻松地调用 bash 脚本,如下所示:
dump:
./script_dump.sh
Run Code Online (Sandbox Code Playgroud)
并致电:
make dump
Run Code Online (Sandbox Code Playgroud)
这也像其他答案中提到的那样工作:
dump:
$(shell ./script_dump.sh)
Run Code Online (Sandbox Code Playgroud)
但缺点是,除非您将其存储在变量中,否则您无法从控制台获取 shell 命令echo。
big*_*ose 10
makefile规则中的每个操作都是一个将在子shell中执行的命令.您需要确保每个命令都是独立的,因为每个命令都将在一个单独的子shell中运行.
因此,当作者想要在同一个子shell中运行多个命令时,您经常会看到换行符被转义:
targetfoo:
command_the_first foo bar baz
command_the_second wibble wobble warble
command_the_third which is rather too long \
to fit on a single line so \
intervening line breaks are escaped
command_the_fourth spam eggs beans
Run Code Online (Sandbox Code Playgroud)
也许不是像已经提供的答案那样“正确”的方法,但是我遇到了这个问题,因为我希望我的makefile运行我编写的脚本来生成一个头文件,该头文件将提供整个软件包的版本。我在此软件包中有很多目标,并且不想为所有目标添加全新的前提条件。把这个放在我的makefile的开头对我有用
$(shell ./genVer.sh)
Run Code Online (Sandbox Code Playgroud)
它告诉make只需运行一个shell命令。 ./genVer.sh是要运行的脚本的路径(与makefile相同的目录)和名称。无论我指定哪个目标(包括clean,这都是不利因素,但最终对我来说都不是什么大事),这种做法都是可行的。
| 归档时间: |
|
| 查看次数: |
57062 次 |
| 最近记录: |