远程Linux开发的开发环境搭建(非常好版)

首先,做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

clike 复制代码
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

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

clike 复制代码
{
    "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

clike 复制代码
{
    "cmake.buildDirectory": "${workspaceFolder}/build",
    "cmake.configureOnOpen": true,
    "C_Cpp.intelliSenseEngine": "disabled",
    "editor.formatOnSave": true
}

.clangd

clike 复制代码
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() 添加即可。