跳转到主要内容

通用的编译工具包装器

项目描述

canker

CI

canker 是一个通用的编译工具包装器。

用法

$ pip3 install canker
$ eval $(canker-env --guess-wrapped)
$ export CANKER_ACTIONS="Record"
$ export CANKER_ACTION_RECORD="output=/tmp/demo.jsonl"
$ cd /your/project && make
$ cat /tmp/demo.jsonl

目标

  • 包装 CCCXXCPPLDAS
  • 为上述每个工具提供访问风格的API,包括执行前和执行后的操作。
  • 提供一组默认操作。
  • 尽可能地非侵入性。

反目标

  • 使用 LD_PRELOAD 来捕获构建系统中的每个 exec,类似于 Bear
  • 支持 cl.exe
  • 对非 C/C++ 语言的详细支持。

贡献新操作

编写新的canker操作很简单。例如,以下示例在每次调用 ld 之前打印一条消息

# src/canker/actions/printld.py

from canker.action import LDAction


class PrintLD(LDAction):
    def before_run(self, tool):
        print(f"ld was run with: {tool.args}")
# src/canker/actions/__init__.py

# bring PrintLD into canker.actions so that `CANKER_ACTIONS` can find it
from printld import PrintLD  # noqa: F401
$ eval $(canker-env --guess-wrapped)
$ export CANKER_ACTIONS="PrintLD"
$ make

有关更多信息,包括可用的操作类型,请查看canker的 API文档

名称?

我的手机自动更正了 "CMake" 为 "canker"。

Canker与cancer同源,这适用于构建系统和像canker这样的构建系统工具。

项目详情


下载文件

下载您平台所需的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

canker-0.0.12.tar.gz (17.3 kB 查看哈希值)

上传时间

由以下支持