【问题标题】:Include multiline python code into a Makefile将多行 python 代码包含到 Makefile 中
【发布时间】:2014-10-31 13:49:02
【问题描述】:

当我在编写 bash 脚本并需要编写特别复杂的逻辑时,我通常会使用 python,如下所示:

#!/bin/bash

function foo() {
    python << END
if 1:
    print "hello"
END
}

foo

如何在 Makefile 中做同样的事情?

【问题讨论】:

  • 只写一个实际的外部脚本?
  • 或者切换到scons,这里不仅允许使用 Python 代码,而且是必需的。
  • 这不是 Makefiles 的用途,包括复杂的程序逻辑。 Make 不是一种程序性语言,而是一种声明性语言。就像 Etan 说的,写一个单独的脚本。

标签: python bash shell makefile


【解决方案1】:

你可以编写一个包含你的函数的 bash 脚本,比如myscript.sh:

#!/bin/bash

foo() {
    python << END
if 1:
    print "hello $1"
END
}

现在这里是Makefile

SHELL = /bin/bash

mytarget ::
    @source myscript.sh ;\
    foo world

最后在终端输入:

$ make mytarget
hello world

关于Makefile的一些解释:定义SHELLmake知道运行哪个shell。 :: 代表虚假目标(还有更多);您可以将其替换为 : 以获得实际目标。

关键是运行source并在同一个shell中调用函数,即在同一行(因为make每行运行不同的shell);这是由每行末尾的;\ 实现的。

【讨论】:

    猜你喜欢
    • 2021-05-10
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多