当前位置: 首页 > news >正文

极简C++项目工程脚手架:一键生成CMake + Neovim LSP环境(Mac/Linux and Windows)

极简C++项目工程脚手架:一键生成CMake + Neovim LSP环境(Mac/Linux and Windows)

  • 引言
  • 核心痛点与解决
  • 脚本实现
  • 使用演示
  • 尾注

前言

目的:最近在进行InSAR算法的底层优化,技术栈从纯Python扩展到了C++。在学习和开发过程中,每次新建一个测试项目,都需要重新编写 CMakeLists.txt,创建目录结构,最麻烦的是每次都要手动配置 compile_commands.json 才能让 Neovim 的 LSP (Clangd) 正常工作。为了提高效率,拒绝重复造轮子,我编写了一个自动化脚本来解决这套流程。

核心痛点与解决

在 Mac 终端环境下开发 C++,通常会遇到以下几个繁琐的步骤:

  1. 手动 mkdir src include build
  2. 手写 CMakeLists.txt,容易写错语法。
  3. LSP配置问题:默认生成的项目,Neovim 无法识别头文件路径,必须手动执行 cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 并建立软链接。

本文提供的脚本实现了 “一行命令,环境就绪”

脚本实现

第一步:编写 Shell 脚本。我将其命名为 creat_c_project.sh。这个脚本会自动完成目录创建、CMake配置生成以及 LSP 软链接的建立。

#!/bin/bash# =======================================================
# 极简 C++ 项目结构生成脚本
# 功能:目录生成 + 现代CMake配置 + 自动适配Neovim LSP
# =======================================================if [ -z "$1" ]; thenecho "使用方法: $0 <ProjectName>"exit 1
fiPROJECT_NAME=$1
PROJECT_DIR="./$PROJECT_NAME"if [ -d "$PROJECT_DIR" ]; thenecho "错误: 目录 $PROJECT_DIR 已存在。"exit 1
fiecho " 正在创建 C++ 项目: $PROJECT_NAME"# 1. 创建标准目录结构
mkdir -p "$PROJECT_DIR/src"
mkdir -p "$PROJECT_DIR/include"
mkdir -p "$PROJECT_DIR/build"
mkdir -p "$PROJECT_DIR/data"# 2. 生成 .clang-format (统一代码风格)
echo -e '---
BasedOnStyle: LLVM
IndentWidth: 4
...
' > "$PROJECT_DIR/.clang-format"# 3. 生成 CMakeLists.txt (关键配置)
cat << EOF > "$PROJECT_DIR/CMakeLists.txt"
cmake_minimum_required(VERSION 3.10)
project(${PROJECT_NAME} LANGUAGES CXX)set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # 生成 compile_commands.json# 自动扫描 src 下的所有 cpp 文件
file(GLOB_RECURSE SOURCE_FILES CONFIGURE_DEPENDS "src/*.cpp")add_executable(${PROJECT_NAME} \${SOURCE_FILES})
target_include_directories(${PROJECT_NAME} PUBLIC \${CMAKE_SOURCE_DIR}/include)
EOF# 4. 生成 main.cpp
cat << EOF > "$PROJECT_DIR/src/main.cpp"
#include <iostream>int main() {std::cout << "Starting ${PROJECT_NAME}..." << std::endl;return 0;
}
EOF# 5. 自动初始化构建并链接 LSP 配置
echo "⚙️  正在初始化 CMake 环境..."
cd "$PROJECT_DIR/build"
cmake .. > /dev/null 2>&1
cd ..# 建立软链接,让 clangd 能找到配置
if [ -f "build/compile_commands.json" ]; thenln -sf build/compile_commands.json compile_commands.jsonecho "  [LSP 就绪: compile_commands.json 已链接]"
fiecho "✅ 项目 $PROJECT_NAME 已就绪!"

第二步:赋予脚本执行权限。建议将脚本放在环境变量路径下(如 ~/bin 或自定义的工具目录),并在 .zshrc 中配置好 PATH。

