diff --git a/src/utils/vivadoConfig.ts b/src/utils/vivadoConfig.ts index 9d7b44d..0c5d996 100644 --- a/src/utils/vivadoConfig.ts +++ b/src/utils/vivadoConfig.ts @@ -51,9 +51,11 @@ export function validateConfig(config: VivadoConfig): string | null { if (!config.enabled) { return 'Vivado 未启用'; } - if (!fs.existsSync(config.executablePath)) { + // 如果是完整路径,检查文件是否存在 + if (path.isAbsolute(config.executablePath) && !fs.existsSync(config.executablePath)) { return `Vivado 可执行文件不存在: ${config.executablePath}`; } + // 环境变量命令不检查,运行时会自动报错 return null; } @@ -72,34 +74,14 @@ export function resolveWorkingDir(workingDir: string): string { * 自动检测 Vivado */ function autoDetectVivado(): VivadoConfig | null { - const drives = ['C', 'D', 'E', 'F', 'G']; + const workspaceFolder = vscode.workspace.workspaceFolders?.[0]; - for (const drive of drives) { - const vivadoDir = `${drive}:\\Xilinx\\Vivado`; - if (!fs.existsSync(vivadoDir)) { - continue; - } - - // 读取所有版本目录 - const versions = fs.readdirSync(vivadoDir) - .filter(v => fs.statSync(path.join(vivadoDir, v)).isDirectory()) - .sort() - .reverse(); // 最新版本在前 - - for (const version of versions) { - const p = path.join(vivadoDir, version, 'bin', 'vivado.bat'); - if (fs.existsSync(p)) { - const workspaceFolder = vscode.workspace.workspaceFolders?.[0]; - return { - enabled: true, - executablePath: p, - workingDir: workspaceFolder - ? path.join(workspaceFolder.uri.fsPath, 'vivado_projects') - : `${drive}:\\vivado_projects` - }; - } - } - } - - return null; + // 默认使用环境变量中的 vivado 命令 + return { + enabled: true, + executablePath: 'vivado', + workingDir: workspaceFolder + ? path.join(workspaceFolder.uri.fsPath, 'vivado_projects') + : path.join(process.env.USERPROFILE || 'C:\\Users\\Default', 'vivado_projects') + }; }