创建仓库

This commit is contained in:
2025-12-11 07:24:36 +08:00
commit 0d81c1792d
128 changed files with 15104 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
---
tags: []
date created: 星期三, 十一月 19日 2025, 7:50:36 晚上
date modified: 星期三, 十一月 19日 2025, 7:51:09 晚上
---
# 1.4.5 产物输出与安装规则 (Artifact Output & Installation Rules)
**审计综述**
项目采用了\*\*“集中式输出”**策略,极大地方便了开发阶段的调试与运行。然而,主构建脚本**完全缺失了安装规则 (`install`)\*\*,这意味着无法通过 `make install` 将产物打包或部署到系统目录当前仅限于在构建目录Build Tree内运行。
**1. 输出目录布局 (Output Directory Layout)**
- **关键性****P1**
- **策略解析**
- **集中管理**:通过设置 `CMAKE_RUNTIME_OUTPUT_DIRECTORY` 等变量,强制将所有生成物归档到 `${CMAKE_BINARY_DIR}/bin``${CMAKE_BINARY_DIR}/lib`
- **优势**
- 避免了编译产物散落在源码目录深处In-source build pollution
- 简化了 `RPATH` 的管理,因为所有库都在同一个相对路径下。
- 方便了 `numactl` 等工具的调用路径书写(如 1.3.3 中所示)。
- **探测依据**
```cmake
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
```
**2. 安装规则状态 (Installation Rule Status)**
- **关键性****P2 (Missing)**
- **策略解析**
- **现状**`grep "install("` 显示主项目(`app` 和 `signal_lib`**未定义任何安装规则**。仅有的安装指令来自第三方依赖GTest和 SDK 内部文件。
- **影响**:运行 `make install` 将不会复制雷达主程序或库文件。对于目前的 Demo / 原型开发阶段,这是可接受的。
- **改进建议**:若项目进入生产交付阶段,必须补充 `install(TARGETS main_app DESTINATION bin)` 等指令以便生成发布包RPM/DEB
- **探测依据**
```bash
grep -r "install(" …
# (无主项目相关输出)
```
**3. 调试符号与剥离策略 (Debug Symbol Strategy)**
- **关键性****P2**
- **策略解析**
- **物理状态**`file` 命令显示 `not stripped`说明符号表Symbol Table保留可支持 `nm` 或 `gdb` 查看函数名堆栈。
- **调试信息**`readelf` 未找到 `.debug` 段。这是因为当前处于 **Release** 模式(`-O3 -DNDEBUG`),编译器默认不生成 DWARF 源码级调试信息。
- **结论**:这是标准的 Release 构建产物,兼顾了性能(优化开启)和基础可维护性(崩溃时能看到函数名)。
- **探测依据**
```bash
file …/main_app
… not stripped
```
-----
### 1.4 章节最终总结:构建系统与工程配置
至此,我们完成了对 **1.4 构建系统** 的全方位审计。我们确立了该项目的\*\*“构建基线”\*\*
1. **核心**CMake 4.1 + Unix Makefiles。
2. **编排****Host(GCC) + Device(Clang) 显式分离**,禁用原生 CUDA 语言支持。
3. **标志**:适配了 CoreX SDK 的 `-x ivcore` 方言,但缺少 Host 端的架构优化 (`-march=armv8-a`)。
4. **布局**:产物集中输出到 `build/bin`RPATH 自动注入,安装规则待补。