一个Raylib的函数、宏的重命名工具,告别与windows.h的冲突
raylib_lex_renamer_tool
一个小型C++17实用程序,用于使用词法分析器(基于标记的重写)为 raylib 标识符添加前缀/重命名。
核心行为:
仅重写标识符(例如,
CloseWindow→RL_CloseWindow)不修改注释、字符串字面量、字符字面量或C++ 原始字符串中的匹配项。
可以通过词法解析raylib头文件来构建符号列表(无需正则表达式)
当您想要避免名称冲突(例如 Windows SDK / 其他库)而又不想修补系统头文件时,这非常有用。
建造
cmake -S . -B build
cmake --build build --config Release输出:build/raylib_renamer
用法
1 从 raylib 中提取 + 重写项目(复制到输出)
./build/raylib_renamer \
--root path/to/your/project \
--out path/to/rewritten_project \
--raylib-src path/to/raylib/repo_or_src \
--using-expand-headers \
--api-define RLAPI,RMAPI \
--prefix RL_2 原地重写
./build/raylib_renamer \
--root path/to/your/project \
--in-place \
--raylib-src path/to/raylib/repo_or_src \
--using-expand-headers \
--api-define RLAPI,RMAPI \
--prefix RL_3 导出符号表
仅列出姓名:
./build/raylib_renamer \
--root path/to/your/project \
--out rewritten \
--raylib-src path/to/raylib/repo_or_src \
--using-expand-headers \
--dump-symbols symbols.txt更丰富的符号数据库(TSV:包含函数类型和元数提示):
./build/raylib_renamer \
--root path/to/your/project \
--out rewritten \
--raylib-src path/to/raylib/repo_or_src \
--using-expand-headers \
--dump-symbols-db symbols.db.tsv
If you want to keep the symbol baseline strictly limited to the public header only, use
`--raylib-src ... --strict-public-api` together with `--raylib-h`.您可以稍后重复使用该数据库:
./build/raylib_renamer \
--root path/to/your/project \
--out rewritten \
--symbols-db symbols.db.tsv4 消费者模式(推荐用于类似 JackalClient 的项目)
消费者模式增加了安全启发式规则:
跳过预处理器指令内的标识符(除非已启用)
跳过
obj.Member,,合格obj->Member的Type::Member出现通过启发式方法检测每个文件中的隐藏(本地定义)名称并跳过它们。
对于函数,仅当它看起来像一个函数调用时才进行替换
Name(...),并且(如果可用)会根据 raylib 签名提示检查参数数量。如果某个事件看起来可疑,默认设置为不替换。
./build/raylib_renamer \
--root path/to/JackalClient \
--out JackalClient_renamed \
--symbols-db symbols.db.tsv \
--consumer-mode \
--export-consumer-context jc_context.json如果你真的想替换掉哪怕是可疑的事件:
./build/raylib_renamer ... --consumer-mode --consumer-force5 排除目录
./build/raylib_renamer \
--root path/to/your/project \
--out rewritten \
--symbols-db symbols.db.tsv \
--exclude-dir external,build,.git笔记
Windows
cmd.exe引用陷阱:避免在带引号的路径末尾添加反斜杠\。请使用"C:\\path\\to\\dir\n(不带尾部反斜杠),或"...\\dir\\."\n。预处理器运算符
defined(...)永远不会被重写。--with-macros/--with-enum-values默认是关闭的,因为重命名这些选项可能会破坏构建标志或代码假设。这是原RLRenamer的文档。
致谢
ta的组织 JackalClient
评论交流
欢迎留下你的想法