首页 > 解决方案 > 从 makefile 运行 python 脚本并将 python 脚本的输出返回到 makefile 中的变量

问题描述

很有可能从嵌入在 makefile 中的目标中的规则运行 python 脚本(以便对 mkaefile 组件的输出进行后处理)。但是是否可以将 python 脚本中的一些值返回给 makefile 并将其分配给 makefile 中的一些变量。

所以我认为它可以通过两种方式完成:过程1:1.从makefile调用python脚本2.允许python脚本将输出存储在某个已知文件3.从makefile中读取值并将其分配给其中的变量

我已经尝试过这种方法并且已经能够执行 Step1 和 Step2 但无法执行 Step 3。

过程 2: 1. 从 makefile 调用 python 脚本 2. 让 python 脚本返回一些值,该值被分配给 makefile 中的变量

我无法尝试,因为我找不到任何示例

----------------- makefile----------------
help:  detect_term_type

file := term_type
TERM_TYPE := $(cat ${file})

detect_term_type:
    python configure_things.py



-------configure_things.py-----
import platform

class TerminalType:

    def __init__(self):
        self.find_terminal_name()

    def find_terminal_name(self):
        f= open("term_type","w+")
        f.write(platform.system())
        f.write('\n')
        f.close()

我希望将可能是“Linux”或“Cygwin”的python脚本的输出分配给makefile变量TERM_TYPE。

标签: makefilegnu-make

解决方案


很有可能从嵌入在 makefile 中的目标中的规则运行 python 脚本(以便对 mkaefile 组件的输出进行后处理)。但是是否可以将 python 脚本中的一些值返回给 makefile 并将其分配给 makefile 中的一些变量。

POSIX 规范make没有定义任何用于此目的的功能。但是,如果您碰巧特别依赖 GNU make,它有一个$(shell)功能可以达到目的:

TERM_TYPE := $(shell python figure_it_out.py)

在任何情况下,您都不能通过构建一个文件然后将其读回来做到这一点,因为变量在构建任何东西之前就获得了它们的值。


推荐阅读