通用的编译工具包装器
项目描述
canker
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
目标
- 包装
CC
、CXX
、CPP
、LD
和AS
。 - 为上述每个工具提供访问风格的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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 30af4874dfbf72fd755d44fe28cafb3b70bd2a80db490b43cbf6a6bfa69f2460 |
|
MD5 | bb9ffdadea87d12a3737e4a9f0d56847 |
|
BLAKE2b-256 | f3a37ebf402216845b8309e3fc8c57142908976e95009048b14202328373cdb3 |