基于python的构建系统,具有类似makefile的体验

HXMK的Python项目详细描述


HXMK(Hexcell品牌)

pypi>githubpypi-python version

hxmk是hexcell项目的基于python的构建系统。它将类似makefile的体验带到熟悉而简单的环境中。

最棒的是:它有漂亮的颜色

colors2colors

安装

pip install HXMK

依赖关系:

手册(最新版本)
$ git clone https://github.com/Hexcell/HXMK.git
$ cd HXMK

$ pip install .

用法

如果项目目录包含一个hxmk.py文件,则可以执行

hxmk [args|rules]

参数的指定类似于name=value和规则的指定,如name

hxmk abc=123 somerule

如果没有给出规则,hxmk将查找规则@everything并执行它(如果它存在的话)。 默认情况下无需指定参数或规则。

hxmk # <- this is completely valid

hxmk也可用于清除目录。

hxmk clean [args|rules]

这将查找一个.clean文件,该文件在每一行上都包含一个glob模式。

.clean文件示例:

bin
obj
*.o
__pycache__

clean作为一条规则(尽管它不是实际的规则),因此如果没有像这样明确地声明,规则@所有的内容都不会运行:

hxmk clean everything # will clean and THEN run @everything

hxmk.py

规则

最简单的规则如下:

@rule()defeverything(c):pass

c是类的一个实例,用于执行命令。为此,它会重载lshift运算符。

pip install HXMK
0

规则可以有依赖关系。它们是通过返回注释给出的。a规则依赖项在它之前执行。

pip install HXMK
1

列表或元组中提供了多个依赖项,无论您喜欢哪个。

pip install HXMK
2

规则有触发器,它表示是否和何时执行规则。如果未指定触发器,则触发器始终将设置为

例如,要在缺少至少一个文件夹binobj时执行规则,可以执行以下操作:

pip install HXMK
3

到目前为止实现了以下触发器:

  • 始终,始终执行规则。这是一个布尔。
  • 依赖项,如果执行了一个或多个依赖项,则执行它。这是一个布尔。
  • 未找到,在未找到指定路径(文件或文件夹)时执行。它可以是str列表元组
  • 已更改,缓存文件或文件列表。在缓存中找不到任何指定的文件或文件已更改时执行。它可以是str列表或元组

如果给定了未找到的规范,则规则将假定您将创建规范路径化。如果在执行规则后找不到该路径,将显示警告。

缓存规则的示例:

pip install HXMK
4

如果a.cppb.cpp已更改,或未找到程序时,将执行上述规则。 不过,对于这种特殊情况,建议使用模式规则。

模式规则

模式规则是对多个文件执行多次的规则。 它们看起来像这样:

pip install HXMK
5

(模式的语法为src->;dest) 这基本上意味着src中的每个.c文件都将变成obj中的.o文件。 将对每个.c文件执行模式规则。 这可用于编译目录中的每个.c文件。

pip install HXMK
6

模式规则可以有多个源和目标。在这种情况下,参数srcdest是列表。

pip install HXMK
7

模式规则被缓存。 在执行之前,模式规则检查自上次生成以来源文件是否已被修改,以及目标文件是否已存在。如果目标文件不存在,则执行该规则,否则仅当源文件被修改或未在缓存中找到时才执行该规则。

内置设备

所有内置设备都可以立即使用,无需导入任何内容。

品牌
pip install HXMK
8

make将在另一个文件夹中启动hxmk。可选地,可以将参数(从cli args的意义上说)传递到args

默认情况下,根模块中的所有变量在make调用的每个模块中都是可读的。通过将isolate设置为true

pip install HXMK
9
$ git clone https://github.com/Hexcell/HXMK.git
$ cd HXMK

$ pip install .
0
$ git clone https://github.com/Hexcell/HXMK.git
$ cd HXMK

$ pip install .
1
默认值
$ git clone https://github.com/Hexcell/HXMK.git
$ cd HXMK

$ pip install .
2

default用于从cli中选择一个值,或者在找不到另一个值时将其默认为另一个值。第一个参数是名称,第二个参数是默认值。 例如:

$ git clone https://github.com/Hexcell/HXMK.git
$ cd HXMK

$ pip install .
3
$ git clone https://github.com/Hexcell/HXMK.git
$ cd HXMK

$ pip install .
4
作为参数
$ git clone https://github.com/Hexcell/HXMK.git
$ cd HXMK

$ pip install .
5

as_args用于将列表用作cli参数。第一个参数是list、tuple或dict,关键字参数是prefixsuffix

示例用例如下:

$ git clone https://github.com/Hexcell/HXMK.git
$ cd HXMK

$ pip install .
6

传入dict将为每个项目返回"key=value"

$ git clone https://github.com/Hexcell/HXMK.git
$ cd HXMK

$ pip install .
7

当传入dict时,不能使用前缀和后缀参数。

全球
$ git clone https://github.com/Hexcell/HXMK.git
$ cd HXMK

$ pip install .
8

glob只是pythons标准库中的glob函数。有关详细信息,请查看其上的pythons文档

它可以与as_args结合使用来链接所有对象文件。

$ git clone https://github.com/Hexcell/HXMK.git
$ cd HXMK

$ pip install .
9

目标

主要目标是创建一个简单的构建,其功能与make相同(+more),同时保持可读性和合理性。

目前,hxmk运行得很好,但是已经并且很可能会有很多api更改。如果您发现错误,请毫不犹豫地创建一个问题。

待办事项

  • [X]规则
  • [X]模式eules
  • [X]参数解析
  • [X]生成子目录
  • [X]清洁
  • []为每个函数添加docstring和注释
  • []完整的API文档
  • []更好的跨平台支持/更多内置(mkdir,…)
  • []使用各种python版本进行深入的兼容性测试

贡献

欢迎任何形式的贡献^^

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
传递Java处理类类型参数的方式的参数   java安卓中间层admob在logcat中导致大量GC_FOR_ALLOC释放消息   java Vert。x Http请求未将参数分配为配置   java中多线程的输出不正确   如何减少java本地线程的冗余   java不完全分块结果   使用OpenCv时java中的Mat数据类型不受支持错误   Java中的正则表达式不工作,而同一正则表达式在shell中工作   java如何从数组中删除元素?   JDBCJava。sql。SQLException:[Microsoft][ODBC Microsoft Access驱动程序]操作必须使用可更新的查询   java如何以对角线打印字符串变量的字符?   SonarQube 5.2的java自定义插件生成NoClassDefFoundError   macos使用Java应用程序打开浏览器选项卡