Files
Inbox/系统基座文件/1/1.4/1.4.5 产物输出与安装规则 (Artifact Output & Installation Rules).md
2025-12-11 07:24:36 +08:00

65 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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 自动注入,安装规则待补。