Skip to content

Commit 3cfda1a

Browse files
RichardLuo0bobbrow
andauthored
Support different debug config for different launch targets (#2801)
* Support different debug config for different targets * Wait for launch target to be set * Changelog * Fix eslint issue * check for undefined and null --------- Co-authored-by: Bob Brown <[email protected]>
1 parent ae77f87 commit 3cfda1a

File tree

2 files changed

+52
-12
lines changed

2 files changed

+52
-12
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# What's New?
22

3+
## 1.16
4+
Features:
5+
- Support different debug config for different targets. [PR #2801](https://github.com/microsoft/vscode-cmake-tools/pull/2801) [@RichardLuo0](https://github.com/RichardLuo0)
6+
37
## 1.15
48
Features:
59
- Added support for the CMake Debugger. [#3093](https://github.com/microsoft/vscode-cmake-tools/issues/3093)

src/extension.ts

Lines changed: 48 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1341,34 +1341,70 @@ export class ExtensionManager implements vscode.Disposable {
13411341
return this.runCMakeCommandForProject(cmakeProject => cmakeProject.quickStart(folder));
13421342
}
13431343

1344-
launchTargetPath(folder?: vscode.WorkspaceFolder | string) {
1344+
launchTargetPath({ folder, targetName }: { folder?: vscode.WorkspaceFolder | string; targetName?: string }) {
13451345
telemetry.logEvent("substitution", { command: "launchTargetPath" });
1346-
return this.queryCMakeProject(cmakeProject => cmakeProject.launchTargetPath(), folder);
1346+
return this.queryCMakeProject(async cmakeProject => {
1347+
if (targetName !== undefined && targetName !== null) {
1348+
await cmakeProject.setLaunchTargetByName(targetName);
1349+
}
1350+
const targetPath = await cmakeProject.launchTargetPath();
1351+
return targetPath;
1352+
}, folder);
13471353
}
13481354

1349-
launchTargetDirectory(folder?: vscode.WorkspaceFolder | string) {
1355+
launchTargetDirectory({ folder, targetName }: { folder?: vscode.WorkspaceFolder | string; targetName?: string }) {
13501356
telemetry.logEvent("substitution", { command: "launchTargetDirectory" });
1351-
return this.queryCMakeProject(cmakeProject => cmakeProject.launchTargetDirectory(), folder);
1357+
return this.queryCMakeProject(async cmakeProject => {
1358+
if (targetName !== undefined && targetName !== null) {
1359+
await cmakeProject.setLaunchTargetByName(targetName);
1360+
}
1361+
const targetDirectory = await cmakeProject.launchTargetDirectory();
1362+
return targetDirectory;
1363+
}, folder);
13521364
}
13531365

1354-
launchTargetFilename(folder?: vscode.WorkspaceFolder | string) {
1366+
launchTargetFilename({ folder, targetName }: { folder?: vscode.WorkspaceFolder | string; targetName?: string }) {
13551367
telemetry.logEvent("substitution", { command: "launchTargetFilename" });
1356-
return this.queryCMakeProject(cmakeProject => cmakeProject.launchTargetFilename(), folder);
1368+
return this.queryCMakeProject(async cmakeProject => {
1369+
if (targetName !== undefined && targetName !== null) {
1370+
await cmakeProject.setLaunchTargetByName(targetName);
1371+
}
1372+
const targetFilename = await cmakeProject.launchTargetFilename();
1373+
return targetFilename;
1374+
}, folder);
13571375
}
13581376

1359-
getLaunchTargetPath(folder?: vscode.WorkspaceFolder | string) {
1377+
getLaunchTargetPath({ folder, targetName }: { folder?: vscode.WorkspaceFolder | string; targetName?: string }) {
13601378
telemetry.logEvent("substitution", { command: "getLaunchTargetPath" });
1361-
return this.queryCMakeProject(cmakeProject => cmakeProject.getLaunchTargetPath(), folder);
1379+
return this.queryCMakeProject(async cmakeProject => {
1380+
if (targetName !== undefined && targetName !== null) {
1381+
await cmakeProject.setLaunchTargetByName(targetName);
1382+
}
1383+
const targetPath = await cmakeProject.getLaunchTargetPath();
1384+
return targetPath;
1385+
}, folder);
13621386
}
13631387

1364-
getLaunchTargetDirectory(folder?: vscode.WorkspaceFolder | string) {
1388+
getLaunchTargetDirectory({ folder, targetName }: { folder?: vscode.WorkspaceFolder | string; targetName?: string }) {
13651389
telemetry.logEvent("substitution", { command: "getLaunchTargetDirectory" });
1366-
return this.queryCMakeProject(cmakeProject => cmakeProject.getLaunchTargetDirectory(), folder);
1390+
return this.queryCMakeProject(async cmakeProject => {
1391+
if (targetName !== undefined && targetName !== null) {
1392+
await cmakeProject.setLaunchTargetByName(targetName);
1393+
}
1394+
const targetDirectory = await cmakeProject.getLaunchTargetDirectory();
1395+
return targetDirectory;
1396+
}, folder);
13671397
}
13681398

1369-
getLaunchTargetFilename(folder?: vscode.WorkspaceFolder | string) {
1399+
getLaunchTargetFilename({ folder, targetName }: { folder?: vscode.WorkspaceFolder | string; targetName?: string }) {
13701400
telemetry.logEvent("substitution", { command: "getLaunchTargetFilename" });
1371-
return this.queryCMakeProject(cmakeProject => cmakeProject.getLaunchTargetFilename(), folder);
1401+
return this.queryCMakeProject(async cmakeProject => {
1402+
if (targetName !== undefined && targetName !== null) {
1403+
await cmakeProject.setLaunchTargetByName(targetName);
1404+
}
1405+
const targetFilename = await cmakeProject.getLaunchTargetFilename();
1406+
return targetFilename;
1407+
}, folder);
13721408
}
13731409

13741410
buildTargetName(folder?: vscode.WorkspaceFolder | string) {

0 commit comments

Comments
 (0)