# Sublime-Env **Repository Path**: hong_project/sublime-env ## Basic Information - **Project Name**: Sublime-Env - **Description**: 适用于 Windows 的 Sublime 开发环境包,包含 Sublime Text 和 Sublime Merge 的最新安装包和自动配置解决方案。 添加了多种自定义的编译系统,一键式完成编译构建,减少开发前的配置时间。 - **Primary Language**: NodeJS - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-01-09 - **Last Updated**: 2023-01-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Sublime 开发环境包 由个人整理,以便快速配置 Sublime 环境。 您可在[此链接处](https://gitee.com/nixsawe/sublime-env/releases "查看发行版列表")下载本环境包的发行版压缩包,而无需登录到 Gitee。 本环境包的官方仓库为 [https://gitee.com/nixsawe/sublime-env](https://gitee.com/nixsawe/sublime-env),您可访问官方仓库查看最新的帮助信息。 本工具包可以移动到任何的路径,但注册后不应再移动位置。 ### 本环境包有什么值得推荐的特性? 1. 一键安装、一键配置,快速建立 Sublime Text 及 Sublime Merge 生态,自动解决依赖问题 2. 提供自写 Sublime Keil C51 编译系统+辅助编译脚本,可借助 Keil 提供的二进制实现一键构建 51 单片机、STM32 单片机项目 [点击查看](#了解-sublime-keil-c51 "查看关于 Sublime Keil C51 编译系统的帮助")关于 Sublime Keil C51 编译系统的帮助 3. 提供 MinGW 编译环境及编译系统,无需复杂配置即可使用简单 MinGW 编译功能 4. 支持自动更新,无需每次访问仓库即可获取最新开发环境 5. 轻巧,简洁,稳定,高效 6. 快捷键提供高效开发途径 `F5` 或 `Ctrl+Shift+B` 选择编译系统
`F7` 使用上次选择的编译系统执行编译
`Shift+F7` MinGW 编译
`Shift+F8` MinGW 编译+运行
`Shift+F9` MinGW 选择编译选项 7. 最新添加了 Python 脚本的运行功能 当然,受众可能只有作者本人,哈哈 ### 安装及注册方法 双击“Install-Env”目录下的“【点此进行环境注册】”文件即可。 **如果出现管理员权限提示,请进行允许。** 注册脚本将自动检测各种环境,并进行有关配置。
注册脚本还会尝试自动安装 Sublime 软件。
当所有操作正常进行后,将自动配置好 Sublime 开发环境及附加组件。 若网络连接可用,在安装之前,脚本还将尝试检查更新是否可用,并下载更新内容。可查看[自动更新功能](#自动更新功能 "有关自动更新功能的帮助")小节了解更多信息。 环境配置的过程都是自动的,您一般不需要手动进行其他配置,除非工具进行了明确的提示(比如提示未找到某某组件)。 如果您在自动安装中遇到困难,或者需要额外配置 Sublime 软件、配置 MinGW 环境,或者是配置 KeilC51 组件,可以参考下面的几个部分。 ### 安装 Sublime Text 和 Sublime Merge 脚本会尝试自动搜索并安装 Sublime 软件,故而一般您不需要进行有关修改。
不过,您也可以选择手动安装,或者替换 Sublime 安装包为自己倾向的版本。
*这是必须的组件* ,如果您没有手动安装 Sublime 软件,工具会尝试自动安装,并在无法找到软件时终止。 本环境包的完整版中,Sublime 目录中应包含 **Sublime Text** 和 **Sublime Merge** 软件的安装包,可直接进行安装。也可访问链接 [https://gitee.com/nixsawe/sublime-env/tree/master/Sublime](https://gitee.com/nixsawe/sublime-env/tree/master/Sublime) 下载最后一次更新的安装包。 * 自动安装注意事项 1. 注册工具会从 Sublime 目录中搜索安装包,请确保安装包文件名满足如下规则
\*sublime\_merge\_(build_)版本号\_安装包位数\*
\*sublime\_text\_(build_)版本号\_安装包位数\*
如:`sublime_text_build_4126_64bit_setup.exe` 是一个有效的安装包文件名。 2. 注册工具会自动安装匹配系统位数的软件,优先安装最新版 3. 注册工具会以默认配置自动安装软件,中间无需用户操作
当安装软件后无法找到文件(一般是之前安装过 Sublime,且安装到非默认目录里),工具会提示是否强制安装到默认路径,选“是”即可。 4. 注册工具会自动为您创建软件的桌面快捷方式 * 手动安装注意事项 1. 若您的系统是 64 位系统,请优先安装 64 位的 Sublime Text 以获得更好的兼容性和编辑功能
若您不了解自己的系统位数,可以尝试安装 64 位软件,若安装失败,再尝试安装 32 位软件。
Sublime Merge 软件只有 64 位版本。 2. 请将软件直接安装到默认安装位置
工具目前仅支持从默认安装位置进行搜索。两个软件所占空间较小,因此请放心安装到默认位置。
若安装过程中无法选择路径,请尝试工具提供的自动安装功能,并选择强制安装到默认路径。 3. 手动安装完成后找不到快捷方式是正常现象
请在手动安装完成后再次使用“安装及注册方法”小节描述的方法完成环境注册。 ### 下载及配置 MinGW 脚本会尝试从一些目录中搜索已有的 MinGW 环境,并为 Sublime Text 注册对应的编译系统。
*这并非必须组件* ,如果您不需要使用 MinGW,或者不想让工具自动配置 MinGW,可以跳过本小节内容。 * 获取 MinGW MinGW-W64 目录中提供有在线安装软件,用户可下载所需的版本。 本环境包的完整版中,MinGW-W64 目录中应包含一个或多个适用性较好的版本压缩包,可直接使用该压缩包。也可以从链接 [https://gitee.com/nixsawe/sublime-env/tree/master/MinGW-W64](https://gitee.com/nixsawe/sublime-env/tree/master/MinGW-W64) 内下载对应的版本压缩包。 * 解压 MinGW 脚本将自动从下面几个路径搜索 MinGW 环境,请将压缩包解压,并调整目录结构,不要有非必要的中间目录。 自动搜索路径(将尝试使用最新的版本): 1. Install-Env 目录下 2. 本环境包主目录下 3. MinGW-W64 目录下 4. 系统 Program Files 目录及 Program Files (x86) 目录下 5. 各个分区的根目录 自动步进的文件夹名称(如果存在中间目录,则必须按如下命名): 1. mingw64 2. mingw-w64 3. mingw 例如,`MinGW-W64\mingw64` 是一个有效的 MinGW 环境路径。
您在将压缩包解压之后,解压缩工具可能为您自动创建了一个或多个上层目录,请确保上层目录满足“自动步进的文件夹名称”。 当您重新配置了 MinGW,您可能需要重新按照[安装及注册方法](#安装及注册方法)小节的说明重新进行注册。 ### 了解 Sublime Keil C51 ***Sublime Keil C51*** 是由工具作者自写的编译套件(包括 Sublime 编译系统 + 自动编译辅助脚本),可以在 Sublime Text 软件中一键编译、构建 51 单片机、STM32 单片机程序代码,并生成烧录所需的 HEX 文件。 虽然名字中写的是 C51,但实际由两组套件组成,Sublime Keil C51 以及 Sublime Keil ARM 编译套件(ARM 又包括 ArmClang 以及 ARMCC 两套编译器),分别对应于 51 单片机及 STM32 单片机的程序构建。 本小节叙述这两个编译套件的主要特点,如果您需要了解如何配置环境,请转而查看[配置 Keil C51 自动编译环境](#配置-keil-c51-自动编译环境)。 本作使用了 Keil C51/ArmClang/ARMCC 工具链,并在其基础上进行了如下改进: 1. 接入 Sublime Text 用户可使用 *KeilC51-Init* 编译系统对文件、工程初始化,将生成一个名为 `keilc51-make.cmd` 的编译脚本,在该脚本中使用 *KeilC51-Build* 编译系统可直接进行编译构建。 这些操作,只需要按两下 `F7` 即可快速完成。新版笔记本可能需要使用 `Fn + F7` 组合键。 第一次进行编译时,您需要在弹出的对话框中选择要使用的编译系统(51 或是 STM32)。同一个会话再次编译时,将自动使用上次的选择。若您需要手动选择其他编译系统,请使用 `Ctrl+Shift+B` 组合键。 您可以通过修改 `keilc51-make.cmd` 文件中的内容,来实现对高级编译参数的手动调整。 **其中,STM32 项目初始化时,需要您在上方提示区输入 STM32 单片机的型号,编译系统才能根据这个信息生成编译命令脚本。编译系统会自动检测型号是否正确,如果您输入后无反应,请检查所输入内容是否为有效型号。** 2. 快速添加包含目录 只需要将头文件所在目录,拖动到 Sublime Text 左侧文件夹视图中即可。当您想要移除某个文件夹时,也可以在左侧视图区点击 `Remove Folder from Project` 移除该文件夹。 您可以通过 Sublime Text 的工程管理功能获得更优的体验。 您也可以在生成的编译命令脚本中,修改 `inc_dir` 数组,以调整头文件的搜索路径。
`auto_includes` 参数可进一步简化配置过程,如果头文件总是和源文件在同一个目录下,您可以将该参数设 1,这将自动添加所有的源文件所在目录到头文件搜索路径。 3. 轻松实现多文件编程 只需要将要参与编译的源代码文件,拖动到 Sublime Text 右侧编辑器视图中。当某个文件不再需要时,直接关掉该页面即可。 换句话说,在当前 Sublime Text 窗口中所有已打开的源代码文件,都将参与到编译构建中。(不包括左侧文件夹视图中未打开的文件) **由于多文件编程的特性,所有打开的源代码文件都将参与编译,请避免打开非同一工程的文件,避免符号名冲突导致编译失败。** 目前,扩展名为 .c、.cpp、.s、.src、.a51 的文件会被自动包含。
**(.cpp 文件仅在 ARM 中可用,.a51 则仅在 C51 中可用)** 您也可以在生成的编译命令脚本中,修改 `src_file` 数组,以调整参与编译的源文件。 在较为复杂的项目中,同时参与编译的文件可能会非常多,您可在 `src_file` 中指定一个目录路径,这将自动添加该目录下(包括子目录)所有源文件(扩展名要求如上)。
**不建议用这样的方式批量添加库文件,因为可能并非所有库文件都被使用,这将消耗大量的时间编译用不到的文件。** 4. 快速精确定位至错误、警告位置 在编译构建后,程序下方会展示编译过程中的输出信息(按 `ESC` 关闭,按 `Shift + ESC` 再次打开)。 其中,编译辅助脚本已将输出的提示信息进行格式修正及补充,可以清晰地查看到出错的文件、行数、列数,以及错误描述。 编译系统也支持快速定位至错误位置,您可以按 `F4` 快速定位到下一个出错代码位置,按 `Shift + F4` 反向定位上一个错误位置。 5. 默认去除没有使用的函数 C51 编译系统中,默认调用 *LX51* 连接器,并使用 `REMOVEUNUSED` 参数从生成的文件中移除未使用的函数代码。
这在多文件编程中能够大大缩减程序大小。 C51 编译系统的 *BX51* 连接器并不支持这个功能。 由于我们最近才加入适配 STM32 的 ARM 编译系统,其功能尚未发掘完全,故我们在其中暂未支持相关功能。
不过或许可以通过调整优化等级 `olevel` 以及为每个函数分配独立的 elf 区段 `split_sections=1` 来将未使用的函数代码优化掉。
**如果您知道如何进行有关优化,欢迎发起 Issue 告知我们!** 6. 编译参数可灵活配置 在进行开发过程中,您可随时修改编译命令脚本中的各项参数,包括编译参数、链接参数等。 完成初始化后,对于 STM32 项目,脚本还将自动生成对应的 scatter (.sct) 文件,以保证生成的文件能够正常烧录。您也可以按照实际需求,对其进行修改。 STM32 项目中,脚本还将自动包含对应型号单片机的启动文件。您可通过修改 RTE 配置数组 `rte` 来对默认行为进行修改。 7. 在 Proteus 中使用 C51 项目编译生成的 .hex 文件可直接在 Proteus 中加载使用,无需过多配置。每次修改源码后,只需要重新进行编译,Proteus 中直接重新开始模拟即可,无需进行附加修改。 *(暂未测试 STM32 项目在 Proteus 中的可用性。)* 8. ArmClang 与 ARMCC 新版 MDK 所支持的 `AC6`,即为 ArmClang 编译器,而 `AC5` 指的是 ARMCC 编译器。
当您按下 `Ctrl+Shift+B` 组合键时,可选择使用 ArmClang 或者是 ARMCC 进行编译。 **由于编译器兼容性问题,部分旧的项目可能只能使用 ARMCC 进行编译构建。** 9. STM32 运行库(RTE) 版本 2.6.0 及以后的版本中已加入 RTE 自动配置支持。您可根据需求,在编译命令脚本中添加所需的 RTE 组件。 **默认将自动添加设备的启动文件,如果您不需要,也可以手动去掉。** 添加与移除 RTE 支持,可通过修改编译命令脚本中 `rte` 数组的定义来实现。 例如,想要在 `STM32F10X` 芯片项目中添加 `StdPeriph Drivers` 的 `GPIO` 库,可以在 `rte` 数组中添加 `Device:StdPeriph Drivers:GPIO`,编译系统会自动添加对应的库文件及包含目录。 在 `rte` 数组中指定的为对应组件的属性。一般为 `::[version=x.x.x]`,**您可省略部分内容,只要它能够唯一确定一个组件**,如上述,也可以写成 `Device::GPIO` 或 `:StdPeriph Drivers:GPIO`。 如果您不希望编译系统自动配置 RTE,您也可以注释掉 `rte` 的对应行。您仍可以通过 `src_file` 以及 `inc_dir` 两个数组配置包含的文件和目录。
*由于不使用 RTE,此时编译系统无法自动生成 `RTE_Components.h` 文件,也不会添加 `_RTE_` 宏,您可能需要手动添加所需要的宏定义,如 `USE_STDPERIPH_DRIVER`。* 10. 编译缓存 版本 2.7.0 及之后的版本支持缓存编译结果,编译生成的中间文件将被保留,并保存到 `build-cache` 目录中。
在一次成功的编译后,未修改的文件下一次将不再被重复编译,而是直接使用上一次的编译结果,本质是对编译结果的“缓存”,所以叫编译缓存。 Sublime Keil 通过这种方式能够极大缩短构建时间,在复杂项目中尤为显著。目前,编译缓存仅在 ARM 构建过中可用。 **注意:如果您在某个代码的视图中按下 F7 快捷键,则最终生成的 HEX 文件将和该文件同名。如果您在其他的代码文件视图中按 F7 快捷键,会覆盖掉之前的编译脚本,也代表着最终生成的 HEX 文件名会改变。**
**对于 STM32 项目,重新初始化后,您对 .sct 文件的修改也将被覆盖。** ### 配置 Keil C51 自动编译环境 脚本会尝试从一些目录中搜索 Keil C51/ARM 二进制文件,并为 Sublime Text 注册 Sublime Keil C51/ARM 编译系统。
上述操作是自动完成的,故而您一般不需要手动进行配置。
*这并非必须组件* ,如果您不需要使用 Sublime 开发 C51 或 STM32 程序,或者不想让工具自动配置该编译系统,可以跳过本小节内容。 1. 安装 Keil C51/Arm MDK 工具提供的编译系统仍需要官方 Keil 提供的二进制来支持,故而您需要先安装 Keil。 所需的组件为 **C51**、**Arm MDK**,以及对应的 **ArmPacks** 固件包(如 **STM32F1xx_DFP**)。如果您只需要部分功能,您可以只安装部分组件。 为了方便脚本搜索,建议您将 Keil 安装在如下位置(请注意在对应目录下创建 Keil 文件夹): 1. 系统 Program Files 目录及 Program Files (x86) 目录下 2. 各个分区的根目录下 3. 各个分区的 Software 目录下 2. 尝试重新进行环境注册 当您重新安装 Keil,或者移动了 Keil 的安装路径,您必须重新按照[安装及注册方法](#安装及注册方法)小节的说明重新进行注册。 3. 手动配置 Keil 二进制路径 当重装及自动搜索都失败时,请按如下方式手动配置二进制路径: 1. 用记事本打开“Install-Env\\sublime_cfg\\sublime_text”目录下的“KeilC51-Init.sublime-build”文件 2. 替换文件中 `bin_path` 以及 `arm_packs` 的属性值
第一个 `bin_path` 指定了 C51 二进制路径,格式类似于 `X:\\Path\\of\\Keil\\C51\\BIN`。
第二个 `bin_path` 指定了 ArmClang 二进制路径,格式类似于 `X:\\Path\\of\\Keil\\ARM\\ARMCLANG\\bin`。
第三个 `bin_path` 指定了 ARMCC 二进制路径,格式类似于 `X:\\Path\\of\\Keil\\ARM\\ARMCC\\bin`。
`arm_packs` 指定了 Arm 固件包的路径,格式类似于 `X:\\Path\\of\\Keil\\ArmPacks`。
**尾端的 `C51\\BIN`、`ARMCLANG\\bin` 以及 `ARMCC\\bin` 均是必要的,这样才能够底定位到二进制文件的路径,且路径中所有反斜杠 `\`,都要用两个反斜杠代替 `\\`,用于转义。** 3. 重新进行环境注册操作,并忽略 Keil 文件未找到的提示 ### 开发环境失效怎么办 *请确保安装后所有文件夹结构不变。* 如果 MinGW 编译环境或者 Keil 的二进制文件被移动到其他位置,又或者是移动了本工具目录,都将导致编译系统无法正常工作。 如果出现这种情况,请重新运行“Install-Env”目录下的“点此进行环境注册”文件,重新注册环境。 **若您通过任何方式更新了本环境包,您也需要重新进行注册,从而为一些配置文件应用更新。** ### Sublime Text 汉化 1. 确保您的电脑联网 2. 运行 Sublime Text 3. Ctrl+Shift+P,输入 `Install`,选择第一个 4. 等待,安装完成后会有提示 *如果安装失败,请更换网络环境重新尝试* 5. Ctrl+Shift+P,输入 `Package Install`,选择 `Package Control: Install Package` 6. 输入 `Chinese`,选择 `ChineseLocalizations` 7. 稍等片刻即可安装成功,会自动弹出一个中文的文本,并自动切换为中文界面,请等待界面无变化十几秒后再操作 ### 自动更新功能 自版本 2.3.2 以来,本环境支持自动更新功能,程序将在合适时自动检查并应用更新。 * 自动更新的检查时机 1. 注册脚本运行时,自动检查更新,并询问用户是否应用更新 2. 使用编译功能时,若当前距上次检查时间间隔超过 8 小时,则运行一个后台脚本检查更新 为了新版更新能被及时接收到,客户端每次进行编译操作时,都可能进行更新检测。然而,检测可能消耗一定时间,为了不对编译过程造成影响,我们使用独立的后台脚本去检查更新,并设置了最小检测时间间隔。这样,更新检测功能对编译时长的影响几乎可忽略不计。 * 配置自动更新 您可以编辑 `Install-Env\lib\update_cfg.js` 文件中的设置,来设置是否自动检查更新,或者忽略特定文件的特定更新。 * 自动更新的问题 目前 Gitee 仓库不支持不登录查看大小为 1M 及以上的文件,故而自动更新无法应用于 MinGW 运行环境及 Sublime 软件安装包。 不过,这有利于对应程序的稳定性。您可以在需要的时候手动下载它们的更新。 * 手动检查并应用更新 直接运行注册脚本,即可获取最新的版本。
Install-Env 目录中存在“工具箱”程序,其中的“环境更新”和“工具包修复”均能实现更新。 它们的区别如下: 1. 注册脚本:主要用于注册环境,但在正式注册之前会检查更新,并在更新可用时应用更新 2. 环境更新:正常地检查并应用更新 3. 工具包修复:当文件损坏导致无法安装,也无法使用“环境更新”功能进行修复时,“工具包修复”功能可直接使用独立的更新模块进行更新 一般地,您在使用 Sublime Keil 进行编译时,如果看到“更新可用”的提示,可直接运行注册脚本进行更新,然后按提示**再次运行注册脚本重新注册环境**。 您也可以在任何时候使用其他工具,**但应用更新后,必须也运行一遍注册脚本,以重新注册环境**。