chmod +x creat_c_project.sh

使用演示

第三步:在终端直接运行脚本。例如创建一个名为 InSAR_Test 的项目。

./creat_c_project.sh InSAR_Test

Terminal

第四步:效果验证。脚本运行后,目录结构如下所示,且 compile_commands.json 已自动链接到根目录。使用 nvim src/main.cpp 打开文件,代码补全和跳转功能即刻生效,无需任何额外配置

InSAR_Test/
├── CMakeLists.txt
├── build/
├── compile_commands.json -> build/compile_commands.json  <-- 关键!
├── include/
└── src/└── main.cpp

Neovim LSP

尾注

  • 本文脚本适用于 Mac (M芯片/Intel) 及 Linux 环境。Windows 用户建议使用我编写的 Python 版本(自动处理路径分隔符和软链接权限)。
  • 脚本中使用了 GLOB_RECURSE 来管理源文件,适合中小型科研项目或算法验证,大型工程建议显式列出源文件。
  • 本文工具已上传至 GitHub,包含 Shell 和 Python 两个版本,欢迎 Star 和改进:C-Project-Generator。
  • 同时感谢 CMake 官方文档 对配置语法的参考。
http://www.jsqmd.com/news/77172/

相关文章:

  • 【CMake 】CMake 中 add_executable 与 target_sources 详解
  • 虚拟化与容器技术在测试环境构建中的创新实践
  • 【CMake 】CMake 中的 target_include_directories 详解
  • 千兆SFP光模块
  • 2025年度油加工在线分析检测厂家、饲料分析检测供应企业推荐 - mypinpai
  • 2025年度专业强的不锈钢防刮花台面推荐,源头厂家与供应商全 - 工业推荐榜
  • Roslyn 技术解析:如何利用它做代码生成?
  • 2025年中国冷喷烯锌制造企业排名:冷喷烯锌定制生产与防腐底 - myqiye
  • 2025年节能防水插座十大靠谱公司推荐,防水插座批量定制企业 - 工业品牌热点
  • AI学习机品牌排名Top5:实用推荐不容错过! - 百誉集团
  • 不懂英语,真的不能学黑客技术吗?
  • 2025年浙江特斯拉保养维修门店权威推荐榜单:特斯拉专修保养/特斯拉座椅改装/特斯拉改装升级服务门店精选 - 品牌推荐官
  • 【网工必备】手撸了一个 IP 转换工具,IP范围、CIDR、ACL 反掩码一键搞定!
  • 工作后如何进行持续学习
  • 2025年五大高性价比的酒柜设计公司推荐:专业酒柜定制品牌全 - mypinpai
  • 八中上机课练习题单
  • 2003-2021近全球农业气候干旱监测数据集(0.25度/逐月)
  • 私有化部署的企业级安全加密通讯办公平台,即时通讯软件:便捷高效的沟通新选择 - 百誉集团
  • 连续变量处理的因果推断技术突破
  • 常熟市华懋化工设备有限公司的规模怎样?口碑好不好 - myqiye
  • 2025年火锅料品牌大排名,告诉你哪种最好! - 百誉集团
  • 盲盒小程序都是怎么玩的?有是怎么裂变的?
  • 口碑好的仪表品牌推荐排行?仪表品牌 仪表公司 仪表工厂 仪表厂家 仪表厂商 仪表生产厂家
  • 2025年澳标开关品牌企业、澳标开关大型厂家、澳标开关专业品 - 工业品牌热点
  • 2025年中国五大恒温酒窖设计公司推荐:求推荐酒窖设计专业公 - mypinpai
  • 代码之恋(第十篇:失效API与最佳Patch)
  • 深入解析:【Vue】第五篇
  • Android内核高危漏洞:CVE-2025-36922权限提升深度解析
  • 2025反应釜按需定制TOP5实力厂商推荐:甄选品牌厂家助力 - myqiye
  • 6款reMarkable客户端全面评测:告别云同步烦恼的终极方案