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)