From a303e13f58be9236b9721993814165a4618a4c6c Mon Sep 17 00:00:00 2001 From: Myriad-Dreamin Date: Fri, 3 Apr 2026 23:48:08 +0800 Subject: [PATCH] dev: add cmake-workspace sample --- .../samples/cmake-workspace/CMakeLists.txt | 14 +++++++++++++ .../vscode/samples/cmake-workspace/README.md | 21 +++++++++++++++++++ .../samples/cmake-workspace/greeting.cc | 7 +++++++ .../vscode/samples/cmake-workspace/greeting.h | 6 ++++++ .../vscode/samples/cmake-workspace/main.cc | 8 +++++++ 5 files changed, 56 insertions(+) create mode 100644 editors/vscode/samples/cmake-workspace/CMakeLists.txt create mode 100644 editors/vscode/samples/cmake-workspace/README.md create mode 100644 editors/vscode/samples/cmake-workspace/greeting.cc create mode 100644 editors/vscode/samples/cmake-workspace/greeting.h create mode 100644 editors/vscode/samples/cmake-workspace/main.cc diff --git a/editors/vscode/samples/cmake-workspace/CMakeLists.txt b/editors/vscode/samples/cmake-workspace/CMakeLists.txt new file mode 100644 index 00000000..24ad3849 --- /dev/null +++ b/editors/vscode/samples/cmake-workspace/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.16) + +project(clice_vscode_cmake_sample LANGUAGES CXX) + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +add_library(sample_greeting greeting.cc) +target_include_directories(sample_greeting PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") + +add_executable(sample_app main.cc) +target_link_libraries(sample_app PRIVATE sample_greeting) diff --git a/editors/vscode/samples/cmake-workspace/README.md b/editors/vscode/samples/cmake-workspace/README.md new file mode 100644 index 00000000..68821c60 --- /dev/null +++ b/editors/vscode/samples/cmake-workspace/README.md @@ -0,0 +1,21 @@ +# VS Code CMake Sample + +This workspace is a standalone CMake project for attaching the VS Code extension to a real `clice` session. + +`clice` already auto-detects `build/compile_commands.json`, so this sample does not need any helper scripts or extra CMake glue. + +## Prepare The Workspace + +From this directory: + +```sh +cmake -S . -B build -G Ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON +``` + +That is enough to generate `build/compile_commands.json`, which `clice` can discover automatically when this folder is opened as the workspace. + +If you also want the sample binary: + +```sh +cmake --build build +``` diff --git a/editors/vscode/samples/cmake-workspace/greeting.cc b/editors/vscode/samples/cmake-workspace/greeting.cc new file mode 100644 index 00000000..6204d8e0 --- /dev/null +++ b/editors/vscode/samples/cmake-workspace/greeting.cc @@ -0,0 +1,7 @@ +#include "greeting.h" + +#include + +std::string build_greeting(std::string_view name) { + return "Hello, " + std::string(name) + " from the CMake sample."; +} diff --git a/editors/vscode/samples/cmake-workspace/greeting.h b/editors/vscode/samples/cmake-workspace/greeting.h new file mode 100644 index 00000000..77e20faa --- /dev/null +++ b/editors/vscode/samples/cmake-workspace/greeting.h @@ -0,0 +1,6 @@ +#pragma once + +#include +#include + +std::string build_greeting(std::string_view name); diff --git a/editors/vscode/samples/cmake-workspace/main.cc b/editors/vscode/samples/cmake-workspace/main.cc new file mode 100644 index 00000000..27b01727 --- /dev/null +++ b/editors/vscode/samples/cmake-workspace/main.cc @@ -0,0 +1,8 @@ +#include "greeting.h" + +#include + +int main() { + std::cout << build_greeting("clice") << '\n'; + return 0; +}