如何在Doxygen与PlantUML之间共享变量?
实现Doxygen与PlantUML变量共享(避免重复定义)
针对Doxygen 1.10.0版本,完全可以实现变量在.dox文件和内嵌PlantUML代码中共享,无需重复在Doxyfile和.pu文件中定义变量。以下是三种实用方案:
方案一:直接利用Doxygen别名替换PlantUML变量
- 在
Doxyfile中仅定义一次变量别名:ALIASES += CommInterface="I2C" - 在
.dox文件的PlantUML代码块中,通过Doxygen替换将别名值注入PlantUML变量:@startuml # Doxygen会先替换\CommInterface为实际值,再传递给PlantUML !$CommInterface = "\CommInterface" # 直接使用变量 note left: 当前通信接口:$CommInterface @enduml - 在
.dox的普通文本中依然用\CommInterface调用变量,保持原有用法不变。
方案二:封装通用别名实现批量变量注入
如果需要共享多个变量,可以封装通用别名简化操作:
- 在
Doxyfile中定义通用PlantUML变量生成别名,同时定义业务变量:# 定义通用别名:pu_var{变量名, 变量值} ALIASES += pu_var{2}="!$\\1 = \"\\2\"" # 仅在此处定义一次业务变量 ALIASES += CommInterface="I2C" ALIASES += BaudRate="100000" # 映射为PlantUML可用的变量别名 ALIASES += pu_CommInterface=pu_var{CommInterface,\CommInterface} ALIASES += pu_BaudRate=pu_var{BaudRate,\BaudRate} - 在
.dox的PlantUML代码中调用映射后的别名:@startuml # 注入所有需要的变量 \pu_CommInterface \pu_BaudRate # 使用变量 note left: 接口:$CommInterface,波特率:$BaudRate @enduml - 普通文本中依然用
\CommInterface、\BaudRate调用变量。
方案三:通过外部共享文件统一管理变量
如果变量较多且需统一维护,可使用外部文本文件存储变量:
- 创建
vars.conf文件:CommInterface=I2C BaudRate=100000 - 在
Doxyfile中通过命令行读取文件内容生成别名:ALIASES += CommInterface=`grep "^CommInterface=" vars.conf | cut -d= -f2` ALIASES += BaudRate=`grep "^BaudRate=" vars.conf | cut -d= -f2` - 在
.dox的PlantUML代码中,读取文件并解析变量:@startuml # 读取外部配置文件并解析变量 !include vars.conf !$CommInterface = %CommInterface% !$BaudRate = %BaudRate% # 使用变量 note left: 接口:$CommInterface,波特率:$BaudRate @enduml
这种方式适合变量频繁变更、需要统一管理的场景。
以上方案均能避免重复定义变量,只需在单一位置维护变量值,即可同步到.dox文本和PlantUML代码中。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

