首先,做c++的东西,最好用cmake, 类似java里的maven,
先有一个cmake的项目模板
结构如下

cmake-template/
├── CMakeLists.txt          # CMake 构建配置
├── .clangd                 # clangd 配置(推荐用 clangd 替代默认 IntelliSense)
├── .gitignore
├── .vscode/
│   ├── c_cpp_properties.json   # C/C++ 扩展配置
│   └── settings.json           # 工作区设置
└── src/
    └── main.cpp            # 入口文件

CMakeLists.txt

cmake_minimum_required(VERSION 3.16)
project(my_project
    VERSION 1.0.0
    LANGUAGES CXX
)

# ---- 全局设置 ----
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)   # 生成 compile_commands.json,方便 clangd 补全

# ---- 可执行目标 ----
add_executable(${PROJECT_NAME}
    src/main.cpp
)

# ---- 包含目录(按需添加) ----
# target_include_directories(${PROJECT_NAME} PRIVATE include)

# ---- 链接第三方库(按需添加) ----
# find_package(Threads REQUIRED)
# target_link_libraries(${PROJECT_NAME} PRIVATE Threads::Threads)

main.cpp

#include <iostream>
#include <vector>
#include <string>

int main() {
    std::vector<std::string> messages = {"Hello", "from", "CMake!"};

    for (const auto& msg : messages) {
        std::cout << msg << " ";
    }
    std::cout << std::endl;

    return 0;
}

c_cpp_properties.json

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": ["${workspaceFolder}/**"],
            "defines": [],
            "compilerPath": "/usr/bin/g++",
            "cStandard": "c17",
            "cppStandard": "c++17",
            "intelliSenseMode": "linux-gcc-x64",
            "compileCommands": "${workspaceFolder}/build/compile_commands.json"
        }
    ],
    "version": 4
}

settings.json

{
    "cmake.buildDirectory": "${workspaceFolder}/build",
    "cmake.configureOnOpen": true,
    "C_Cpp.intelliSenseEngine": "disabled",
    "editor.formatOnSave": true
}

.clangd

CompileFlags:
  CompilationDatabase: build
Diagnostics:
  UnusedIncludes: Strict

这样模板就做好了
把这个模板项目放在远程服务器的一个目录里
然后vs code里用remote-ssh打开这个目录

这时候就看到vs code里 有了cmake的扩展
在这里插入图片描述
然后还需要服务器里安装cmake

sudo apt install cmake

在这里插入图片描述

然后就可以在cmake里开心的build和launch里, 甚至改了代码可以直接launch (launch是在服务器那边执行)

非常好. 达到了想要的目的而且非常的规范

另外关于 clangd :
CMAKE_EXPORT_COMPILE_COMMANDS ON 会生成 compile_commands.json,这是 clangd 做代码补全和跳转的依据,体验远好于 VS Code 默认的 IntelliSense。建议在服务器上装好 clangd(sudo apt install clangd),然后在 VS Code 里装 clangd 扩展 并禁用微软的 C/C++ IntelliSense(settings.json 里已经帮你配好了)。
IntelliSense也是我认为remote-ssh是半成品的一个原因, 现在IntelliSense被禁用了代码补全确实没有了

两头都安装好clangd之后,
vs code 里按f1 然后 clangd: Restart language server . 就ok了,更好的代码补全

完全ok,全面胜利

最后:
如果你的项目后续需要引入第三方库,在 CMakeLists.txt 里用 find_package() 或 add_subdirectory() 添加即可。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