makefile - 从 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。
解决方案
很有可能从嵌入在 makefile 中的目标中的规则运行 python 脚本(以便对 mkaefile 组件的输出进行后处理)。但是是否可以将 python 脚本中的一些值返回给 makefile 并将其分配给 makefile 中的一些变量。
POSIX 规范make
没有定义任何用于此目的的功能。但是,如果您碰巧特别依赖 GNU make
,它有一个$(shell)
功能可以达到目的:
TERM_TYPE := $(shell python figure_it_out.py)
在任何情况下,您都不能通过构建一个文件然后将其读回来做到这一点,因为变量在构建任何东西之前就获得了它们的值。
推荐阅读
- haskell - 为什么我不能以交互方式运行 main?
- snowflake-cloud-data-platform - 在雪花存储过程中处理geojson数据
- python - 从数组中挑选元素
- python - 环境和虚拟环境有什么区别?
- elasticsearch - 如何使用多行将文本日志文件导入 Elasticsearch 本地安装
- redux - 我的 redux 状态发生了变化,但视图没有
- c# - NET 5 中的 RemotingServices 和 GC
- python - 使用 python 扩展 gdb:ModuleNotFoundError
- node.js - AWS Lambda node.js 'ping' 模块权限错误
- php - intercom-php API - 使用电子邮件创建对话返回 400 错误请求