我知道在创建c / c ++可执行文件的情况下,make仅在更新了依赖文件后才自动执行创建可执行文件的工作。
我一直想知道是否有一种方法可以指定要制作的python脚本的输入和输出文件,从而使make可以根据输入文件的状态发挥作用。
Makefile条目:
update_info:
python update_info.py info.xml
基本上,我想检查一下info.xml的版本。如果尚未更新,则不要让make运行update_info.py脚本。
只是试图找出是否存在现有方法。如果无法做到这一点,我可以接受。
谢谢。
我一直想知道是否有一种方法可以指定输入和要制作的python脚本的输出文件,以便make可以执行魔术取决于输入文件的状态。
当然。从本质上讲,make
是一个非常简单且通用的系统。它定义了一种格式,用于表达构建各种目标的先决条件,并表达用于从其指定的先决条件实际构建这些目标的机器可操作指令。有了这些信息,make
会找出要执行的配方以建立所请求的目标或使其针对其直接和间接依赖关系进行更新的配方(如果有)。
Make
对目标和先决条件的性质一无所知,只不过它们是带有时间戳的文件(或者假定是带有时间戳的文件)。 Make
设计时考虑了构建软件,但确实提供了一些内置规则,这些规则旨在从用几种选择语言编写的源代码构建程序,但这是一个便捷功能,而不是一个限制。
[如果要提供基于另一个名为info.hpp
的文件构建名为info.xml
的文件的权限,则info.hpp
是目标,info.xml
是(a)前提。遵循这些原则的规则将是适当的:
info.hpp: info.xml
python update_info.py info.xml
不过,通常来说,最好避免在配方中重复目标和必备名称。而是使用适当的自动make
变量,例如$^
,它代表先决条件列表的不同元素:
info.hpp: info.xml
python update_info.py $^
在某些情况下,您可能也希望Python脚本成为先决条件,因为对脚本的更改可能导致它从同一输入产生有意义的不同输出。