# Tmake全自动编译器 **Repository Path**: TieScript/tmake-fully-automated-compiler ## Basic Information - **Project Name**: Tmake全自动编译器 - **Description**: TMake 是一款为结绳编程语言(Tiecode)量身定制的强大构建工具 - **Primary Language**: JavaScript - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2025-11-10 - **Last Updated**: 2025-11-13 ## Categories & Tags **Categories**: ci **Tags**: 编译器, 结绳 ## README # TMake - 结绳项目构建工具 TMake 是一款为**结绳编程语言(Tiecode)**量身定制的强大构建工具,专为[结绳编译器](https://gitee.com/mobile-ipe/TiecodeCompiler-Plugins)开发。它能够将结绳代码编译为可执行文件,并提供完整的项目管理、构建和插件扩展功能。支持多平台构建、优化配置、自动编译等特性,极大简化了结绳项目的开发和部署流程。 *注:本文档由AI生成辅助编写。* ## 安装步骤 1. 克隆仓库 ```bash git clone https://gitee.com/TieScript/tmake-fully-automated-compiler.git ``` 2. 进入项目目录 ```bash cd tmake-fully-automated-compiler ``` 3. 安装依赖: ```bash npm install ``` 4. 构建项目: ```bash npm run build ``` ## 将TMake编译为可执行文件 完成上述安装和构建步骤后,您可以将TMake本身编译为Windows可执行文件(.exe): ```bash npm run pkg:win ``` 此命令会将TMake打包成独立的可执行文件,方便在Windows环境下使用,无需安装Node.js环境。 ## 使用方法 ### 项目创建与管理 创建新的结绳项目: ```bash tmake create [项目名称] ``` 这将创建包含基本结构的结绳项目,包括源代码目录、绳包目录和基本的编译配置文件。 ### 编译结绳项目 编译现有的结绳项目: ```bash tmake compile ``` 此命令将: - 查找项目中的 `.t` 源文件 - 读取 `编译配置.tmake` 配置 - 编译代码并生成输出文件 ### 完整构建流程 执行清理和编译的完整构建流程: ```bash tmake build ``` ### 清理构建产物 清理项目中的构建产物、缓存和临时文件: ```bash tmake clean ``` ### 预编译配置文件 预编译所有 `.tmake` 配置文件到 `.cache` 目录: ```bash tmake precompile ``` ### 打包成可执行文件 (exe) ```bash # 在项目目录中执行编译 cd 项目目录 tmake compile ``` 编译过程会自动: 1. 读取项目中的 `编译配置.tmake` 2. 生成 `.cache/compiler-config.json` 配置文件 3. 根据配置编译源文件为可执行文件 配置示例(在 `编译配置.tmake` 中): ``` TMake版本("1.0.0") 结绳编译器版本("4.6") 设置变量("项目名称", "我的项目") 设置输出文件("程序名.exe") 设置优化级别(2) 编译程序(读取源文件列表("./"), 输出文件) ``` ### 测试编译 TMake 提供多种测试编译方式: 1. **基本编译**: ```bash tmake compile ``` 2. **预编译检查**:验证配置文件语法 ```bash tmake precompile ``` 3. **指定源文件**:编译特定文件 ```bash # 注意:此功能可能需要通过配置文件指定 ``` 4. **清理后重新构建**: ```bash tmake build ``` ### 缓存管理 TMake 实现了智能缓存机制,通过比较文件哈希值来避免不必要的重复编译,显著提高构建效率: - **自动缓存**:编译过程中自动生成和使用缓存 - **增量编译**:只重新编译发生变化的部分 - **缓存验证**:通过哈希比较确保缓存有效性 #### 缓存相关命令 ```bash # 清理所有缓存(包括构建产物) tmake clean # 强制重新编译(忽略缓存) tmake compile --force # 显示缓存状态 tmake compile --debug ``` #### 缓存文件位置 缓存文件存储在项目根目录的 `.cache` 文件夹中,包含: - 源文件哈希缓存 - 配置文件缓存 - 编译结果缓存 使用缓存可以显著提升重复构建的速度,特别是在大型项目中。 ## 插件系统 TMake 提供了强大的插件系统,允许开发者扩展和定制构建流程。通过插件,您可以: - 监听和干预构建生命周期中的各个阶段 - 操作抽象语法树(AST)以实现自定义处理逻辑 - 注册自定义函数扩展 TMake 功能 - 访问文件系统和编译器配置 ### 插件创建与使用 1. **创建插件**: ```bash tmake plugin [插件名称] ``` 2. **加载插件**: - 插件文件(`.js`)应放在项目根目录的 `plugins` 文件夹中,TMake 会自动加载 - `.tmakes` 目录用于向后兼容,但不推荐使用 3. **插件基本结构**: ```javascript module.exports = { // 插件元数据 metadata: { name: 'my-plugin', version: '1.0.0', description: '自定义TMake插件', author: 'Your Name', dependencies: [], config: { enabled: true, debug: false } }, // 初始化函数 init(api) { console.log('加载插件: my-plugin'); // 注册自定义函数 api.registerFunction('my_plugin_func', (node, context) => { // 函数实现 return '来自插件的结果'; }); }, // 生命周期事件 - 使用常量 [PluginLifecycleEvent.BEFORE_COMPILE](api, sourceCode) { console.log('准备编译'); } }; ``` ### 内置核心插件 TMake 内置了两个核心插件: - **tieBuildPlugin**:提供结绳构建的核心功能 - **advancedBuildPlugin**:提供高级构建特性 这些插件会自动加载,无需额外配置。 详细的插件 API 文档请参考项目根目录的 `plugin-api.md` 文件。 ## 命令与参数说明 根据 TMake 的实际实现,以下是支持的命令和参数: ### 支持的命令 | 命令 | 描述 | |------|------| | `create [项目名]` | 创建新的结绳项目 | | `plugin [插件名]` | 创建新的 TMake 插件 | | `precompile` | 预编译所有 `.tmake` 文件到 `.cache` 目录 | | `compile` | 编译结绳项目(默认命令) | | `build` | 清理并编译项目 | | `clean` | 清理构建产物、缓存和临时文件 | | `version` | 显示版本信息 | | `help` | 显示帮助信息 | ### 编译命令参数 在执行 `compile` 或 `build` 命令时,支持以下参数: | 参数 | 描述 | 默认值 | |------|------|--------| | `--output` | 指定输出目录 | 根据配置文件决定 | | `--package` | 指定包名 | `main` | | `--debug` | 启用调试模式 | 根据配置文件决定 | | `--release` | 启用发布模式 | 根据配置文件决定 | | `--hard-mode` | 启用严格模式 | `false` | | `--optimize` | 设置优化级别(0-3) | 根据配置文件决定 | | `--log-level` | 设置日志级别 | 根据配置文件决定 | | `--platform` | 指定目标平台 | 根据配置文件决定 | | `--tiecc-dir` | 指定结绳编译器目录 | 环境变量或 `./tiecc` | | `--force` | 强制重新编译,忽略缓存 | `false` | ### 常用命令示例 ```bash # 创建新项目 Tmake create 我的项目 # 进入项目目录 cd 我的项目 # 创建插件 Tmake plugin my-plugin # 编译项目 Tmake compile # 清理并重新构建 Tmake build # 预编译配置文件 Tmake precompile # 查看帮助 Tmake help # 查看版本 Tmake version ``` ## 插件API文档 详细的插件 API 文档请参考项目根目录下的 `plugin-api.md` 文件。该文档包含: - 插件系统概述和基础结构 - 完整的生命周期事件列表(初始化、编译、构建、清理等阶段) - PluginAPI 接口详细说明(编译器访问、函数注册、文件系统操作等) - AST 操作 API(节点创建、查找、替换、修改、遍历) - 插件管理器 API 的使用方法 - 实用示例和最佳实践 - 插件示例路径和故障排除指南 ## 项目结构 TMake 项目的主要结构如下: ``` ├── src/ # 源代码目录 │ ├── index.ts # 主入口文件 │ ├── compiler.ts # 编译器核心 │ ├── parser.ts # 解析器 │ ├── lexer.ts # 词法分析器 │ ├── plugin-system.ts # 插件系统 │ ├── build.ts # 构建管理 │ ├── plugins/ # 内置插件 │ └── types.ts # 类型定义 ├── project/ # 项目模板 ├── plugin-api.md # 插件API文档 ├── functions.md # 函数参考文档 ├── dev.md # 开发文档 └── help.md # 帮助文档 ``` ## 许可证 本项目采用 LGPL3.0 许可证。详情请参阅 [LICENSE](LICENSE) 文件。 ## 联系我们 如果您有任何问题或建议,请通过以下方式联系我们: - TMake 构建工具仓库:[https://gitee.com/TieScript/tmake-fully-automated-compiler](https://gitee.com/TieScript/tmake-fully-automated-compiler) - **结绳编译器仓库(核心依赖)**:[https://gitee.com/mobile-ipe/TiecodeCompiler-Plugins](https://gitee.com/mobile-ipe/TiecodeCompiler-Plugins) ## VSCode 插件 TMake 提供了官方的 Visual Studio Code 插件,为结绳项目开发提供了完整的 IDE 支持。插件位于项目根目录的 `vscode-plugin` 文件夹中,提供以下功能: - **语法高亮**:为 `.tmake` 配置文件提供完整的语法高亮 - **代码补全**:支持所有内置函数的智能补全 - **错误检查**:实时检查配置文件的语法错误 - **文档提示**:函数调用时显示参数和用法提示 ### 插件安装 1. 从项目根目录的 `vscode-plugin` 文件夹中找到 `tmake-0.6.1-beta.vsix` 文件 2. 在 VSCode 中,点击扩展图标,然后点击右上角的三点菜单 3. 选择"从 VSIX 安装" 4. 选择下载的 VSIX 文件完成安装 ### 插件开发 如果您想参与插件开发或自定义插件功能: ```bash # 进入插件目录 cd vscode-plugin # 安装依赖 npm install # 编译插件 npm run compile # 测试插件 npm test ``` ## 函数参考文档 详细的内置函数和结绳函数参考文档请参阅项目根目录下的 `functions.md` 文件。该文档包含: - 所有配置函数的详细说明和使用示例 - 文件系统函数的参数和返回值 - 平台相关函数的用途和行为 - 编译控制函数的使用方法 - 字符串处理函数的示例 - 插件系统函数的API参考 - 命令行命令的完整列表 感谢您使用 TMake!