| Unified compilation project
Co-authored-by: tangqunzhang<tangqunzhang@huawei.com>
# message auto-generated for no-merge-commit merge:
!833 merge develop into develop
Unified compilation project
Created-by: tangqunzhang
Commit-by: tangqunzhang
Merged-by: cann-robot
Description:
# Pull Request
## 描述
问题/功能描述
本次PR是一个综合性的代码优化与重构集合,主要围绕三个核心目标展开。首先,对CMake构建系统进行了大规模标准化和优化,旨在提升构建配置的集中管理能力、灵活性和可维护性,包括统一编译/链接选项、重构库依赖、增强测试构建支持(如ASAN/GCOV)以及新增目标克隆功能。其次,对多个C++单例类(如AclResourceManager、ModelSaveHelperFactory、GlobalProfilingWrapper、KernelBinRegistry等)的实现进行了重构,将内联定义从头文件移至源文件,以消除潜在的链接期多重定义风险和静态初始化顺序问题,提升代码健壮性。最后,修复了多个明确的编码缺陷,包括空指针解引用、内存管理错误、测试环境隔离问题以及单元测试逻辑错误,增强了代码的稳定性和测试的可靠性。
修改方案描述
修改方案主要包括三个方面。在构建系统层面,将大量硬编码的编译和链接选项(如-Werror、-O2)替换为统一的CMake变量(如${AIR_COMMON_COMPILE_OPTION}、${AIR_COMMON_LINK_OPTION}),重构了UDF、部署器等模块的构建流程以使用预编译静态库,并新增了条件化的ASAN支持和测试环境变量管理。在代码结构层面,将十余个工厂类、管理器类和工具类(如AclResourceManager::GetInstance()、UdfModelBuilder::GetInstance()等)的单例方法实现从头文件内联定义移至对应的.cc源文件中,遵循了声明与实现分离的最佳实践。在缺陷修复层面,修复了DataSliceAdapter::GetTensorStr中的空指针解引用、FftsPlusArgsHelper::AppendIoAddrs中的日志打印空指针风险、单元测试中的内存释放顺序错误、环境变量(LD_PRELOAD)干扰以及多个测试用例的逻辑和数据错误,并补充了必要的桩函数实现。
## 变更类型
请选择本次引入的变更类型:
<!-- [x] 表示选中 -->
- [ ] 🐛 Bug 修复
- [ ] ✨ 新功能
- [ ] 💄 代码风格更新(格式化,局部变量)
- [x] ♻️ 重构(既不修复错误也不增加功能的代码变动)
- [ ] 📦 构建过程或辅助工具的变动
- [ ] 📝 文档内容更新
## 关联的Issue
<!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 -->
## 如何测试
描述测试此变更的步骤和前提条件:
1.修改编译选项和UT,ST,原有用例可以执行通过就可以
## 核对清单
<!-- [x] 表示选中 -->
- [x] 我的代码遵循了项目的代码风格
- [x] 我已对代码进行了自测
- [ ] 我已更新了相关的文档
- [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:)
- [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等
## 其他信息
在此添加任何其他关于本次 PR 的说明。
See merge request: cann/ge!833 | 2 个月前 |