宏过滤器——一键过滤程序中不满足宏定义的内容,方便统一编程、针对性交付

宏过滤器

macro_filter 是一个命令行工具,用于根据指定的宏条件处理源文件。它可以过滤包含在宏指令中的代码段,并在考虑指定配置的情况下复制文件或目录。

获取链接 Github Gitee (含工具和源码)

特性

  • 根据宏条件过滤和处理源文件 (#if, #else if, #elif, #else, #endif)。
  • 复制整个文件和目录。
  • 支持自定义文件类型和排除目录。

配置

创建一个配置文件(例如,macro_filter_config.ini),以指定要处理的文件类型和要排除的目录。配置文件应具有以下格式:

check_file_format: .c
check_file_format: .h
exclude_dir: folder_b
exclude_dir: folder_a_a
exclude_dir: /path/to/exclude

使用方法

运行 macro_filter 工具,请使用以下命令:

./macro_filter <dest_dir> <src_dir> <macro_name> <macro_branch> [<config_file>]
<dest_dir>:保存处理后文件的目标目录。
<src_dir>:包含要处理文件的源目录。
<macro_name>:要评估的宏名称(例如,BOARD)。
<macro_branch>:要评估的宏分支(例如,BOARD_A)。
<config_file>:配置文件的路径。非必须,没有设置时,默认检测文件格式为.c和.h。

示例

./macro_filter ./example/proj_src example/proj_dst BOARD BOARD_A ./example/proj_src/macro_filter_config.ini

限制

  • 仅支持单一条件:该工具仅支持单一宏条件,如 #if BOARD == BOARD_A。它不支持复合条件(例如,#if BOARD == BOARD_A && FEATURE_ENABLED)。
  • 不支持括号:不支持宏名称或值带有括号的条件(例如,#if (BOARD) == (BOARD_A))。
  • 宏名称和分支格式:该工具假定条件评估的格式为 <macro_name> == <macro_branch>,不支持变体或复杂表达式。

错误处理

该工具能处理常见错误,如文件未找到、权限被拒绝和无效输入。请确保提供的路径是正确且可访问的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值