From 89f99e65e8fd55a4a6338788d674b6dfcd0d009f Mon Sep 17 00:00:00 2001 From: chentianya Date: Tue, 18 Aug 2026 16:51:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BB=BA=E7=AB=8B=20StScan=20CMake=20=E5=B7=A5?= =?UTF-8?q?=E7=A8=8B=EF=BC=8C=E5=B9=B6=E5=9C=A8=20cmake=20=E4=B8=AD?= =?UTF-8?q?=E8=A7=84=E5=AE=9A=20C11/C++11=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 顶层挂上四个模块目录,语言标准集中在 Standards.cmake。 Co-authored-by: Cursor --- CMakeLists.txt | 15 +++++++++++++++ README.md | 4 ++-- cmake/README.md | 8 +++++--- cmake/Standards.cmake | 8 ++++++++ 4 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 cmake/Standards.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index e69de29..e5b9b80 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -0,0 +1,15 @@ +# CMake最低版本 +cmake_minimum_required(VERSION 3.21) + +# 工程名、版本号、工程描述 +project(StScan + VERSION 0.1 + DESCRIPTION "子集 ST 编译为寄存器 VM,按扫描周期执行" + LANGUAGES C CXX) + +include("${CMAKE_SOURCE_DIR}/cmake/Standards.cmake") + +add_subdirectory(isa) +add_subdirectory(compiler) +add_subdirectory(vm) +add_subdirectory(host) \ No newline at end of file diff --git a/README.md b/README.md index ce3f380..9debe64 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# 子集 ST + 寄存器 VM +# StScan -IEC 风格的子集 ST:用 `project.toml` 组织多个 `.st`,编译成单一映像,由寄存器虚拟机按扫描周期执行。 +子集 ST + 扫描周期虚拟机。IEC 风格的子集 ST:用 `project.toml` 组织多个 `.st`,编译成单一映像,由寄存器虚拟机按扫描周期执行。 方案见 [`Doc/初步计划.md`](Doc/初步计划.md)。 diff --git a/cmake/README.md b/cmake/README.md index 4606336..a9e6efd 100644 --- a/cmake/README.md +++ b/cmake/README.md @@ -1,7 +1,9 @@ # cmake -顶层 CMake 的辅助脚本,**不是**业务模块。 +顶层 CMake 的辅助脚本,**不是**业务模块。由根目录 `CMakeLists.txt` 在 `project()` 之后 `include()`。 -放警告选项、C++ 标准、输出目录等共用片段,由根目录 `CMakeLists.txt` `include()`。不要按词法、VM、host 再拆成业务 CMake module。 +| 文件 | 内容 | +|---|---| +| `Standards.cmake` | C11、C++11;`STANDARD_REQUIRED`;关闭 GNU 扩展 | -第一版尽量少文件;没有共用逻辑时本目录可以为空。 +不要按词法、VM、host 再拆成业务 CMake module。改语言标准只改本目录,不要在各子目录再 `set(CMAKE_CXX_STANDARD …)`。 diff --git a/cmake/Standards.cmake b/cmake/Standards.cmake new file mode 100644 index 0000000..e4dcdd9 --- /dev/null +++ b/cmake/Standards.cmake @@ -0,0 +1,8 @@ +# C / C++ 语言标准。在 project() 之后 include,对后续目标生效。 +set(CMAKE_C_STANDARD 11) +set(CMAKE_C_STANDARD_REQUIRED ON) +set(CMAKE_C_EXTENSIONS OFF) + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF)