# TASKING工作区一键配置工具 **Repository Path**: Beautiful_Man/tasking-workspace-configurator ## Basic Information - **Project Name**: TASKING工作区一键配置工具 - **Description**: Windows 下的 TASKING/Eclipse 工作区一键配置工具:自动识别工程、关闭 CDT 索引器、开启并行编译,保留源文件与依赖,提供备份恢复和控制台结果。附中文使用说明,MIT 开源。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-15 - **Last Updated**: 2026-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TASKING 工作区一键配置工具 面向 Windows 下基于 Eclipse/CDT 的 TASKING TriCore 工程,将关闭 C/C++ 索引器和开启并行编译合并为一次操作。导入工程后,关闭 IDE,双击 `configure_workspace.cmd` 即可配置。 运行文件只有一组:`configure_workspace.cmd` + `configure_workspace.ps1`。工程名称自动从目录和 Eclipse 工作区记录中识别,不依赖固定名称;两份文件可以一起复制到其他位置使用。 ## 功能 - 发现并选择 Eclipse 工作区,显示实际处理的工作区、工程路径及结果。 - 关闭所选工作区中已有 CDT 工程偏好文件对应的索引器,减少后台索引的资源占用。 - 为支持的 TASKING 构建器开启并行编译,检查工程中的全部构建配置,例如 Debug、Release。 - 对正常且已符合目标设置的文件直接跳过,便于导入新工程后重复运行。 - 修改前建立并验证备份,写入前后检查配置,失败时尝试恢复对应文件。 - 在窗口中显示带时间的执行信息、成功或失败状态;运行结束后等待按键,便于查看结果。 - 不生成专用 `.log` 文件,包括 `disable_indexer.log`。Eclipse 自己生成的 `.metadata/.log` 与本工具无关。 关闭索引器可能影响依赖索引的自动补全、符号跳转和引用查找;它不是关闭编译器的语法检查。 ## 环境要求 - Windows,建议使用 Windows 10/11 自带的 Windows PowerShell 5.1。 - 基于 Eclipse/CDT 的 TASKING TriCore 工程,具有 `.cproject` 文件和已初始化的工作区 `.metadata`。 - 构建器所属 `toolChain` 的 `superClass` 以 `com.tasking.ctc` 开头。其他厂商或其他结构的工程不保证支持。 - 对目标工程、工作区配置目录具有读写权限。通常无需管理员权限。 CMD 调用系统的 Windows PowerShell,并仅对本次进程使用 `-ExecutionPolicy Bypass`,不永久修改执行策略。组织策略仍可能限制脚本运行。 ## 快速使用 1. 从仓库下载并解压,将 `configure_workspace.cmd` 和 `configure_workspace.ps1` 放在同一个目录。不要在压缩包预览窗口中直接运行。 2. 在 TASKING/Eclipse 中导入并打开工程,让 IDE 生成工作区记录,然后完全退出 IDE。 3. 推荐将两份脚本一起放入要配置的工作区 `.metadata` 目录,例如: ```text D:\Workspaces\DemoWorkspace\ ├── .metadata\ │ ├── configure_workspace.cmd │ ├── configure_workspace.ps1 │ └── .plugins\... └── ExampleProject\ └── .cproject ``` 4. 双击 `configure_workspace.cmd`。找到多个工作区时,按窗口提示输入对应编号;没有自动找到时,输入 `.metadata` 的完整绝对路径。 5. 查看输出的 `Workspace metadata`、`Detected project` 和各阶段结果,确认路径与预期一致。`RESULT: SUCCESS` 表示本次配置检查成功;`RESULT: FAILED (code 1)` 表示至少一项失败,请查看前面的 `ERROR` / `FAILED` 信息。 6. 按任意键关闭窗口,重新打开 IDE,按原有流程编译和验证工程。 手动输入路径时不要附加引号、前后空格或多余的路径分隔符。发现多个工作区时,脚本不会假定 IDE 最近使用的工作区就是目标工作区。 后续导入名称不同的新工程,也可以按以上流程再次运行。只新增已有工程中的源文件时,通常不必重复配置;仍需按工程原有规则将源文件纳入构建。本工具不自动添加源文件,也不启动编译。 ## 自动识别与处理范围 工作区发现会检查脚本目录及其相关父目录中的 `.metadata`,并搜索当前用户的 `Desktop`、`Documents`,递归深度参数为 4。它不是全盘搜索,也不读取 IDE 当前选中的工程。 | 脚本放置位置 | 索引器处理范围 | 编译配置处理范围 | | --- | --- | --- | | 工作区 `.metadata` 或工作区根目录 | 所选工作区中所有匹配的已有工程偏好文件 | 工作区已登记且能定位到 `.cproject` 的工程 | | 某工程目录或工程子目录 | 仍然是所选工作区的上述全部偏好文件 | 向上找到的最近一个含 `.cproject` 的工程 | | 其他目录 | 所选工作区的上述全部偏好文件 | 无法从脚本位置推断工程时,使用所选工作区已登记的工程 | 工作区选择与根据脚本位置推断工程是两个独立步骤。放在工程目录中使用时,应选择该工程对应的工作区;放在目标工作区的 `.metadata` 中更适合批量配置导入的工程。 批量发现工程时,脚本读取 `.metadata/.plugins/org.eclipse.core.resources/.projects` 下的登记记录,尝试从 `.location` 解析实际工程路径;无法解析时回退到“工作区目录/登记名称”。只有存在 `.cproject` 的路径才会进入编译配置阶段,不存在的路径可能被跳过。 ## 修改哪些配置 索引器配置位于: ```text .metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-*.prefs ``` | 配置项 | 目标值 | 作用 | | --- | --- | --- | | `eclipse.preferences.version` | `1` | Eclipse 偏好文件版本标记 | | `indexer/indexerId` | `org.eclipse.cdt.core.nullindexer` | 选择不执行索引的索引器 | | `indexer/preferenceScope` | `1` | 使用工程级索引器设置 | 编译配置位于工程 `.cproject` 中符合条件的 TASKING `toolChain/builder` 元素: | XML 属性 | 目标值 | 作用 | | --- | --- | --- | | `parallelBuildOn` | `true` | 开启构建器的并行编译选项 | | `parallelizationNumber` | `optimal` | 使用构建器支持的自动并行度设置 | 脚本保留已有显式构建参数,例如 `-j12`,不会将它们改为无限并行。具体并行度及参数优先级取决于所用 TASKING/CDT 版本和构建命令。若工程原本已经开启这些设置,脚本不会带来额外的配置变化。 ## 编译完整性与效率 脚本通过配置并行构建来争取缩短编译时间,保留源文件选择、依赖关系、编译器/汇编器/链接器选项、宏、头文件路径和输出设置。不通过删除源文件、弱化依赖或跳过构建步骤实现加速,也不会执行 Clean、删除产物或修改优化等级。 实际效果取决于 CPU、内存、磁盘、工具链许可及工程依赖结构;没有统一的加速倍数保证。并行构建要求工程和自定义前后处理步骤本来就具备正确的依赖关系;本工具不会检查或修复这些依赖。 `SUCCESS` 只表示脚本目标配置检查成功,不等于工程编译或产物验证通过。首次应用后,应完成一次项目要求的完整构建和验证;如果出现并行构建相关异常,可按下文恢复 `.cproject` 后排查。 ## 备份、异常处理与恢复 仅在文件需要修改时,脚本才会在原文件旁生成带时间戳的备份,例如: ```text .cproject.bak-20260915_143012345 org.eclipse.cdt.core.prj-ExampleProject.prefs.bak-20260915_143012345 ``` 时间戳碰撞时会追加编号。备份会校验文件大小和 SHA-256;修改内容先写入临时文件,通过配置/XML 检查后替换目标,再执行一次检查。异常时,在已有备份通过验证的前提下尝试恢复该文件,恢复失败会显示 `CRITICAL`。 这是按文件处理的机制,不是整个工作区的事务:某个工程失败时,其他成功修改的文件可能已经生效。它也不保证断电或强制终止时的原子性。 手动恢复: 1. 完全关闭 IDE,找到运行输出中记录的对应备份。 2. 保留当前文件副本,再将选定的备份复制回原位置,恢复原文件名,例如 `.cproject` 或对应的 `.prefs` 文件名。 3. 重新打开 IDE,确认设置,按项目流程重新构建和验证。需要撤销两类设置时,应分别恢复相关 `.cproject` 和 `.prefs`。 脚本在开始及阶段切换时检查 `eclipse`、`eclipsec` 进程,发现运行中的 IDE 会报错,并通过按工作区路径生成的 Windows 会话内互斥锁防止同一会话的重复实例同时操作。仍应手动确保相关 IDE 已完全退出,并在脚本结束前保持关闭;采用其他进程名的 IDE 不在此检查范围内。 ## 常见问题 | 提示或现象 | 说明与处理 | | --- | --- | | `TASKING/Eclipse is running` | 退出所有相关 IDE 窗口,确认后台进程结束后重试。 | | `Multiple Eclipse workspaces were found` | 按实际路径选择编号;不要根据工程名称猜测工作区。 | | `No CDT project preference files were found` | 先导入并打开工程;若仍没有文件,可进入工程的 C/C++ Indexer 设置并保存一次,再关闭 IDE 重试。当前脚本不会创建缺失的工程偏好文件。 | | `No project with a .cproject file was found` | 确认工程已导入,工程路径仍有效;必要时将脚本对放在目标工程目录,并选择匹配的工作区。 | | `No TASKING builder elements were found` | 当前工程的构建器结构不符合支持条件。当前版本将其计为编译配置失败,其他工程仍可继续处理。 | | `already disabled` / `already optimal` | 对应设置已经符合目标值,本次无需修改;不代表脚本测量过编译性能。 | | `Access denied`、备份或写入失败 | 检查目录权限、只读属性、文件占用和磁盘空间,按照具体错误处理。 | | `CRITICAL: ... restore failed` | 自动恢复失败。保留备份,关闭 IDE 后按上述步骤手动恢复。 | | 窗口没有生成日志文件 | 这是设计行为。结果只显示在控制台,可在按键关闭前复制需要的输出。 | 当前 `.location` 解析采用 ASCII 和 `URI//file:` 形式,特殊编码、部分非 ASCII 路径或其他位置记录格式可能无法正确解析。当前版本也不提供通用的损坏偏好文件修复能力,例如冲突重复键应先人工检查。 ## 仓库文件 | 文件 | 用途 | | --- | --- | | `configure_workspace.cmd` | 双击入口,调用 PowerShell,显示退出状态并等待按键 | | `configure_workspace.ps1` | 工作区/工程发现、索引器和并行构建配置、备份与异常处理 | | `README.md` | 功能、操作步骤、处理范围和限制 | | `LICENSE` | MIT 开源许可证 | | `.gitignore` | 排除本地工作区数据、备份和临时文件 | 此工具只在本机读写配置,不联网、不上传工程内容。仓库不包含工作区数据、工程源码、编译器或商业工具链许可。 ## 许可证 采用 [MIT License](LICENSE),允许在保留版权与许可声明的前提下使用、修改和分发。TASKING、Eclipse 等名称属于各自权利人;本项目不是这些厂商的官方工具,也不授予其产品的使用许可。