docs(blog): 按博客风格整理三篇技术文档
This commit is contained in:
104
src/programming/backend/c++/01-远程-cpp-项目一键全量构建.md
Normal file
104
src/programming/backend/c++/01-远程-cpp-项目一键全量构建.md
Normal file
@@ -0,0 +1,104 @@
|
||||
---
|
||||
title: 远程 C++ 项目一键全量构建
|
||||
icon: mdi:language-cpp
|
||||
date: 2026-03-09
|
||||
category:
|
||||
- C++
|
||||
- 后端
|
||||
- Linux
|
||||
tag:
|
||||
- C++
|
||||
- 编译
|
||||
- Makefile
|
||||
- SSH
|
||||
---
|
||||
|
||||
这篇文章整理一次远程 C++ 项目编译流程:从 SSH 连接、路径核对,到将全量构建固化为 `build.sh`,把重复手工操作改成一条可复用命令。
|
||||
|
||||
<!-- more -->
|
||||
|
||||
# 远程 C++ 项目一键全量构建
|
||||
|
||||
## 1. 场景信息
|
||||
|
||||
- 目标主机:`10.6.223.0`
|
||||
- 项目根目录:`/home/sunri/PRS-7950/V1.00_2024`
|
||||
- C++ 源码目录:`/home/sunri/PRS-7950/V1.00_2024/src_cxx`
|
||||
|
||||
## 2. 先确认连接与路径
|
||||
|
||||
先验证 SSH 连通性:
|
||||
|
||||
```bash
|
||||
ssh 10.6.223.0
|
||||
```
|
||||
|
||||
连接后可用 `hostname` 确认机器身份。
|
||||
|
||||
这次排查中,一个关键点是目录名确认:
|
||||
|
||||
- 错误路径:`/home/sunri/PRS-7950/V1.00_2024/src_cx`
|
||||
- 正确路径:`/home/sunri/PRS-7950/V1.00_2024/src_cxx`
|
||||
|
||||
编译前先核对路径,通常比盲目调整编译参数更有效。
|
||||
|
||||
## 3. 执行增量编译
|
||||
|
||||
在源码目录执行:
|
||||
|
||||
```bash
|
||||
make -j"$(nproc)"
|
||||
```
|
||||
|
||||
说明:
|
||||
|
||||
- `-j"$(nproc)"` 表示按 CPU 核心数并行编译
|
||||
- 若出现 `Nothing to be done for 'first'`,通常表示该目标已是最新状态(增量构建正常现象)
|
||||
|
||||
## 4. 固化为一键全量构建脚本
|
||||
|
||||
在 `src_cxx` 下创建 `build.sh`:
|
||||
|
||||
```bash
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
echo "[build] Cleaning project..."
|
||||
make clean
|
||||
|
||||
echo "[build] Building project (full rebuild)..."
|
||||
make -j"$(nproc)"
|
||||
|
||||
echo "[build] Done."
|
||||
```
|
||||
|
||||
赋予执行权限:
|
||||
|
||||
```bash
|
||||
chmod +x build.sh
|
||||
```
|
||||
|
||||
## 5. 日常使用方式
|
||||
|
||||
```bash
|
||||
cd /home/sunri/PRS-7950/V1.00_2024/src_cxx
|
||||
./build.sh
|
||||
```
|
||||
|
||||
脚本固定执行两步:
|
||||
|
||||
1. `make clean`
|
||||
2. `make -j"$(nproc)"`
|
||||
|
||||
## 6. 小结
|
||||
|
||||
这套流程的核心不是命令复杂度,而是标准化:
|
||||
|
||||
- 先确认路径和环境
|
||||
- 再把全量构建流程脚本化
|
||||
|
||||
后续交付或排障时,只需要统一执行 `./build.sh` 即可降低沟通与操作成本。
|
||||
Reference in New Issue
Block a user