| fix: 修复opgen使用已存在目录时重复添加add_subdirectory的问题
Co-authored-by: songkai111<songkai16@huawei.com>
# message auto-generated for no-merge-commit merge:
!2824 merge master into master
fix: 修复opgen使用已存在目录时重复添加add_subdirectory的问题
Created-by: songkai111
Commit-by: songkai111
Merged-by: cann-robot
Description: ## 描述
修复 opgen_standalone.py 中 _update_cmake_chain() 方法在检查子目录是否已被包含时的逻辑缺陷。
### 改动原因
当使用已存在的算子工程目录执行 opgen 生成新算子时,_update_cmake_chain() 仅检查父目录 CMakeLists.txt 主文件中是否已存在 add_subdirectory(child) 的调用,但未检查通过 include() 引入的外部 CMake 文件中是否已通过 OPS_CATEGORY_LIST 变量包含了该子目录。这导致在已存在目录下生成算子时,会重复添加 add_subdirectory 条目。
### 改动方法
在原有的 add_subdirectory 正则匹配之后,增加对 include() 引入的外部 CMake 文件的检查逻辑:
1. 解析 CMakeLists.txt 中所有 include() 指令引用的外部文件路径
2. 读取这些外部文件内容
3. 在主文件和所有外部文件中搜索 set(OPS_CATEGORY_LIST ...) 变量定义
4. 检查目标子目录名是否已包含在 OPS_CATEGORY_LIST 的值中
5. 如果已包含,则标记 already_included = True,跳过添加 add_subdirectory
### 影响范围
仅影响 scripts/opgen/opgen_standalone.py,涉及 _update_cmake_chain() 方法中的已存在目录检查逻辑。
## 关联的Issue
- #1599
## 测试
在已存在的算子工程目录下执行 opgen 生成新算子,验证不再出现重复的 add_subdirectory 条目。
## 文档更新
无
## 类型标签
- [x] Bug修复
- [ ] 新特性
- [ ] 性能优化
- [ ] 文档更新
- [ ] 其他,请描述:
See merge request: cann/ops-math!2824 | 13 天前 |