我正在尝试在 Python 中构建一个小型构建系统,为我的 C++ 项目生成 Ninja 文件。它的行为应该类似于 CMake;也就是说,一个bldfile.py
脚本定义了规则和目标,并通过调用可选地递归到一个或多个目录中bld.subdir()
。每个bldfile.py
脚本都有一个对应的bld.File
对象。执行bldfile.py
脚本时,bld
应将全局预定义为该文件的bld.File
实例,但仅在该模块的范围内。
此外,我想以某种方式利用 Python 的字节码缓存,但.pyc
文件应该存储在构建输出目录中,而不是脚本__pycache__
旁边的目录中。bldfile.py
我知道我应该使用importlib
(需要 Python 3.4+ 就可以了),但我不确定如何:
- 使用自定义全局变量加载并执行模块文件。
- 重用字节码缓存基础设施。
任何帮助将不胜感激!