diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 1d29fa0f70..c11dbf5693 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,15 +1,21 @@ { "name": "CMake Tools", "dockerFile": "Dockerfile", - "runArgs": [ + "runArgs": [ "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined" ], - "settings": { - "terminal.integrated.shell.linux": "/bin/bash" - }, - "extensions": [true][ - "ms-vscode.cpptools" - ] -} + "customizations": { + // Configure properties specific to VS Code. + "vscode": { + // Set *default* container specific settings.json values on container create. + "settings": { + "terminal.integrated.shell.linux": "/bin/bash" + }, + "extensions": [ + "ms-vscode.cpptools" + ] + } + } +} \ No newline at end of file diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 0000000000..e7e427ec90 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,130 @@ +--- +description: "You are an expert contributor to microsoft/vscode-cmake-tools, a TypeScript VS Code extension targeting Windows, macOS, and Linux. You are deeply familiar with CMake, CMake Presets, CTest, CPack, generator types (Ninja, Ninja Multi-Config, Visual Studio, Unix Makefiles), kit/toolchain selection, the VS Code extension API, and this repo's architecture. Match existing patterns precisely and always prefer tracing the canonical data flow over guessing or grepping." +applyTo: "**/*.ts,**/*.tsx,**/package.json,**/*.cmake,**/CMakeLists.txt,**/CMakePresets.json,**/CMakeUserPresets.json" +--- + +# CMake Tools — Contributor Instructions + +## Domain knowledge + +- **Two operating modes**: *presets mode* (`CMakePresets.json`/`CMakeUserPresets.json`) vs. *kits/variants mode*. Many bugs affect only one. Always check `CMakeProject.useCMakePresets` and handle both unless explicitly justified. +- **Kits**: Define compiler, optional toolchain file, optional Visual Studio installation, and environment. On Windows, MSVC kits require VS Developer Environment (`vcvarsall.bat`) merged via `getEffectiveSubprocessEnvironment()` in `cmakeDriver.ts`. +- **Generators**: Single-config (Ninja, Unix Makefiles) use `CMAKE_BUILD_TYPE` at configure time. Multi-config (Ninja Multi-Config, Visual Studio) use `--config` at build time. Never assume single-config. +- **Presets**: `CMakePresets.json` is project-owned (committed). `CMakeUserPresets.json` is user-owned (gitignored). Both support `include` chaining. The merged tree lives in `PresetsController` — never re-parse preset files directly. Types live in `src/presets/preset.ts`. +- **CTest / CPack / Workflow**: Separate drivers — `CTestDriver` (`src/ctest.ts`), `CPackDriver` (`src/cpack.ts`), and `WorkflowDriver` (`src/workflow.ts`) — each with their own preset type. +- **Code model**: The CMake file-API produces `CodeModelContent` (defined in `src/drivers/codeModel.ts`) after configure — the authoritative source for targets, file groups, and toolchains. Never infer targets from `CMakeLists.txt`. +- **Variable expansion**: `src/expand.ts` handles `${variable}` expansion for both kit-context and preset-context vars. Changes here need unit tests. +- **Cross-platform**: Runs on Windows, macOS, Linux. Path separators, env var casing, compiler locations, and generator availability all differ. + +## Project conventions + +- **Path alias**: `@cmt/*` maps to `src/*` (see `tsconfig.json`). Always use `import foo from '@cmt/foo'` — never relative paths from outside `src/`. +- **Error reporting**: Use `rollbar.invokeAsync()` / `rollbar.invoke()` for top-level error boundaries around event handlers, never bare `try/catch` that silently swallows. +- **Telemetry**: Use helpers in `src/telemetry.ts` (`logEvent`). Never call the VS Code telemetry API directly. + +## Architecture + +| Layer | Primary files | Responsibility | +|---|---|---| +| **CMake driver** | `src/drivers/cmakeDriver.ts` (base), `cmakeFileApiDriver.ts`, `cmakeLegacyDriver.ts`, `cmakeServerDriver.ts` | Spawning CMake, file-API replies, code model, cache, targets. `cmakeFileApiDriver` is the modern default. | +| **CMake project** | `src/cmakeProject.ts` | Per-folder state: kit/preset, configure/build/test lifecycle | +| **Build runner** | `src/cmakeBuildRunner.ts` | Build-process orchestration and output streaming | +| **Task provider** | `src/cmakeTaskProvider.ts` | VS Code task integration (`tasks.json` "cmake" type) | +| **Project controller** | `src/projectController.ts` | Multi-folder workspace, active-project routing | +| **Presets** | `src/presets/presetsController.ts`, `presetsParser.ts`, `preset.ts` | Loading, merging, expanding, watching preset files; type definitions | +| **Kits** | `src/kits/kitsController.ts`, `src/kits/kit.ts`, `src/kits/variant.ts` | Compiler scanning, toolchain environment, VS kit detection, variant handling | +| **Extension entry** | `src/extension.ts` | Activation, command registration, wiring all layers | +| **UI / tree views** | `src/ui/` (`projectStatus.ts`, `projectOutline/`, `cacheView.ts`, `pinnedCommands.ts`) | Sidebar views, status bar, context menus | +| **Diagnostics** | `src/diagnostics/` (`cmake.ts`, `build.ts`, `gcc.ts`, `msvc.ts`, `gnu-ld.ts`, etc.) | Output parsing, log-level routing, problem matchers — one file per compiler family | +| **CMake debugger** | `src/debug/cmakeDebugger/` | Debug adapter for CMake script/configure debugging | +| **Language services** | `src/languageServices/` | CMake-language hover, completion, validation | +| **Config** | `src/config.ts` | `ConfigurationReader` — canonical access to all extension settings | +| **Tests** | `test/unit-tests/`, `test/integration-tests/`, `test/end-to-end-tests/`, `test/smoke/` | Mocha suites at four levels of granularity | + +## Mandatory rules — apply to every task + +### Before touching any code, orient first + +Identify the affected layer(s) from the architecture table above. Read the relevant files before writing anything. Never guess at call sites, data flow, or configuration keys. + +### Use canonical data paths — never ad-hoc reads or grep + +| Need | Use — not grep or direct file reads | +|---|---| +| Targets / target types | `CMakeProject.targets`, `.executableTargets`, or `codeModelContent` | +| Active preset | `CMakeProject.configurePreset` / `.buildPreset` / `.testPreset` / `.packagePreset` / `.workflowPreset` | +| Active kit | `CMakeProject.activeKit` | +| Merged preset list | `PresetsController` | +| Cache entries | `CMakeDriver.cmakeCacheEntries` | +| Extension settings | `ConfigurationReader` (`src/config.ts`) — never `vscode.workspace.getConfiguration()` directly | + +### Always handle both operating modes + +When a code path touches shared logic (configure, build, test, targets, environment), check `CMakeProject.useCMakePresets` and ensure it works correctly in both presets mode and kits/variants mode. Omitting the check for one mode in shared code is a bug waiting to happen. Features that are inherently mode-specific (e.g., kit scanning, preset expansion) are fine to scope to one mode. + +### Always handle both generator types + +Single-config uses `CMAKE_BUILD_TYPE`; multi-config uses `--config` at build time. Check the active generator before any build-type logic. + +### Localize all user-visible strings + +Every file with user-visible text needs the `vscode-nls` boilerplate: + +```typescript +import * as nls from 'vscode-nls'; +nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })(); +const localize: nls.LocalizeFunc = nls.loadMessageBundle(); + +// ✅ localize('my.message.key', 'Human-readable message') +// ❌ bare strings in user-visible output +``` + +### Use the module-scoped logger — never `console.log` + +```typescript +import * as logging from '@cmt/logging'; +const log = logging.createLogger('my-module'); +``` + +### `async`/`await` — never swallow errors + +Prefer `async`/`await` over `.then()` chains and never use empty `catch` blocks. Wrap top-level event handlers in `rollbar.invokeAsync()`. Exception: fire-and-forget UI calls (e.g., `vscode.window.showInformationMessage(...).then(...)`) where `.then()` is idiomatic. + +### Paths — always `path.join()` / `path.normalize()` + +Never concatenate path strings with `/` or `\\`. No exceptions. + +### New or changed settings: update all three locations + +`package.json` (`contributes.configuration`), `src/config.ts` (`ConfigurationReader`), and `docs/cmake-settings.md`. + +### Every PR needs a CHANGELOG entry + +One entry under the current version in `CHANGELOG.md`, in the appropriate section (`Features:`, `Improvements:`, or `Bug Fixes:`), describing user-visible behavior in the repo's existing tense and category style. + +## Testing checklist + +- [ ] `yarn unitTests` passes +- [ ] If `src/diagnostics/`, `src/presets/`, or `src/expand.ts` changed — affected unit tests updated +- [ ] If `src/kits/` changed — update `test/unit-tests/kitmanager.test.ts` +- [ ] Behavior verified in **presets mode** and **kits/variants mode** +- [ ] Behavior verified with **single-config** and **multi-config** generators +- [ ] Windows/macOS/Linux differences considered (paths, env vars, MSVC toolchain, generator availability) + +## Where to start + +- **Configure/build/test behavior** → `src/cmakeProject.ts` + `src/drivers/` +- **Build output / streaming** → `src/cmakeBuildRunner.ts` +- **Task provider (`tasks.json`)** → `src/cmakeTaskProvider.ts` +- **Preset loading or resolution** → `src/presets/presetsController.ts` + `presetsParser.ts` +- **Preset types / interfaces** → `src/presets/preset.ts` +- **Kit detection or environment** → `src/kits/kitsController.ts` + `kit.ts` +- **Variant handling** → `src/kits/variant.ts` +- **Variable expansion** → `src/expand.ts` +- **Command does nothing or crashes** → `src/extension.ts` handler registration +- **Sidebar item or context menu** → `src/ui/` node `contextValue` + `package.json` `when` clauses +- **Output panel text or log level** → `src/diagnostics/cmake.ts` (`CMakeOutputConsumer`) +- **Compiler-specific diagnostics** → `src/diagnostics/gcc.ts`, `msvc.ts`, `gnu-ld.ts`, etc. +- **Setting ignored or wrong source** → `src/config.ts` + `package.json` `contributes.configuration` +- **Preset file change not detected** → `src/presets/presetsController.ts` file watcher +- **CMake debugger** → `src/debug/cmakeDebugger/` \ No newline at end of file diff --git a/.github/skills/pr-readiness/SKILL.md b/.github/skills/pr-readiness/SKILL.md new file mode 100644 index 0000000000..3573cffcbf --- /dev/null +++ b/.github/skills/pr-readiness/SKILL.md @@ -0,0 +1,103 @@ +--- +name: pr-readiness +description: > + Verify that a pull request into microsoft/vscode-cmake-tools meets contribution + requirements. Use when preparing, reviewing, or finalizing a PR to check for a + descriptive title, a meaningful description, and a properly formatted CHANGELOG entry. +--- + +# PR Readiness + +## PR Requirements Checklist + +### 1. PR Title + +The title must clearly and concisely describe the change from the user's perspective. It should: + +- Start with a verb (e.g., "Fix", "Add", "Improve", "Remove", "Update"). +- Mention the affected feature or area (e.g., presets, kits, CTest, build tasks, Project Outline). +- Be specific enough that a reader understands the change without opening the PR. + +**Good examples:** + +- `Fix preset reloading loop when preset files are symlinks` +- `Add "Delete Build Directory and Reconfigure" command` +- `Improve CTest test ordering to match Test Explorer display` + +**Bad examples:** + +- `Fix bug` (too vague) +- `Update code` (no useful information) +- `WIP` (not ready for review) + +### 2. PR Description + +The PR body must include: + +- **What changed**: A short summary of the user-visible behavior change. +- **Why**: The motivation — link to a GitHub issue if one exists (e.g., `Fixes #1234`). +- **How** (if non-obvious): A brief explanation of the implementation approach when the change is complex. + +### 3. CHANGELOG Entry + +Every PR must add an entry to `CHANGELOG.md`. + +#### Where to insert + +Insert the entry under the **most recent (topmost) version heading** in `CHANGELOG.md`. The first version heading looks like `## ` (e.g., `## 1.23`). Always add the new entry at the **bottom** of the appropriate section (i.e., after all existing entries in that section). + +#### Which section + +Place the entry in exactly one of these three sections, creating the section if it does not already exist under the current version: + +| Section | Use when… | +|---|---| +| `Features:` | A new user-visible capability is added (new command, new setting, new UI element). | +| `Improvements:` | An existing feature is enhanced, optimized, or has better UX — but no new capability is introduced. | +| `Bug Fixes:` | A defect is corrected. | + +The sections appear in this fixed order: `Features:`, then `Improvements:`, then `Bug Fixes:`. + +#### Entry format + +Each entry follows this pattern: + +``` +- . [#]() +``` + +Where `` starts with a present-tense verb describing the user-visible change, and the link references either: + +- The **GitHub issue** it solves: `[#](https://github.com/microsoft/vscode-cmake-tools/issues/)` +- Or the **PR** itself: `[#](https://github.com/microsoft/vscode-cmake-tools/pull/)` + +An entry may optionally credit an external contributor at the end: `[@user](https://github.com/user)`. + +**Examples:** + +```markdown +Features: +- Add "Delete Build Directory and Reconfigure" command that removes the entire build directory before reconfiguring, ensuring a completely clean state. [#4826](https://github.com/microsoft/vscode-cmake-tools/pull/4826) + +Improvements: +- Run tests sequentially in alphabetical order (matching the Test Explorer display order) when `cmake.ctest.allowParallelJobs` is disabled. [#4829](https://github.com/microsoft/vscode-cmake-tools/issues/4829) + +Bug Fixes: +- Fix `cmake.revealLog` set to `"focus"` not revealing the output panel or stealing focus. [#4471](https://github.com/microsoft/vscode-cmake-tools/issues/4471) +- Fix garbled characters in the Output panel when MSVC outputs UTF-8 on non-UTF-8 Windows systems. [#4520](https://github.com/microsoft/vscode-cmake-tools/issues/4520) [@contributor](https://github.com/contributor) +``` + +#### What NOT to do + +- Do **not** add a new version heading — use the existing topmost one. +- Do **not** place the entry under an older version. +- Do **not** use past tense (write "Fix …", not "Fixed …"). +- Do **not** omit the issue or PR link. + +## Applying This Skill + +When reviewing or preparing a PR: + +1. **Check the title** — rewrite it if it is vague or missing context. +2. **Check the description** — ensure it explains what, why, and (if needed) how. +3. **Check `CHANGELOG.md`** — verify an entry exists under the current version in the correct section with the correct format. If missing, add one. diff --git a/CHANGELOG.md b/CHANGELOG.md index 6667a3452c..6f90ce6404 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,18 +3,34 @@ ## 1.23 Features: +- Automatically add new source files to `CMakeLists.txt` and remove deleted source files from `CMakeLists.txt`. Two new commands (`cmake.addFileToCMakeLists` and `cmake.removeFileFromCMakeLists`) and nine new `cmake.modifyLists.*` settings provide full control over target selection, variable handling, and confirmation behavior. [#2132](https://github.com/microsoft/vscode-cmake-tools/issues/2132) [#4454](https://github.com/microsoft/vscode-cmake-tools/pull/4454) [@malsyned](https://github.com/malsyned) +- Allow specifying a custom debug adapter type in `cmake.debugConfig` via the `type` property. When set, automatic debugger detection is skipped and any debug adapter (e.g., `codelldb`, `lldb`) can be used with arbitrary configuration properties. [#4818](https://github.com/microsoft/vscode-cmake-tools/pull/4818) +- Add `${cmake.testEnvironment}` placeholder for launch.json that resolves to the CTest `ENVIRONMENT` test property, and automatically include CTest environment variables when debugging tests without a launch configuration. [#4572](https://github.com/microsoft/vscode-cmake-tools/issues/4572) [#4821](https://github.com/microsoft/vscode-cmake-tools/pull/4821) +- Add "Delete Build Directory and Reconfigure" command that removes the entire build directory before reconfiguring, ensuring a completely clean state. [#4826](https://github.com/microsoft/vscode-cmake-tools/pull/4826) - Add `cmake.shell` setting to route CMake/CTest/CPack subprocess invocations through a custom shell (e.g., Git Bash, MSYS2), enabling embedded toolchains that require POSIX path translation on Windows. [#1750](https://github.com/microsoft/vscode-cmake-tools/issues/1750) - triple: Add riscv32be riscv64be support. [#4648](https://github.com/microsoft/vscode-cmake-tools/pull/4648) [@lygstate](https://github.com/lygstate) - Add command to clear build diagnostics from the Problems pane. [#4691](https://github.com/microsoft/vscode-cmake-tools/pull/4691) - Clear build diagnostics from the Problems pane when a new build starts and populate them incrementally during the build. [#4608](https://github.com/microsoft/vscode-cmake-tools/issues/4608) - Add individual CTest test nodes to the Project Outline with inline run/debug buttons, and enable debugging tests from both the Outline and Test Explorer without requiring a launch.json. [#4721](https://github.com/microsoft/vscode-cmake-tools/pull/4721) - Add "Delete Cache, Reconfigure and Build" command that chains cache deletion, reconfiguration, and build into a single action. [#4723](https://github.com/microsoft/vscode-cmake-tools/pull/4723) +- Add `cmake.postConfigureTask` setting to execute a named VS Code task after every successful CMake configure. [#4566](https://github.com/microsoft/vscode-cmake-tools/pull/4566) [@Francois-Le](https://github.com/Francois-Le) - Add "Set Build and Launch/Debug Target" command that sets both the build target and launch target simultaneously. [#4732](https://github.com/microsoft/vscode-cmake-tools/pull/4732) - Add `cmake.setBuildTargetSameAsLaunchTarget` setting to automatically set the build target when the launch/debug target is changed. [#4519](https://github.com/microsoft/vscode-cmake-tools/pull/4519) [@nikita-karatun](https://github.com/nikita-karatun) - Add `cmake.additionalBuildProblemMatchers` setting to define custom problem matchers for build output. Supports tools like clang-tidy, PCLint Plus, cppcheck, or custom scripts integrated via `add_custom_command`/`add_custom_target`. [#4077](https://github.com/microsoft/vscode-cmake-tools/issues/4077) - Support `targetName` argument for launch-target command substitutions (`cmake.launchTargetPath`, etc.) via `${input:...}` variables, enabling build-before-run for non-active executable targets without changing the active launch target. [#4656](https://github.com/microsoft/vscode-cmake-tools/issues/4656) +- Complete Bookmarks context menu with "Set Build Target", "Set Launch/Debug Target", "Open CMakeLists.txt", and "Run Utility Target" actions to match the Project Outline. [#4788](https://github.com/microsoft/vscode-cmake-tools/issues/4788) +- Relax `intelliSenseMode` validation in CMake Presets. [#4815](https://github.com/microsoft/vscode-cmake-tools/issues/4815) [@halflifefan](https://github.com/halflifefan) +- Support string arrays in kit `cmakeSettings` to pass CMake lists without escaping semicolons (e.g., `"LLVM_ENABLE_PROJECTS": ["clang", "lld"]`). [#4503](https://github.com/microsoft/vscode-cmake-tools/issues/4503) +- Add `cmake.outlineViewType` setting to toggle the Project Outline between a flat list view and the prior hierarchical tree view that shows each CMake project separately. [#3799](https://github.com/microsoft/vscode-cmake-tools/issues/3799) [#4538](https://github.com/microsoft/vscode-cmake-tools/pull/4538) [@ar1m4n](https://github.com/ar1m4n) +- Add `kit.visualStudioArguments` property, this is the extra arguments that would be passed to the `vcvarsall.bat` file when entering the VS dev environment, those arguments are `[platform_type] [winsdk_version] [-vcvars_ver=vc_version] [-vcvars_spectre_libs=spectre_mode]`. [#125](https://github.com/microsoft/vscode-cmake-tools/issues/125) [#4538](https://github.com/microsoft/vscode-cmake-tools/pull/4619) [@lygstate](https://github.com/lygstate) Improvements: +- Clarify variable substitution scope in docs for `settings.json` vs generic VS Code `tasks.json`/`launch.json`, including when to use `${command:cmake.*}` and why `${buildKit}`, `${generator}`, and `${config:cmake.configureArgs}` may not expand as expected in tasks. [#4010](https://github.com/microsoft/vscode-cmake-tools/issues/4010) +- Improve CMake syntax highlighting: extend variable recognition with compiler/toolchain families and add scoped property command colorization for `set_property`, `get_property`, `set_target_properties`, and related commands. [#4527](https://github.com/microsoft/vscode-cmake-tools/pull/4527) [@pboettch](https://github.com/pboettch) +- Run tests sequentially in alphabetical order (matching the Test Explorer display order) when `cmake.ctest.allowParallelJobs` is disabled. [#4829](https://github.com/microsoft/vscode-cmake-tools/issues/4829) +- Document how to configure `cmake.debugConfig.visualizerFile` to use custom Natvis files with quick debugging, without requiring a `launch.json`. [#4616](https://github.com/microsoft/vscode-cmake-tools/issues/4616) +- Add `.github/copilot-instructions.md` to ground GitHub Copilot in the repo's architecture and coding conventions. +- Clicking on a CTest in the Project Outline now navigates to the test source file, matching the existing Test Explorer behavior. [#4773](https://github.com/microsoft/vscode-cmake-tools/issues/4773) - Clicking on a CTest unit test in the Test Explorer now navigates to the test source file by matching the test executable to its CMake target's source files. [#4449](https://github.com/microsoft/vscode-cmake-tools/issues/4449) - Make "CMake: Add ... Preset" commands available in the command palette when `cmake.useCMakePresets` is set to `auto`, even before a CMakePresets.json file exists. [#4401](https://github.com/microsoft/vscode-cmake-tools/issues/4401) - Improve CMake syntax highlighting with command-scoped keyword rules, expanded variable recognition, and better generator-expression support. Remove obsolete deprecated-keyword entries that caused false positives on user-defined names. [#4709](https://github.com/microsoft/vscode-cmake-tools/issues/4709) [#4508](https://github.com/microsoft/vscode-cmake-tools/issues/4508) [#4613](https://github.com/microsoft/vscode-cmake-tools/issues/4613) @@ -23,13 +39,38 @@ Improvements: - Allow preset modification commands to target CMakeUserPresets.json. The target file is determined by the focused editor, or by prompting the user when both files exist. [#4564](https://github.com/microsoft/vscode-cmake-tools/issues/4564) - Display info tooltip when hovering over CMake policy identifiers (e.g., `CMP0177`), showing the CMake version that introduced the policy, a short description, and a link to the official documentation. [#4544](https://github.com/microsoft/vscode-cmake-tools/issues/4544) - Append `cmake` to diagnostics that this extension contributes to the Problems Pane. [PR #4766](https://github.com/microsoft/vscode-cmake-tools/pull/4766) +- Set the `VSCODE_CMAKE_TOOLS` environment variable for all spawned subprocesses so that `CMakeLists.txt` can detect when CMake is run from VS Code. [#4233](https://github.com/microsoft/vscode-cmake-tools/issues/4233) +- Ensure kit `environmentVariables` expansions (for example, `${env:PATH}` or `${env.PATH}`) use the environment produced by `environmentSetupScript`, so script-updated values are preserved during expansion. [#4091](https://github.com/microsoft/vscode-cmake-tools/issues/4091) +- Honor `debugger.workingDirectory` from the CMake File API when debugging a target, so that the `DEBUGGER_WORKING_DIRECTORY` target property is used as the debugger working directory. [#4595](https://github.com/microsoft/vscode-cmake-tools/issues/4595) +- Honor the active kit environment (including `environmentSetupScript` and kit-defined environment variables) when resolving `cmake.cmakePath` in kits mode, enabling `auto`/`cmake` mode discovery and `${env:...}` substitutions to use kit-provided environment values. [#4475](https://github.com/microsoft/vscode-cmake-tools/issues/4475) +- Add `cmake.removeStaleKitsOnScan` setting to optionally remove stale compiler kits from the kit picker after a "Scan for Kits" when they are no longer rediscovered. This is useful after compiler upgrades that leave older versions outside `PATH`. Set `"keep": true` in a kit entry to prevent automatic removal. [#3852](https://github.com/microsoft/vscode-cmake-tools/issues/3852) +- Add `pr-readiness` Copilot skill to verify PRs have a descriptive title, meaningful description, and a properly formatted CHANGELOG entry. [#4862](https://github.com/microsoft/vscode-cmake-tools/pull/4862) Bug Fixes: +- Fix `tasks.json` schema validation rejecting valid CMake task commands `package` and `workflow`. [#4167](https://github.com/microsoft/vscode-cmake-tools/issues/4167) +- Import the `EXTERNAL_INCLUDE` environment variable from the VS developer environment so that MSVC's external-header diagnostic suppression works correctly. [#4217](https://github.com/microsoft/vscode-cmake-tools/issues/4217) +- Fix test presets not automatically switching when the build preset changes in multi-config generator setups (e.g., Ninja Multi-Config). The extension now auto-selects a compatible test preset after a build preset change, and properly considers build type when guessing the test preset. [#4395](https://github.com/microsoft/vscode-cmake-tools/issues/4395) +- Fix `cmake.additionalCompilerSearchDirs` ignoring per-folder overrides in multiroot workspaces. The setting is now read from each folder's scoped configuration with `${workspaceFolder}` expanded per-folder, and the results are unioned. Also fix `cmake.cmakePath` resolution during kit scanning to try all workspace folders instead of only the first. +- Fix `${workspaceFolder}` expansion in `cmake.additionalCompilerSearchDirs` for single-root workspaces. Previously only the multi-root `${workspaceFolder:name}` syntax worked. [#4571](https://github.com/microsoft/vscode-cmake-tools/issues/4571) +- Fix `cmake.revealLog` set to `"focus"` not revealing the output panel or stealing focus. The output channel now correctly appears and takes focus on both configure success and failure when this setting is used. [#4471](https://github.com/microsoft/vscode-cmake-tools/issues/4471) +- Fix `${command:cmake.selectConfigurePreset}` (and other preset/kit selection commands) failing with "command did not return a result of type string" when used in `tasks.json` as a command variable. The commands now return the selected preset or kit name instead of a boolean. [#4239](https://github.com/microsoft/vscode-cmake-tools/issues/4239) +- Fix renaming a CMake project creating a duplicate node in the Project Outline instead of replacing the existing one. [#4343](https://github.com/microsoft/vscode-cmake-tools/issues/4343) +- Remove internal stack traces from the Output pane when a subprocess fails. Error messages now show only human-readable information; stack traces are still available in debug-level logging. [#4807](https://github.com/microsoft/vscode-cmake-tools/issues/4807) +- Fix duplicate launch configurations in the ctest debug picker when both `.vscode/launch.json` and a `.code-workspace` file exist. [#4586](https://github.com/microsoft/vscode-cmake-tools/issues/4586) +- Users can now debug with or without launch configurations from the test explorer. `cmake.ctest.neverDebugTestsWithLaunchConfiguration` can be set to `true` to bypass the quick pick menu where the launch configuration is selected. [#4790](https://github.com/microsoft/vscode-cmake-tools/issues/4790) +- Fix `cmake.buildTask` build failures not aborting debug launches. When `${command:cmake.launchTargetPath}` is used in `launch.json`, a failed build now correctly prevents the stale executable from being launched. [#3389](https://github.com/microsoft/vscode-cmake-tools/issues/3389) +- Fix bookmarked targets running a full build instead of building only the specific target when triggered from the Bookmarks view. [#4771](https://github.com/microsoft/vscode-cmake-tools/issues/4771) +- Fix build errors not being added to the Problems tab when using `cmake.buildTask: true`. The build task's pseudoterminal now feeds output to the diagnostic parser so compiler and linker errors are properly surfaced. [#4489](https://github.com/microsoft/vscode-cmake-tools/issues/4489) +- Fix `cmake.compileFile` command truncating long compile commands at ~1024 characters on macOS. The command is now sent to the terminal in chunks to avoid VS Code terminal buffer limitations. [#4470](https://github.com/microsoft/vscode-cmake-tools/issues/4470) +- Fix `cmake.compileFile` truncating compile commands longer than 4096 bytes due to the PTY input buffer limit. The compiler is now spawned directly via `proc.execute()` behind a pseudoterminal, bypassing the shell entirely so argument lists of any length are passed intact. [#4836](https://github.com/microsoft/vscode-cmake-tools/issues/4836) +- Fix changes to files referenced via `include` in CMakePresets.json or CMakeUserPresets.json not being detected until VS Code restart. The file watcher now uniformly handles create events (from atomic writes) on included files, and explicit reconfigure commands always refresh presets from disk. [#4777](https://github.com/microsoft/vscode-cmake-tools/issues/4777) - Fix configure/build sometimes using stale preset values when unsaved changes to included preset files are auto-saved before configure. The extension now explicitly refreshes presets from disk after saving, instead of relying solely on the asynchronous file watcher. [#4502](https://github.com/microsoft/vscode-cmake-tools/issues/4502) +- Fix overly aggressive preset reloading on every build/debug/launch. Preset reapplication now only runs when `cmake.configureOnEdit` is enabled and preset files had unsaved changes, instead of unconditionally re-reading all preset files. [#4792](https://github.com/microsoft/vscode-cmake-tools/issues/4792) - Reduce overly verbose logging when CMake configure or build fails. The Output panel no longer floods with duplicated output, and the channel is only revealed on error rather than unconditionally. [#4749](https://github.com/microsoft/vscode-cmake-tools/issues/4749) - Fix Test Results panel not hyperlinking file paths for GoogleTest failures. The default `cmake.ctest.failurePatterns` now includes a pattern matching GoogleTest's `file:line: Failure` output format. [#4589](https://github.com/microsoft/vscode-cmake-tools/issues/4589) - Fix wrong path created for artifact when parsing code model using CMake File API. [#3015](https://github.com/microsoft/vscode-cmake-tools/issues/3015) - Fix garbled characters (Mojibake) in the Output panel when MSVC outputs UTF-8 (e.g., with `/utf-8`) on non-UTF-8 Windows systems. When `cmake.outputLogEncoding` is `auto`, the build output is now validated as UTF-8 before falling back to the system code page. [#4520](https://github.com/microsoft/vscode-cmake-tools/issues/4520) +- Fix workspace path displayed with a leading slash on Windows when running CMake build tasks. [#4438](https://github.com/microsoft/vscode-cmake-tools/issues/4438) - Fix CMakePresets.json discovery failing in multi-folder workspaces when the presets file is in a subdirectory specified by `cmake.sourceDirectory`. [#4727](https://github.com/microsoft/vscode-cmake-tools/issues/4727) - Fix initial kit scan ignoring `cmake.enableAutomaticKitScan: false` on first workspace open, and prevent redundant concurrent scans in multi-project workspaces. [#4726](https://github.com/microsoft/vscode-cmake-tools/issues/4726) - Fix `cmake.installPrefix` not being passed to CMake as `CMAKE_INSTALL_PREFIX` when using presets. [#4358](https://github.com/microsoft/vscode-cmake-tools/issues/4358) @@ -42,15 +83,22 @@ Bug Fixes: - Fix build/debug/launch target selection not working when `CMAKE_BUILD_TYPE` is not set in the preset or is changed in CMakeLists.txt. [#4219](https://github.com/microsoft/vscode-cmake-tools/issues/4219) - Fix CMake script path links not working in CHS/CSY/FRA/PLK locales due to localized quotes. [#4383](https://github.com/microsoft/vscode-cmake-tools/issues/4383) - Fix user-level tasks defined in `~/.config/Code/User/tasks.json` causing infinite spinner. [#4659](https://github.com/microsoft/vscode-cmake-tools/pull/4659) +- Fix `CMake: Set Build Target` command not showing available targets when using presets with defined targets. [#4509](https://github.com/microsoft/vscode-cmake-tools/issues/4509) - Fix `cmake.compileFile` failing to find compilation info when using presets without `CMAKE_EXPORT_COMPILE_COMMANDS`. [#4484](https://github.com/microsoft/vscode-cmake-tools/issues/4484) - Fix "Copy Value" in CMake debugger copying variable name instead of value. [#4551](https://github.com/microsoft/vscode-cmake-tools/issues/4551) - cmakeDriver: Fixes getCompilerVersion by using compilerPath instead of compilerName. [#4647](https://github.com/microsoft/vscode-cmake-tools/pull/4647) [@lygstate](https://github.com/lygstate) - Add support for Visual Studio 2026 generator. [#4637](https://github.com/microsoft/vscode-cmake-tools/issues/4637) - Fix `$comment` not being accepted inside a cacheVariable object in CMake presets. [#4600](https://github.com/microsoft/vscode-cmake-tools/issues/4600) - Fix kits from `cmake.additionalKits` not being shown when `cmake.showSystemKits` is `false`. [#4651](https://github.com/microsoft/vscode-cmake-tools/issues/4651) +- Fix "Scan for Kits" failing to invoke `vcvarsall.bat` when Visual Studio is installed in a non-ASCII directory path, by forcing the generated batch script to use UTF-8 codepage. [#4623](https://github.com/microsoft/vscode-cmake-tools/issues/4623) [@Sp3EdeR](https://github.com/Sp3EdeR) - Fix how `jobs` is handled in build presets. Also update how `cmake.parallelJobs` is handled as a fallback when a build preset does not define `jobs`. [#4176](https://github.com/microsoft/vscode-cmake-tools/issues/4176) - Fix diagnostics to handle when there isn't a command in the error output. [PR #4765](https://github.com/microsoft/vscode-cmake-tools/pull/4765) - Fix bug in which running "CMake: Build" would always run "CMake: Clean Rebuild" when `cmake.buildTask` is enabled [#4421](https://github.com/microsoft/vscode-cmake-tools/issues/4421) [@RedSkittleFox](https://github.com/RedSkittleFox) +- Fix issue with hover provider not checking for undefined. [#4812](https://github.com/microsoft/vscode-cmake-tools/issues/4812) +- Fix bug in which CTest is unable to run large amount of tests in parallel due to regex exceeding command line length limits [#4829](https://github.com/microsoft/vscode-cmake-tools/issues/4829) [@theuke](https://github.com/theuke) +- Fix malformed devcontainer.json used for working with GitHub Codespaces and similar environments [#4588](https://github.com/microsoft/vscode-cmake-tools/pull/4588) [@kaladron](https://github.com/kaladron) +- Fix hang in `buildWithResult` tool when there isn't a configure preset selected. [#4857](https://github.com/microsoft/vscode-cmake-tools/issues/4857) +- Fix hiding of tests if test suite name and target name are the same when setting "Test Suite Delimiter" to `\` [#4408](https://github.com/microsoft/vscode-cmake-tools/issues/4408) [@ottmar-zittlau](https://github.com/ottmar-zittlau) ## 1.22.28 diff --git a/ThirdPartyNotices.txt b/ThirdPartyNotices.txt index 3b222bd740..5efeb18b5c 100644 --- a/ThirdPartyNotices.txt +++ b/ThirdPartyNotices.txt @@ -17,218 +17,6 @@ required to debug changes to any libraries licensed under the GNU Lesser General --------------------------------------------------------- -before-after-hook 2.2.3 - Apache-2.0 -https://github.com/gr2m/before-after-hook#readme - -Copyright 2018 Gregor Martynus and other contributors - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2018 Gregor Martynus and other contributors. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - ---------------------------------------------------------- - ---------------------------------------------------------- - uglify-js 3.15.5 - BSD-2-Clause https://github.com/mishoo/UglifyJS#readme @@ -270,24 +58,45 @@ SUCH DAMAGE. --------------------------------------------------------- -uri-js 4.4.1 - BSD-2-Clause AND BSD-2-Clause-Views -https://github.com/garycourt/uri-js +fast-uri 3.1.0 - BSD-3-Clause +https://github.com/fastify/fast-uri -(c) 2011 Gary Court Copyright 2011 Gary Court +Copyright (c) 2021-present The Fastify team +Copyright (c) 2011-2021, Gary Court until https://github.com/garycourt/uri-js/commit/a1acf730b4bba3f1097c9f52e7d9d3aba8cdcaae -Copyright 2011 Gary Court. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +Copyright (c) 2011-2021, Gary Court until https://github.com/garycourt/uri-js/commit/a1acf730b4bba3f1097c9f52e7d9d3aba8cdcaae +Copyright (c) 2021-present The Fastify team +All rights reserved. -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +The Fastify team members are listed at https://github.com/fastify/fastify#team. -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * The names of any contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. -THIS SOFTWARE IS PROVIDED BY GARY COURT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of Gary Court. + * * * +The complete list of contributors can be found at: +- https://github.com/garycourt/uri-js/graphs/contributors --------------------------------------------------------- @@ -631,12 +440,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------- -lodash 4.17.21 - CC0-1.0 AND MIT +lodash 4.17.23 - CC0-1.0 AND MIT https://lodash.com/ -Copyright OpenJS Foundation and other contributors +Copyright OpenJS Foundation and other contributors https://openjsf.org Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors -copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors http://underscorejs.org Copyright OpenJS Foundation and other contributors @@ -687,58 +496,6 @@ licenses; we recommend you read them, as their terms may differ from the terms above. ---------------------------------------------------------- - ---------------------------------------------------------- - -anymatch 3.1.2 - ISC -https://github.com/micromatch/anymatch - -Copyright (c) 2019 Elan Shanker, Paul Miller (https://paulmillr.com) - -The ISC License - -Copyright (c) 2019 Elan Shanker, Paul Miller (https://paulmillr.com) - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - ---------------------------------------------------------- - ---------------------------------------------------------- - -deprecation 2.3.1 - ISC -https://github.com/gr2m/deprecation#readme - -Copyright (c) Gregor Martynus and contributors - -The ISC License - -Copyright (c) Gregor Martynus and contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - --------------------------------------------------------- --------------------------------------------------------- @@ -771,32 +528,6 @@ under a Creative Commons Attribution-ShareAlike 4.0 International License https://creativecommons.org/licenses/by-sa/4.0/ ---------------------------------------------------------- - ---------------------------------------------------------- - -glob-parent 6.0.2 - ISC -https://github.com/gulpjs/glob-parent#readme - -Copyright (c) 2015, 2019 Elan Shanker, 2021 Blaine Bublitz , Eric Schoffstall and other contributors - -The ISC License - -Copyright (c) 2015, 2019 Elan Shanker, 2021 Blaine Bublitz , Eric Schoffstall and other contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - --------------------------------------------------------- --------------------------------------------------------- @@ -880,7 +611,7 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. --------------------------------------------------------- -minimatch 3.1.2 - ISC +minimatch 3.1.5 - ISC https://github.com/isaacs/minimatch#readme Copyright (c) Isaac Z. Schlueter and Contributors @@ -1007,24 +738,6 @@ License, as follows: WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------------------------------------------- - ---------------------------------------------------------- - -universal-user-agent 6.0.0 - ISC -https://github.com/gr2m/universal-user-agent#readme - -Copyright (c) 2018, Gregor Martynus (https://github.com/gr2m) - -# [ISC License](https://spdx.org/licenses/ISC) - -Copyright (c) 2018, Gregor Martynus (https://github.com/gr2m) - -Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - --------------------------------------------------------- --------------------------------------------------------- @@ -1257,196 +970,6 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------------------------------------------- - ---------------------------------------------------------- - -@actions/core 1.11.1 - MIT -https://github.com/actions/toolkit/tree/main/packages/core - -Copyright 2019 GitHub - -The MIT License (MIT) - -Copyright 2019 GitHub - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---------------------------------------------------------- - ---------------------------------------------------------- - -@actions/exec 1.1.1 - MIT -https://github.com/actions/toolkit/tree/main/packages/exec - -Copyright 2019 GitHub -Copyright Joyent, Inc. and other Node contributors - -The MIT License (MIT) - -Copyright 2019 GitHub - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---------------------------------------------------------- - ---------------------------------------------------------- - -@actions/github 6.0.1 - MIT -https://github.com/actions/toolkit/tree/main/packages/github - -Copyright 2019 GitHub - -The MIT License (MIT) - -Copyright 2019 GitHub - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---------------------------------------------------------- - ---------------------------------------------------------- - -@actions/http-client 2.0.1 - MIT -https://github.com/actions/toolkit/tree/main/packages/http-client - -Copyright (c) GitHub, Inc. - -Actions Http Client for Node.js - -Copyright (c) GitHub, Inc. - -All rights reserved. - -MIT License - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and -associated documentation files (the "Software"), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT -LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ---------------------------------------------------------- - ---------------------------------------------------------- - -@actions/http-client 2.2.3 - MIT -https://github.com/actions/toolkit/tree/main/packages/http-client - -Copyright (c) GitHub, Inc. - -Actions Http Client for Node.js - -Copyright (c) GitHub, Inc. - -All rights reserved. - -MIT License - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and -associated documentation files (the "Software"), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT -LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ---------------------------------------------------------- - ---------------------------------------------------------- - -@actions/io 1.1.3 - MIT -https://github.com/actions/toolkit/tree/main/packages/io - -Copyright 2019 GitHub - -The MIT License (MIT) - -Copyright 2019 GitHub - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---------------------------------------------------------- - ---------------------------------------------------------- - -@fastify/busboy 2.1.1 - MIT -https://github.com/fastify/busboy#readme - -Copyright Brian White - -Copyright Brian White. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. - -Copyright Brian White. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. - --------------------------------------------------------- --------------------------------------------------------- @@ -1701,270 +1224,7 @@ Copyright (c) NevWare21 and contributors MIT License -Copyright (c) 2022 NevWare21 - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ---------------------------------------------------------- - ---------------------------------------------------------- - -@octokit/auth-token 4.0.0 - MIT -https://github.com/octokit/auth-token.js#readme - -Copyright (c) 2019 Octokit - -The MIT License - -Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ---------------------------------------------------------- - ---------------------------------------------------------- - -@octokit/core 5.2.2 - MIT -https://github.com/octokit/core.js#readme - -Copyright (c) 2019 Octokit contributors - -The MIT License - -Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ---------------------------------------------------------- - ---------------------------------------------------------- - -@octokit/endpoint 9.0.6 - MIT -https://github.com/octokit/endpoint.js#readme - -Copyright (c) 2018 Octokit contributors - -The MIT License - -Copyright (c) 2018 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ---------------------------------------------------------- - ---------------------------------------------------------- - -@octokit/graphql 7.1.1 - MIT -https://github.com/octokit/graphql.js#readme - -Copyright (c) 2018 Octokit contributors - -The MIT License - -Copyright (c) 2018 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ---------------------------------------------------------- - ---------------------------------------------------------- - -@octokit/openapi-types 20.0.0 - MIT -https://github.com/octokit/openapi-types.ts#readme - -Copyright 2020 Gregor Martynus - -Copyright 2020 Gregor Martynus - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---------------------------------------------------------- - ---------------------------------------------------------- - -@octokit/openapi-types 24.2.0 - MIT -https://github.com/octokit/openapi-types.ts#readme - -Copyright (c) 1985 GitHub.com -Copyright 2020 Gregor Martynus - -Copyright 2020 Gregor Martynus - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---------------------------------------------------------- - ---------------------------------------------------------- - -@octokit/plugin-paginate-rest 9.2.2 - MIT -https://github.com/octokit/plugin-paginate-rest.js#readme - -Copyright (c) 2019 Octokit contributors - -MIT License Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ---------------------------------------------------------- - ---------------------------------------------------------- - -@octokit/plugin-rest-endpoint-methods 10.4.1 - MIT -https://github.com/octokit/plugin-rest-endpoint-methods.js#readme - -Copyright (c) 2019 Octokit - -MIT License Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ---------------------------------------------------------- - ---------------------------------------------------------- - -@octokit/request 8.4.1 - MIT -https://github.com/octokit/request.js#readme - -Copyright (c) 2018 Octokit contributors - -The MIT License - -Copyright (c) 2018 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ---------------------------------------------------------- - ---------------------------------------------------------- - -@octokit/request-error 5.1.1 - MIT -https://github.com/octokit/request-error.js#readme - -Copyright (c) 2019 Octokit contributors - -The MIT License - -Copyright (c) 2019 Octokit contributors +Copyright (c) 2022 NevWare21 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -1973,52 +1233,16 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ---------------------------------------------------------- - ---------------------------------------------------------- - -@octokit/types 12.6.0 - MIT -https://github.com/octokit/types.ts#readme - -Copyright (c) 2019 Octokit - -MIT License Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ---------------------------------------------------------- - ---------------------------------------------------------- - -@octokit/types 13.10.0 - MIT -https://github.com/octokit/types.ts#readme - -Copyright (c) 2019 Octokit contributors - -MIT License Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. --------------------------------------------------------- @@ -2077,9 +1301,10 @@ SOFTWARE. --------------------------------------------------------- -ajv 7.2.4 - MIT -https://github.com/ajv-validator/ajv +ajv 8.18.0 - MIT +https://ajv.js.org/ +Copyright (c) 2015-2021 Evgeny Poberezkin The MIT License (MIT) @@ -2233,26 +1458,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------------------------------------------- - ---------------------------------------------------------- - -binary-extensions 2.2.0 - MIT -https://github.com/sindresorhus/binary-extensions#readme - -Copyright (c) 2019 Sindre Sorhus (https://sindresorhus.com), Paul Miller (https://paulmillr.com) - -MIT License - -Copyright (c) 2019 Sindre Sorhus (https://sindresorhus.com), Paul Miller (https://paulmillr.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - --------------------------------------------------------- --------------------------------------------------------- @@ -2285,39 +1490,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------------------------------------------- - ---------------------------------------------------------- - -braces 3.0.3 - MIT -https://github.com/micromatch/braces - -Copyright (c) 2014-present, Jon Schlinkert -Copyright (c) 2019, Jon Schlinkert (https://github.com/jonschlinkert) - -The MIT License (MIT) - -Copyright (c) 2014-present, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - --------------------------------------------------------- --------------------------------------------------------- @@ -2382,39 +1554,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------------------------------------------- - ---------------------------------------------------------- - -chokidar 3.5.3 - MIT -https://github.com/paulmillr/chokidar - -(c) Paul Miller -Copyright (c) 2012-2019 Paul Miller (https://paulmillr.com), Elan Shanker - -The MIT License (MIT) - -Copyright (c) 2012-2019 Paul Miller (https://paulmillr.com), Elan Shanker - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the “Software”), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - --------------------------------------------------------- --------------------------------------------------------- @@ -2574,42 +1713,9 @@ THE SOFTWARE. --------------------------------------------------------- -demangler-js 0.1.7 - MIT -https://github.com/arthurmco/demangler-js#readme - -Copyright (c) Arthur Mendes -Copyright (c) 2018 Arthur Mendes - -MIT License - -Copyright (c) 2018 Arthur Mendes - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - ---------------------------------------------------------- - ---------------------------------------------------------- - es-abstract 1.22.3 - MIT https://github.com/ljharb/es-abstract#readme -(c) Object C Copyright (c) 2015 Jordan Harband The MIT License (MIT) @@ -2732,39 +1838,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------------------------------------------- - ---------------------------------------------------------- - -fill-range 7.1.1 - MIT -https://github.com/jonschlinkert/fill-range - -Copyright (c) 2014-present, Jon Schlinkert -Copyright (c) 2019, Jon Schlinkert (https://github.com/jonschlinkert) - -The MIT License (MIT) - -Copyright (c) 2014-present, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - --------------------------------------------------------- --------------------------------------------------------- @@ -2798,40 +1871,6 @@ SOFTWARE. ---------------------------------------------------------- - ---------------------------------------------------------- - -fsevents 2.3.3 - MIT -https://github.com/fsevents/fsevents - -(c) 2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller -Copyright (c) 2010-2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller - -MIT License ------------ - -Copyright (C) 2010-2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - --------------------------------------------------------- --------------------------------------------------------- @@ -3566,27 +2605,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------------------------------------------- - ---------------------------------------------------------- - -is-binary-path 2.1.0 - MIT -https://github.com/sindresorhus/is-binary-path#readme - -(c) Sindre Sorhus (https://sindresorhus.com), Paul Miller (https://paulmillr.com) -Copyright (c) 2019 Sindre Sorhus (https://sindresorhus.com), Paul Miller (https://paulmillr.com) - -MIT License - -Copyright (c) 2019 Sindre Sorhus (https://sindresorhus.com), Paul Miller (https://paulmillr.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - --------------------------------------------------------- --------------------------------------------------------- @@ -3734,75 +2752,9 @@ Copyright (c) Sindre Sorhus (https://sindresorhus.com) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ---------------------------------------------------------- - ---------------------------------------------------------- - -is-extglob 2.1.1 - MIT -https://github.com/jonschlinkert/is-extglob - -Copyright (c) 2014-2016, Jon Schlinkert -Copyright (c) 2016, Jon Schlinkert (https://github.com/jonschlinkert) - -The MIT License (MIT) - -Copyright (c) 2014-2016, Jon Schlinkert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ---------------------------------------------------------- - ---------------------------------------------------------- - -is-glob 4.0.3 - MIT -https://github.com/micromatch/is-glob - -Copyright (c) 2014-2017, Jon Schlinkert -Copyright (c) 2019, Jon Schlinkert (https://github.com/jonschlinkert) - -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --------------------------------------------------------- @@ -3836,39 +2788,6 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------------------------------------------- - ---------------------------------------------------------- - -is-number 7.0.0 - MIT -https://github.com/jonschlinkert/is-number - -Copyright (c) 2014-present, Jon Schlinkert -Copyright (c) 2018, Jon Schlinkert (https://github.com/jonschlinkert) - -The MIT License (MIT) - -Copyright (c) 2014-present, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - --------------------------------------------------------- --------------------------------------------------------- @@ -4278,39 +3197,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------------------------------------------- - ---------------------------------------------------------- - -normalize-path 3.0.0 - MIT -https://github.com/jonschlinkert/normalize-path - -Copyright (c) 2014-2018, Jon Schlinkert -Copyright (c) 2018, Jon Schlinkert (https://github.com/jonschlinkert) - -The MIT License (MIT) - -Copyright (c) 2014-2018, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - --------------------------------------------------------- --------------------------------------------------------- @@ -4494,39 +3380,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------------------------------------------- - ---------------------------------------------------------- - -picomatch 2.3.1 - MIT -https://github.com/micromatch/picomatch - -Copyright (c) 2017-present, Jon Schlinkert -Copyright (c) 2017-present, Jon Schlinkert (https://github.com/jonschlinkert) - -The MIT License (MIT) - -Copyright (c) 2017-present, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - --------------------------------------------------------- --------------------------------------------------------- @@ -4547,70 +3400,6 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------------------------------------------- - ---------------------------------------------------------- - -punycode 2.1.1 - MIT -https://mths.be/punycode - -Copyright Mathias Bynens - -Copyright Mathias Bynens - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ---------------------------------------------------------- - ---------------------------------------------------------- - -readdirp 3.6.0 - MIT -https://github.com/paulmillr/readdirp - -Copyright (c) 2012-2019 Thorsten Lorenz, Paul Miller (https://paulmillr.com) -Copyright (c) 2012-2019 Thorsten Lorenz, Paul Miller - -MIT License - -Copyright (c) 2012-2019 Thorsten Lorenz, Paul Miller (https://paulmillr.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - --------------------------------------------------------- --------------------------------------------------------- @@ -5031,71 +3820,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------------------------------------------- - ---------------------------------------------------------- - -to-regex-range 5.0.1 - MIT -https://github.com/micromatch/to-regex-range - -Copyright (c) 2015-present, Jon Schlinkert -Copyright (c) 2019, Jon Schlinkert (https://github.com/jonschlinkert) - -The MIT License (MIT) - -Copyright (c) 2015-present, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ---------------------------------------------------------- - ---------------------------------------------------------- - -tunnel 0.0.6 - MIT -https://github.com/koichik/node-tunnel/ - -Copyright (c) 2012 Koichi Kobayashi - -The MIT License (MIT) - -Copyright (c) 2012 Koichi Kobayashi - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - --------------------------------------------------------- --------------------------------------------------------- @@ -5256,65 +3980,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------------------------------------------- - ---------------------------------------------------------- - -undici 5.29.0 - MIT -https://undici.nodejs.org/ - -Copyright (c) 2020 Ethan Arrowood -Copyright (c) 2016 Luigi Pinca and contributors -Copyright (c) 2013 Arnout Kazemier and contributors -Copyright (c) Matteo Collina and Undici contributors -Copyright (c) 2011 Einar Otto Stangvik - -MIT License - -Copyright (c) Matteo Collina and Undici contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -MIT License - -Copyright (c) 2020 Ethan Arrowood - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - --------------------------------------------------------- --------------------------------------------------------- diff --git a/docs/cmake-settings.md b/docs/cmake-settings.md index b13e85762d..7c09926ce8 100644 --- a/docs/cmake-settings.md +++ b/docs/cmake-settings.md @@ -8,7 +8,7 @@ Options that support substitution, in the table below, allow variable references | Setting | Description | Default value | Supports substitution | |---------|---------|---------|-----| -| `cmake.additionalCompilerSearchDirs`| List of paths to search for additional compilers, like a MinGW installation. This means that GCC does not need to be on your `$PATH` for it to be found via kit scanning. For example: `["C:\\MinGW\\bin"]` (Search in C:\MinGW\bin for a MinGW installation) | `[]` | no | +| `cmake.additionalCompilerSearchDirs`| List of paths to search for additional compilers, like a MinGW installation. This means that GCC does not need to be on your `$PATH` for it to be found via kit scanning. For example: `["C:\\MinGW\\bin"]` (Search in C:\MinGW\bin for a MinGW installation) | `[]` | yes | | `cmake.additionalKits` | Array of paths to custom kit files. These are in addition to the default kit files. | `[]` | no | | `cmake.allowCommentsInPresetsFile` | Allow the use of JSON extensions such as comments in CMakePresets.json. Please note that your CMakePresets.json file may be considered invalid by other IDEs or on the command line if you use non-standard JSON. | `false` | no | | `cmake.allowUnsupportedPresetsVersions` | Enables the use of presets files that are using features from the versions that Cmake Tools extension doesn't currently support. Unknown properties and macros will be ignored. | `false` | no | @@ -30,11 +30,12 @@ Options that support substitution, in the table below, allow variable references | `cmake.configureOnOpen` | Automatically configure CMake project directories when they are opened. | `true` | no | | `cmake.configureSettings` | An object containing `key:value` pairs, which will be passed to CMake when configuring. The same as passing `-DVAR_NAME=ON` via `cmake.configureArgs`. NOTE: Semicolons (`;`) in string values are automatically escaped to prevent CMake from interpreting them as list separators. If you want to pass a CMake list, use array notation instead, e.g. `"MY_LIST": [ "a", "b" ]`. | `{}` (no values) | yes | | `cmake.copyCompileCommands`| If not `null`, copies the `compile_commands.json` file generated by CMake to the path specified by this setting whenever CMake successfully configures. | `null` (do not copy the file) | yes | +| `cmake.postConfigureTask`| If not `null`, the task with this name is executed whenever CMake successfully configures. | `null` (do not run any task) | yes | | `cmake.coverageInfoFiles` | LCOV coverage info files to be processed after running tests with coverage using the test explorer. | `[]` | yes | | `cmake.cpackArgs` | An array of additional arguments to pass to cpack. | `[]` | yes | | `cmake.cpackEnvironment` | An object containing `key:value` pairs of environment variables, which will be available when running cpack. | `{}` | yes | | `cmake.cpackPath` | Path to cpack executable. | `null` | no | -| `cmake.ctest.allowParallelJobs` | If `true`, allow running test jobs in parallel. | `false` | no | +| `cmake.ctest.allowParallelJobs` | If `true`, allow running test jobs in parallel. When `false`, tests run sequentially in alphabetical order, matching the Test Explorer display order. | `false` | no | | `cmake.ctest.debugLaunchTarget` | Target to debug during CTest execution. | `null` | no | | `cmake.ctest.parallelJobs` | Specify the number of jobs to run in parallel for ctest. Using the value `0` will detect and use the number of CPUs. Using the value `1` will disable test parallelism. | `0` | no | | `cmake.ctest.testExplorerIntegrationEnabled` | If `true`, configure CMake to generate information needed by the test explorer. | `true` | no | @@ -42,12 +43,13 @@ Options that support substitution, in the table below, allow variable references | `cmake.ctestArgs` | An array of additional arguments to pass to CTest. | `[]` | yes | | `cmake.ctestDefaultArgs` | Default arguments to pass to CTest. | `["-T", "test", "--output-on-failure"]` | no | | `cmake.ctestPath` | Path to CTest executable. | `null` | no | -| `cmake.debugConfig`| The debug configuration to use when debugging a target | `null` (no values) | yes | +| `cmake.debugConfig`| The debug configuration to use when debugging a target. When `type` is specified, automatic debugger detection is skipped and a custom debug adapter can be used. Additional properties required by the debug adapter can be added freely. See [Debug and launch](debug-launch.md#customize-the-debug-adapter) for examples, including Natvis via `visualizerFile` without a `launch.json`. | `null` (no values) | yes | | `cmake.defaultActiveFolder`| The name of active folder, which be used as default (Only works when `cmake.autoSelectActiveFolder` is disabled). | `""` | no | | `cmake.defaultVariants` | Override the default set of variants that will be supplied when no variants file is present. See [CMake variants](variants.md). | See package.json | no | | `cmake.deleteBuildDirOnCleanConfigure` | If `true`, delete build directory during clean configure. | `false` | no | | `cmake.emscriptenSearchDirs` | List of paths to search for Emscripten. | `[]` | no | | `cmake.enableAutomaticKitScan` | Enable automatic kit scanning. | `true` | no | +| `cmake.removeStaleKitsOnScan` | If `true`, a full **Scan for Kits** run removes compiler-based kits from `cmake-tools-kits.json` when they are no longer rediscovered. This is useful after compiler upgrades that leave older versions installed outside `PATH`. Set `"keep": true` in a kit entry to preserve it. This setting does not affect **Scan recursively for kits in specific directories**. | `false` | no | | `cmake.enabledOutputParsers` | List of enabled output parsers. | `["cmake", "gcc", "gnuld", "msvc", "ghs", "diab", "iwyu"]` | no | | `cmake.additionalBuildProblemMatchers` | Array of user-defined problem matchers for build output. Each entry has `name`, `regexp`, and optional capture group indices (`file`, `line`, `column`, `severity`, `message`, `code`). See [Additional Build Problem Matchers](#additional-build-problem-matchers) below. | `[]` | no | | `cmake.enableLanguageServices` | If `true`, enable CMake language services. | `true` | no | @@ -64,9 +66,19 @@ Options that support substitution, in the table below, allow variable references | `cmake.loggingLevel` | A string setting that specifies how much output CMake Tools produces in its output channel. Set to one of `"trace"`, `"debug"`, `"info"`, `"note"`, `"warning"`, `"error"`, or `"fatal"`. `"trace"` is the most verbose.

Regardless of the logging level, CMake Tools writes all levels of logging to the CMake Tools log file. This file is useful if you need to [troubleshoot CMake Tools](troubleshoot.md) | `"info"` | no | | `cmake.mergedCompileCommands` | Path where to create a merged compile_commands.json file. | `null` | no | | `cmake.mingwSearchDirs` | **DEPRECATED**. List of paths to search for MinGW. Use `cmake.additionalCompilerSearchDirs` instead. | `[]` | no | +| `cmake.modifyLists.addNewSourceFiles` | Add source files to CMake lists when they are created. `"no"` disables, `"yes"` applies automatically, `"ask"` shows a preview of proposed changes to apply. | `"ask"` | no | +| `cmake.modifyLists.removeDeletedSourceFiles` | Remove source files from CMake lists when they are deleted. `"no"` disables, `"yes"` applies automatically, `"ask"` shows a preview of proposed changes to apply. | `"ask"` | no | +| `cmake.modifyLists.variableSelection` | How to choose which `set()` or `list(APPEND/PREPEND/INSERT)` command invocation to edit when adding source files to CMake lists. | `"never"` | no | +| `cmake.modifyLists.sourceVariables` | Variables to add source files to. Variables appearing earlier in this list will be given higher priority. Only used if `cmake.modifyLists.variableSelection` is not `"never"`. Supports glob patterns. | `["SRC", "SRCS", "SOURCES", "SOURCE_FILES", "*_SRC", "*_SRCS", "*_SOURCES", "*_SOURCE_FILES"]` | no | +| `cmake.modifyLists.targetSelection` | How to choose which target to add new source files to when adding source files to CMake lists. | `"askParentSourceDirs"` | no | +| `cmake.modifyLists.targetCommandInvocationSelection` | How to choose which of a target's source command invocations to edit when adding source files to CMake lists. | `"askParentDirs"` | no | +| `cmake.modifyLists.targetSourceCommands` | Commands to treat as target source commands when adding source files to CMake lists. Commands appearing earlier in this list will be given higher priority. Supports glob patterns. | `["target_sources", "add_executable", "add_library"]` | no | +| `cmake.modifyLists.scopeSelection` | How to choose which of a target's visibility scopes, file sets, or source keyword parameters to edit when adding source files to CMake lists. | `"ask"` | no | +| `cmake.modifyLists.sourceListKeywords` | Keyword arguments to user-defined functions and macros which introduce lists of source files. If left empty, all arguments consisting of only upper-case letters and underscores will be considered. Supports glob patterns. | `[]` | no | | `cmake.options.advanced` | Advanced options for CMake Tools. | See package.json | no | | `cmake.options.statusBarVisibility` | Controls visibility of the status bar. | `hidden` | no | | `cmake.outputLogEncoding` | Encoding to use for tool output. | `auto` | no | +| `cmake.outlineViewType` | Project Outline View`s type. | `["list", "tree"]` | no | | `cmake.parallelJobs` | Specify the number of jobs run in parallel during the build. Using the value `0` will detect and use the number of CPUs. Using the value `1` will disable build parallelism. | `0` | no | | `cmake.parseBuildDiagnostics` | If `true`, parse compiler output for diagnostics. | `true` | no | | `cmake.pinnedCommands` | List of commands pinned to the command palette. | `["workbench.action.tasks.configureTaskRunner", "workbench.action.tasks.runTask"]` | no | @@ -74,7 +86,7 @@ Options that support substitution, in the table below, allow variable references | `cmake.postRunCoverageTarget` | Target to build after running tests with coverage using the test explorer. | `null` | no | | `cmake.preferredGenerators` | A list of strings of generator names to try, in order, when configuring a CMake project for the first time. | `[]` | no | | `cmake.preRunCoverageTarget` | Target to build before running tests with coverage using the test explorer. | `null` | no | -| `cmake.revealLog` | Controls when the CMake output log should be revealed. | `always` | no | +| `cmake.revealLog` | Controls when the CMake output log should be revealed. Possible values: `focus` (show the log and move focus to the output channel), `always` (show the log but do not move focus), `never` (do not show the log), `error` (show the log only when an error occurs). | `always` | no | | `cmake.saveBeforeBuild` | If `true` (the default), saves open text documents when build or configure is invoked before running CMake. | `true` | no | | `cmake.setBuildTargetSameAsLaunchTarget` | If `true`, setting the launch/debug target automatically sets the build target to match. | `false` | no | | `cmake.setBuildTypeOnMultiConfig` | If `true`, set build type on multi-config generators. | `false` | no | @@ -93,7 +105,22 @@ Options that support substitution, in the table below, allow variable references ## Variable substitution -Some settings support the replacement of special values in their string value by using a `${variable}` syntax. The following built-in variables are expanded: +Some settings support the replacement of special values in their string value by using a `${variable}` syntax. + +### Where substitution works + +Use this quick rule to avoid confusion: + +- CMake Tools `${...}` variables in this section (for example `${buildKit}` and `${generator}`) are expanded only when CMake Tools reads supported `cmake.*` settings from `settings.json`. +- Generic VS Code `tasks.json` and `launch.json` fields are resolved by VS Code, not by CMake Tools. In those fields, use VS Code variables (for example `${workspaceFolder}`) or command substitutions such as `${command:cmake.buildKit}`. +- `${config:cmake.*}` in `tasks.json`/`launch.json` returns the raw setting value. It does not apply a second CMake Tools substitution pass. + +Example: + +- In a shell task command, `${buildKit}` and `${generator}` are not expanded. +- In a shell task command, `${command:cmake.buildKit}` is expanded. + +The following built-in variables are expanded in supported `cmake.*` settings only. None of these are expanded in generic VS Code shell or process task commands. Use the `${command:cmake.*}` forms listed under [Command substitution](#command-substitution) for those contexts. | Variable | Expansion | |---------|---------| @@ -125,7 +152,9 @@ Variant options are expanded using the `${variant:VARIANTNAME}` syntax, where th ### Command substitution -CMake Tools can expand VS Code commands. For example, you can expand the path to the launch target by using the syntax `${command:cmake.launchTargetPath}` +CMake Tools can expand VS Code commands. For example, you can expand the path to the launch target by using the syntax `${command:cmake.launchTargetPath}`. + +This form is the recommended way to get CMake Tools values in generic `tasks.json` or `launch.json` fields. Be careful with long-running commands because it isn't specified when, or how many times, CMake Tools will execute a command for a given expansion. @@ -152,6 +181,17 @@ Supported commands for substitution: |`cmake.activeBuildPresetName`|The name of the active build preset.| |`cmake.activeTestPresetName`|The name of the active test preset.| +### Test debug placeholders + +The following placeholders are available in launch.json debug configurations used to debug CTest tests from the Test Explorer. See [Debugging tests](debug-launch.md#debugging-tests) for full examples. + +|Placeholder|Expansion| +|-----------|---------| +|`${cmake.testProgram}`|The full path to the test executable.| +|`${cmake.testArgs}`|The command-line arguments for the test.| +|`${cmake.testWorkingDirectory}`|The working directory for the test.| +|`${cmake.testEnvironment}`|The environment variables set via the CTest `ENVIRONMENT` test property (e.g., from `set_tests_properties(... PROPERTIES ENVIRONMENT "A=B;C=D")`). Replaced with an array of `{ "name": "...", "value": "..." }` objects suitable for launch.json.| + ## Additional build problem matchers The `cmake.additionalBuildProblemMatchers` setting lets you define custom problem matchers that are applied to build output. This is useful when you integrate tools like **clang-tidy**, **PCLint Plus**, **cppcheck**, or custom scripts into your CMake build via `add_custom_command` or `add_custom_target`. Diagnostics from these tools will appear in the VS Code **Problems** pane alongside the standard compiler errors. diff --git a/docs/configure.md b/docs/configure.md index 41f4659e7a..f3f548a1fd 100644 --- a/docs/configure.md +++ b/docs/configure.md @@ -56,6 +56,12 @@ A clean configure is required for certain build system changes, such as when the CMake Tools will do a clean configure automatically if you change the active kit. +## Full clean configure + +To get CMake Tools to do a full clean configure, run **CMake: Delete Build Directory and Reconfigure** from the command palette in VS Code. + +A full clean configure deletes the entire build directory before reconfiguring. This goes beyond the standard clean configure by removing all build artifacts, not just CMake's cache and internal files. This is useful when CMake reuses stale build artifacts that cause unexpected errors, or when third-party tools write extra files into the build directory. + ## Configure with CMake Debugger In order to investigate errors with Configuring your CMake project, you can add breakpoints in your CMakeLists.txt and .cmake files and run **CMake: Configure with CMake Debugger** from the command palette in VS Code. diff --git a/docs/debug-launch.md b/docs/debug-launch.md index 028ece54b2..48e4a2a6b9 100644 --- a/docs/debug-launch.md +++ b/docs/debug-launch.md @@ -30,7 +30,7 @@ From there, you can press the play button by the `Launch` node to run it in term CMake Tools lets you start a debugger on a target without creating a `launch.json`. > **Note:** -> Only the debugger from Microsoft's `vscode-ms-vscode.cpptools` extension supports quick-debugging. See [Debug using a launch.json file](#debug-using-a-launchjson-file), below, for information about `launch.json` and using other debuggers. +> By default, quick-debugging auto-detects the debugger from the CMake cache and uses Microsoft's `vscode-ms-vscode.cpptools` debug adapters (`cppdbg` / `cppvsdbg`). To use a different debug adapter, see [Customize the debug adapter](#customize-the-debug-adapter) below. Start a debugging session on the active target by running the *CMake: Debug* command from the VS Code command palette, by selecting the Debug button in the status bar or CMake Tools sidebar Project Status View, or by pressing the keyboard shortcut (the default is **Shift+F5**). @@ -39,6 +39,53 @@ Start a debugging session on the active target by running the *CMake: Debug* com > **Note:** > Quick-debugging does not let you specify program arguments or other debugging options. See the next section for more options. +## Customize the debug adapter + +You can use any debug adapter with CMake Tools quick-debugging by setting the `type` property in the `cmake.debugConfig` setting. When `type` is specified, CMake Tools skips automatic debugger detection and builds a minimal launch configuration from the selected target, then merges in all properties from `cmake.debugConfig`. This lets you use adapters like `lldb`, `codelldb`, or any other installed debug extension without creating a `launch.json`. + +Add the following to your `.vscode/settings.json`: + +```jsonc +{ + "cmake.debugConfig": { + "type": "lldb", // any installed debug adapter type + "request": "launch", + "stopOnEntry": false + } +} +``` + +Then run **CMake: Debug Target** from the command palette. CMake Tools will automatically fill in `program`, `cwd`, and `name` from the selected target, and apply your settings on top. Any property recognized by the debug adapter can be added to `cmake.debugConfig`. + +### Use Natvis without a launch.json + +If you use the cpptools debug adapters (`cppvsdbg` or `cppdbg`), you can provide custom Natvis files directly in `cmake.debugConfig` via `visualizerFile`. + +Add this to your `.vscode/settings.json`: + +```jsonc +{ + "cmake.debugConfig": { + "visualizerFile": "${workspaceFolder}/.vscode/types.natvis" + } +} +``` + +You can also specify multiple Natvis files: + +```jsonc +{ + "cmake.debugConfig": { + "visualizerFile": [ + "${workspaceFolder}/.vscode/base.natvis", + "${workspaceFolder}/.vscode/project.natvis" + ] + } +} +``` + +If you omit `type`, CMake Tools falls back to the original behavior: auto-detecting `cppdbg` or `cppvsdbg` from the CMake cache. + ## Debug using a launch.json file You can specify the working directory or command line arguments for debugging, or use another debugger than the one included with Microsoft's `vscode-ms-vscode.cpptools`, by creating a `launch.json` file. @@ -268,7 +315,9 @@ You can also construct launch.json configurations that allow you to debug tests > These launch.json configurations are to be used specifically from the UI of the Test Explorer. The easiest way to do this is to construct the debug configuration using `cmake.testProgram` for the `program` field, `cmake.testArgs` for -the `args` field, and `cmake.testWorkingDirectory` for the `cwd` field. +the `args` field, `cmake.testWorkingDirectory` for the `cwd` field, and `cmake.testEnvironment` for the `environment` field. + +`cmake.testEnvironment` resolves to the environment variables set via the CTest `ENVIRONMENT` test property (e.g., from `set_tests_properties(... PROPERTIES ENVIRONMENT "A=B;C=D")`). It is replaced with an array of `{ "name": "...", "value": "..." }` objects suitable for launch.json. A couple of examples: @@ -283,6 +332,7 @@ A couple of examples: "cwd": "${cmake.testWorkingDirectory}", "program": "${cmake.testProgram}", "args": [ "${cmake.testArgs}"], + "environment": "${cmake.testEnvironment}", } ``` ### msvc @@ -295,6 +345,7 @@ A couple of examples: // Resolved by CMake Tools: "program": "${cmake.testProgram}", "args": [ "${cmake.testArgs}"], + "environment": "${cmake.testEnvironment}", } ``` diff --git a/docs/faq.md b/docs/faq.md index ebb1592120..c16f1d27a1 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -12,6 +12,18 @@ Please visit [the end-user support chat](https://gitter.im/vscode-cmake-tools/su If you're having issues with CMake itself, view the [Kitware CMake Forum](https://gitlab.kitware.com/cmake/community) or [Kitware CMake issues](https://gitlab.kitware.com/cmake/cmake/-/issues) +## How can I detect when CMake is run from VS Code? + +CMake Tools automatically sets the `VSCODE_CMAKE_TOOLS` environment variable to `1` for all subprocesses that it spawns, including configure, build, and test commands. You can check for this variable in your `CMakeLists.txt` to detect if the current CMake invocation is being run from the CMake Tools extension: + +```cmake +if(DEFINED ENV{VSCODE_CMAKE_TOOLS}) + message(STATUS "CMake is being run from VS Code CMake Tools extension") +endif() +``` + +> **Note:** To see `message()` output from your CMakeLists.txt in the CMake Tools output channel, set [`cmake.loggingLevel`](cmake-settings.md) to `"debug"` in your VS Code settings. + ## How do I learn about CMake? CMake Tools is not the same as CMake. There are many great resources around to learn how to use CMake. diff --git a/docs/kits.md b/docs/kits.md index 90a6d7a68f..ee30128471 100644 --- a/docs/kits.md +++ b/docs/kits.md @@ -59,7 +59,9 @@ Update [user-local kits](#user-local-kits) by running **Scan for Kits** from the - The [user-local kit](#user-local-kits) `cmake-tools-kits.json` file is updated with the new kit information. > **Warning:** -> The name of each kit is generated from the kit compiler and version information. Kits with the same name will be overwritten. To prevent custom kits from being overwritten, give them unique names. CMake Tools will not delete entries from `cmake-tools-kits.json`. It only adds and updates existing ones. +> The name of each kit is generated from the kit compiler and version information. Kits with the same name will be overwritten. To prevent custom kits from being overwritten, give them unique names. +> +> By default, scans preserve existing entries in `cmake-tools-kits.json`. If `cmake.removeStaleKitsOnScan` is enabled, compiler-based kits (those with a `compilers` field) that are no longer rediscovered during a full scan are removed automatically. Set `"keep": true` in a kit entry to preserve it even when this cleanup is enabled. Kits without a `compilers` field (toolchain-only kits and Visual Studio kits) are always preserved. ## Kit options @@ -110,7 +112,8 @@ CMake Tools automatically sets up the environment for working with Visual C++. I { "name": "A Visual Studio", "visualStudio": "Visual Studio Build Tools 2017", - "visualStudioArchitecture": "amd64" + "visualStudioArchitecture": "amd64", + "visualStudioArguments": ["uwp", "10.0.10240.0"] } ] ``` @@ -118,6 +121,7 @@ CMake Tools automatically sets up the environment for working with Visual C++. I Keys: > `visualStudio` : the name of a Visual Studio installation obtained by `VSWhere`.\ > `visualStudioArchitecture`: the Visual Studio target architecture that would be passed to the `vcvarsall.bat` file when entering the VS dev environment. +> `visualStudioArguments`: the extra arguments that would be passed to the `vcvarsall.bat` file when entering the VS dev environment, those arguments are `[platform_type] [winsdk_version] [-vcvars_ver=vc_version] [-vcvars_spectre_libs=spectre_mode]` > **Note:** > To use Visual C++, both `visualStudio` and `visualStudioArchitecture` must be specified. Omitting either one won't work. @@ -151,6 +155,32 @@ The following additional options may be specified: > This setting is most useful when the toolchain file respects additional options that can be passed as cache variables. +> **Semicolon Handling:** +> +> CMake uses semicolons as list separators. The type of value you use determines how semicolons are handled: +> +> - **String values**: Semicolons are **escaped** (`;` → `\;`) to prevent CMake from treating them as list separators. Use this for single values that happen to contain semicolons. +> +> - **Array values**: Elements are joined with semicolons **without escaping**, producing a proper CMake list. Use this when you intentionally want to pass a CMake list. +> +> **Example - Passing a CMake list (use array notation):** +> ```jsonc +> "cmakeSettings": { +> // Array notation → semicolons NOT escaped → creates CMake list +> "LLVM_ENABLE_PROJECTS": ["clang", "lld"] +> // Produces: -DLLVM_ENABLE_PROJECTS:STRING=clang;lld +> } +> ``` +> +> **Example - String with semicolons escaped:** +> ```jsonc +> "cmakeSettings": { +> // String notation → semicolons ARE escaped → treated as single value +> "MY_VAR": "value;with;semicolons" +> // Produces: -DMY_VAR:STRING=value\;with\;semicolons +> } +> ``` + `environmentVariables` > A JSON object of key-value pairs specifying additional environment variables to be defined when using this kit. @@ -160,6 +190,40 @@ The following additional options may be specified: > The absolute path to a script or a string in form of `"script path" [arg ...]`that modifies/adds environment variables for the kit. Uses `call` on Windows and `source` in `bash` otherwise. +### Kit environment and CMake executable resolution + +When using kits mode (not CMake Presets), the active kit's environment—including variables set via `environmentSetupScript` and `environmentVariables`—influences how CMake Tools resolves the CMake executable path: + +1. **Auto discovery (`cmake.cmakePath: auto` or `cmake`):** + The active kit's `PATH` is searched first before falling back to the system `PATH`. This allows a kit's setup script to prepend a custom directory containing a CMake binary, and that binary will be discovered and used. + +2. **Environment variable substitution:** + If `cmake.cmakePath` uses `${env:VARIABLE_NAME}` syntax, the substitution resolves to values from the active kit's environment. For example, if a kit defines `MY_CMAKE_PATH` via `environmentVariables` or `environmentSetupScript`, you can set `"cmake.cmakePath": "${env:MY_CMAKE_PATH}/cmake"` and it will resolve using the kit-provided value. + +**Example:** + +In `.vscode/cmake-kits.json`, define the environment variable in the kit: +```json +[ + { + "name": "Cross-Compile Kit", + "environmentSetupScript": "${workspaceFolder}/scripts/setup.sh", + "environmentVariables": { + "MY_CMAKE_PATH": "/custom/cmake/path" + } + } +] +``` + +In `.vscode/settings.json`, reference the variable (do not define it here): +```json +{ + "cmake.cmakePath": "${env:MY_CMAKE_PATH}/cmake" +} +``` + +When this kit is selected, `cmake.cmakePath` will resolve to `/custom/cmake/path/cmake` using the kit's environment variable. Environment variables are resolved from the active kit's context, not from workspace settings. + `description` > A short description of the kit, which will appear next to its name in the selection menu. diff --git a/docs/tasks.md b/docs/tasks.md index 06c60c3810..c6559d787c 100644 --- a/docs/tasks.md +++ b/docs/tasks.md @@ -3,6 +3,18 @@ You can create a configure task from the VS Code command pallette by running the ![Configure a task](images/configure_task.png) +## Variable substitution in `tasks.json` + +When authoring generic VS Code shell/process tasks, `${buildKit}` and `${generator}` are not expanded because those are CMake Tools setting substitutions, not VS Code task variables. + +Use command substitutions in `tasks.json` instead: + +- `${command:cmake.buildKit}` for the active kit name. +- `${command:cmake.buildType}` for the active build type. +- `${command:cmake.tasksBuildCommand}` for a full CMake build command. + +If you use `${config:cmake.configureArgs}` in `tasks.json`, VS Code returns the configured value as-is. CMake Tools substitution is not applied again in that context. + By selecting "CMake: configure" template, if you are not using presets, this task will be generated in `tasks.json` file: diff --git a/gulpfile.js b/gulpfile.js index a7f3629fc5..cd0d8ab65c 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -6,7 +6,7 @@ 'use strict'; const gulp = require('gulp'); -const eslint = require('gulp-eslint'); +const eslint = require('gulp-eslint-new'); const fs = require('fs'); const nls = require('vscode-nls-dev'); const path = require('path'); @@ -318,7 +318,7 @@ const lintReporter = results => { gulp.task('lint', function () { // Un-comment these parts for applying auto-fix. return gulp.src(allTypeScript) - .pipe(eslint({ configFile: ".eslintrc.js" /*, fix: true */})) + .pipe(eslint({ overrideConfigFile: ".eslintrc.js" /*, fix: true */})) .pipe(eslint.format(lintReporter, process.stderr)) //.pipe(gulp.dest(file => file.base)) .pipe(eslint.failAfterError()); diff --git a/i18n/chs/assets/policies.json.i18n.json b/i18n/chs/assets/policies.json.i18n.json new file mode 100644 index 0000000000..0c6a814844 --- /dev/null +++ b/i18n/chs/assets/policies.json.i18n.json @@ -0,0 +1,212 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "assets/policies.json.CMP0000": "必须指定所需的最低 CMake 版本。", + "assets/policies.json.CMP0001": "不应再使用 CMAKE_BACKWARDS_COMPATIBILITY。", + "assets/policies.json.CMP0002": "逻辑目标名称必须全局唯一。", + "assets/policies.json.CMP0003": "通过完整路径链接的库不再生成链接器搜索路径。", + "assets/policies.json.CMP0004": "链接的库名称不能有前导或尾随空格。", + "assets/policies.json.CMP0005": "预处理器定义值现在会自动转义。", + "assets/policies.json.CMP0006": "安装 MACOSX_BUNDLE 目标时需要指定 BUNDLE DESTINATION。", + "assets/policies.json.CMP0007": "list 命令不再忽略空元素。", + "assets/policies.json.CMP0008": "通过完整路径链接的库必须具有有效的库文件名。", + "assets/policies.json.CMP0009": "默认情况下,FILE GLOB_RECURSE 调用不应遵循符号链接。", + "assets/policies.json.CMP0010": "错误的变量引用语法会导致报错。", + "assets/policies.json.CMP0011": "引入的脚本会自动执行 cmake_policy PUSH 和 POP。", + "assets/policies.json.CMP0012": "如果识别数字和布尔常量。", + "assets/policies.json.CMP0013": "不允许使用重复的二进制目录。", + "assets/policies.json.CMP0014": "输入目录必须包含 CMakeLists.txt。", + "assets/policies.json.CMP0015": "link_directories 将路径视为相对于源目录的路径。", + "assets/policies.json.CMP0016": "如果 target_link_libraries 的唯一参数不是目标,则报错。", + "assets/policies.json.CMP0017": "从 CMake 模块目录引入文件时,优先使用该目录下的文件。", + "assets/policies.json.CMP0018": "忽略 CMAKE_SHARED_LIBRARY__FLAGS 变量。", + "assets/policies.json.CMP0019": "不会在 include 和 link 信息中重新展开变量。", + "assets/policies.json.CMP0020": "在 Windows 上自动将 Qt 可执行文件链接到 qtmain 目标。", + "assets/policies.json.CMP0021": "INCLUDE_DIRECTORIES 目标属性中的相对路径导致致命错误。", + "assets/policies.json.CMP0022": "INTERFACE_LINK_LIBRARIES 定义链接接口。", + "assets/policies.json.CMP0023": "target_link_libraries 普通签名和关键字签名不能混用。", + "assets/policies.json.CMP0024": "不允许包含导出结果。", + "assets/policies.json.CMP0025": "Apple Clang 的编译器 ID 现为 AppleClang。", + "assets/policies.json.CMP0026": "不允许对编译目标使用 LOCATION 属性。", + "assets/policies.json.CMP0027": "条件性链接的导入目标,但缺少 include 目录。", + "assets/policies.json.CMP0028": "目标名称中的双冒号表示 ALIAS 或 IMPORTED 目标。", + "assets/policies.json.CMP0029": "不应调用 subdir_depends 命令。", + "assets/policies.json.CMP0030": "不应调用 use_mangled_mesa 命令。", + "assets/policies.json.CMP0031": "不应调用 load_command 命令。", + "assets/policies.json.CMP0032": "不应调用 output_required_files 命令。", + "assets/policies.json.CMP0033": "不应调用 export_library_dependencies 命令。", + "assets/policies.json.CMP0034": "不应调用 utility_source 命令。", + "assets/policies.json.CMP0035": "不应调用 variable_requires 命令。", + "assets/policies.json.CMP0036": "不应调用 build_name 命令。", + "assets/policies.json.CMP0037": "目标名称不应为保留名称,且应符合有效性模式。", + "assets/policies.json.CMP0038": "目标不能直接链接到自身。", + "assets/policies.json.CMP0039": "实用工具目标不能有链接依赖项。", + "assets/policies.json.CMP0040": "add_custom_command 的 TARGET 签名中的目标必须存在,并且必须在当前目录中定义。", + "assets/policies.json.CMP0041": "生成器表达式中使用相对 include 路径时出错。", + "assets/policies.json.CMP0042": "默认启用 MACOSX_RPATH。", + "assets/policies.json.CMP0043": "忽略 COMPILE_DEFINITIONS_ 属性", + "assets/policies.json.CMP0044": "区分大小写的 _COMPILER_ID 生成器表达式", + "assets/policies.json.CMP0045": "get_target_property 中存在错误,指定的目标不存在。", + "assets/policies.json.CMP0046": "add_dependencies 中存在错误,指定的依赖项不存在。", + "assets/policies.json.CMP0047": "针对 QNX 上的 qcc 驱动程序使用 QCC 编译器 ID。", + "assets/policies.json.CMP0048": "project 命令将管理 VERSION 变量。", + "assets/policies.json.CMP0049": "不会在目标源条目中展开变量。", + "assets/policies.json.CMP0050": "不允许 add_custom_command 使用 SOURCE 签名。", + "assets/policies.json.CMP0051": "在 SOURCES 目标属性中列出 TARGET_OBJECTS。", + "assets/policies.json.CMP0052": "拒绝已安装的 INTERFACE_INCLUDE_DIRECTORIES 中的源目录和编译目录。", + "assets/policies.json.CMP0053": "简化变量引用和转义序列的求值。", + "assets/policies.json.CMP0054": "仅在 if 参数未加引号时,将其解释为变量或关键字。", + "assets/policies.json.CMP0055": "对 break 命令进行严格检查。", + "assets/policies.json.CMP0056": "在 try_compile 的源文件签名中遵循链接标志。", + "assets/policies.json.CMP0057": "支持新的 if IN_LIST 运算符。", + "assets/policies.json.CMP0058": "Ninja 要求显式声明自定义命令生成的附带文件。", + "assets/policies.json.CMP0059": "不会将 DEFINITIONS 视为内置目录属性。", + "assets/policies.json.CMP0060": "即使在隐式目录中,也按完整路径链接库。", + "assets/policies.json.CMP0061": "默认情况下,CTest 不会告诉 make 忽略错误(-i)。", + "assets/policies.json.CMP0062": "不允许安装导出结果。", + "assets/policies.json.CMP0063": "遵循所有目标类型的可见性属性。", + "assets/policies.json.CMP0064": "将 TEST 识别为 if 命令的运算符。", + "assets/policies.json.CMP0065": "不会为没有 ENABLE_EXPORTS 目标属性的可执行文件添加用于导出符号的标志。", + "assets/policies.json.CMP0066": "在 try_compile 的源文件签名中遵循每个配置的标志。", + "assets/policies.json.CMP0067": "在 try_compile 的源文件签名中遵循语言标准。", + "assets/policies.json.CMP0068": "macOS 上的 RPATH 设置不影响 install_name。", + "assets/policies.json.CMP0069": "启用时强制执行 INTERPROCEDURAL_OPTIMIZATION。", + "assets/policies.json.CMP0070": "定义相对路径的文件行为。", + "assets/policies.json.CMP0071": "允许 AUTOMOC 和 AUTOUIC 处理 GENERATED 文件。", + "assets/policies.json.CMP0072": "FindOpenGL 默认优先使用 GLVND (如果可用)。", + "assets/policies.json.CMP0073": "不会生成旧 _LIB_DEPENDS 缓存条目。", + "assets/policies.json.CMP0074": "find_package 使用 _ROOT 变量。", + "assets/policies.json.CMP0075": "Include 文件检查宏遵循 CMAKE_REQUIRED_LIBRARIES 设置。", + "assets/policies.json.CMP0076": "target_sources 命令将相对路径转换为绝对路径。", + "assets/policies.json.CMP0077": "option 遵循普通变量的设置。", + "assets/policies.json.CMP0078": "UseSWIG 生成标准目标名称。", + "assets/policies.json.CMP0079": "target_link_libraries 允许与其他目录中的目标一起使用。", + "assets/policies.json.CMP0080": "配置时不能包含 BundleUtilities。", + "assets/policies.json.CMP0081": "LINK_DIRECTORIES 目标属性中不允许使用相对路径。", + "assets/policies.json.CMP0082": "add_subdirectory 调用中的安装规则与调用方种的规则交错执行。", + "assets/policies.json.CMP0083": "若要控制是否生成位置无关型可执行文件(PIE),需要在链接时使用某些标志。", + "assets/policies.json.CMP0084": "find_package 不存在 FindQt 模块。", + "assets/policies.json.CMP0085": " 处理空列表项。", + "assets/policies.json.CMP0086": "UseSWIG 通过 -module 标志遵循 SWIG_MODULE_NAME 设置。", + "assets/policies.json.CMP0087": "install 和 install 支持生成器表达式。", + "assets/policies.json.CMP0088": "FindBISON 在执行时于 CMAKE_CURRENT_BINARY_DIR 中运行 bison。", + "assets/policies.json.CMP0089": "基于 IBM Clang 的 XL 编译器的编译器 ID 现为 XLClang。", + "assets/policies.json.CMP0090": "默认情况下,export 不会填充包注册表。", + "assets/policies.json.CMP0091": "MSVC 运行时库标志由抽象层选择。", + "assets/policies.json.CMP0092": "默认情况下,MSVC 警告标志不包含在 CMAKE__FLAGS 中。", + "assets/policies.json.CMP0093": "FindBoost 以 x.y.z 格式报告 Boost_VERSION。", + "assets/policies.json.CMP0094": "模块 FindPython3、FindPython2 和 FindPython 使用 LOCATION 作为查找策略的一部分。", + "assets/policies.json.CMP0095": "RPATH 条目在中间的 CMake 安装脚本中正确转义。", + "assets/policies.json.CMP0096": "project 命令将保留版本组件中的前导零。", + "assets/policies.json.CMP0097": "当 ExternalProject_Add 中的 GIT_SUBMODULES 设置为 \"\" 时,不会初始化任何子模块。", + "assets/policies.json.CMP0098": "FindFLEX 在执行时于目录 CMAKE_CURRENT_BINARY_DIR 中运行 flex。", + "assets/policies.json.CMP0099": "链接属性可通过静态库的专用依赖项实现递归计算。", + "assets/policies.json.CMP0100": "允许 AUTOMOC 和 AUTOUIC 处理以 .hh 结尾的头文件。", + "assets/policies.json.CMP0101": "target_compile_options 现在始终遵循 BEFORE 关键字。", + "assets/policies.json.CMP0102": "mark_as_advanced 命令将不再在不存在缓存项时创建缓存项。", + "assets/policies.json.CMP0103": "不再允许多次调用具有相同 FILE 且不带 APPEND 的导出命令。", + "assets/policies.json.CMP0104": "当 CMAKE_CUDA_COMPILER_ID _COMPILER_ID> 为 NVIDIA 时,会初始化 CMAKE_CUDA_ARCHITECTURES。如果 CUDA_ARCHITECTURES 为空,则会报错。", + "assets/policies.json.CMP0105": "LINK_OPTIONS 和 INTERFACE_LINK_OPTIONS 目标属性现在用于设备链接步骤。", + "assets/policies.json.CMP0106": "移除了 Documentation 模块。", + "assets/policies.json.CMP0107": "不允许创建与另一个目标同名的 ALIAS 目标。", + "assets/policies.json.CMP0108": "即使通过 ALIAS 目标,也不允许目标链接到自身。", + "assets/policies.json.CMP0109": "find_program 需要执行权限,但不需要读取权限。", + "assets/policies.json.CMP0110": "add_test 支持测试名称中的任意字符。", + "assets/policies.json.CMP0111": "缺少 location 属性的导入目标将在生成时失败。", + "assets/policies.json.CMP0112": "目标文件组件的生成器表达式不会添加目标依赖项。", + "assets/policies.json.CMP0113": "Makefile 生成器不会重复执行来自目标依赖项的自定义命令。", + "assets/policies.json.CMP0114": "ExternalProject 的步骤目标完全采用其步骤。", + "assets/policies.json.CMP0115": "源文件扩展名必须是显式的。", + "assets/policies.json.CMP0116": "Ninja 生成器会转换来自 add_custom_command 的 DEPFILE。", + "assets/policies.json.CMP0117": "默认情况下,MSVC RTTI 标志 /GR 不会添加到 CMAKE_CXX_FLAGS _FLAGS> 中。", + "assets/policies.json.CMP0118": "GENERATED 源可跨目录使用,无需手动标记。", + "assets/policies.json.CMP0119": "LANGUAGE 源文件属性会显式地以指定语言进行编译。", + "assets/policies.json.CMP0120": "移除了 WriteCompilerDetectionHeader 模块。", + "assets/policies.json.CMP0121": "list 命令现在会检测无效索引。", + "assets/policies.json.CMP0122": "UseSWIG 将采用适用于 CSharp 语言的库命名惯例。", + "assets/policies.json.CMP0123": "ARMClang cpu/arch 编译和链接标志必须显式设置。", + "assets/policies.json.CMP0124": "foreach 循环变量仅在循环作用域内有效。", + "assets/policies.json.CMP0125": "find_file、find_path、find_library 和 find_program 命令会将结果缓存到其第一个参数指定的变量中。在 CMake 3.21 之前,如果该名称的缓存变量在调用之前已存在,但该缓存变量没有类型,则会丢弃同名的非缓存变量,并始终使用相应缓存变量(另见 CMP0126,了解类似但略有不同的行为)。这违背了非缓存变量应优先于同名缓存变量的惯例。如果用户在命令行上设置了缓存变量,但未指定类型,则可能会发生此情况。例如使用 cmake -DMYVAR=blah,而非 cmake -DMYVAR:FILEPATH=blah。", + "assets/policies.json.CMP0126": "当此策略设置为 NEW 时,set 命令不会从当前作用域中移除任何同名的普通变量。在以下情况下,OLD 行为会从当前作用域中移除所有同名的普通变量:", + "assets/policies.json.CMP0127": "cmake_dependent_option 支持完整的条件语法。", + "assets/policies.json.CMP0128": "当此策略设置为 NEW 时:", + "assets/policies.json.CMP0129": "MCST LCC 编译器的编译器 ID 现在是 LCC,而不是 GNU。", + "assets/policies.json.CMP0130": "在诊断条件评估错误时。", + "assets/policies.json.CMP0131": "LINK_LIBRARIES 支持 :genex:`$` 生成器表达式。", + "assets/policies.json.CMP0132": "不在首次运行时设置编译器环境变量。", + "assets/policies.json.CMP0133": "CPack 模块在 CPack DragNDrop 生成器中默认禁用 SLA。", + "assets/policies.json.CMP0134": "find_file、find_path、find_library 和 find_package 命令默认使用 TARGET 注册表视图,find_program 命令默认使用 BOTH 视图。", + "assets/policies.json.CMP0135": "使用 ExternalProject_Add 或 FetchContent_Declare 命令的 URL 下载方法时,CMake 3.23 及更早版本会将解压出来的内容的时间戳设置为与存档文件内部记录的时间戳一致。当 URL 发生变化时,会下载并解压缩新的存档文件,但解压出来的内容的时间戳可能并不比之前的内容更新。依赖于解压出来的内容的任何内容都可能并未重新构建,即使内容已经发生变化。", + "assets/policies.json.CMP0136": "Watcom 运行时库标志由抽象层选择。", + "assets/policies.json.CMP0137": "try_compile 会在项目模式下传递平台变量。", + "assets/policies.json.CMP0138": "CheckIPOSupported 使用来自调用项目的标志。", + "assets/policies.json.CMP0139": "if 命令支持使用 PATH_EQUAL 运算符进行路径比较。", + "assets/policies.json.CMP0140": "return 命令会检查其参数。", + "assets/policies.json.CMP0141": "MSVC 调试信息格式标志由抽象层选择。", + "assets/policies.json.CMP0142": "Xcode 生成器不会将基于配置的后缀追加到库搜索路径。", + "assets/policies.json.CMP0143": "USE_FOLDERS 全局属性默认视为 ON。", + "assets/policies.json.CMP0144": "find_package 使用大写的 _ROOT 变量。", + "assets/policies.json.CMP0145": "移除了 Dart 和 FindDart 模块。", + "assets/policies.json.CMP0146": "移除了 FindCUDA 模块。", + "assets/policies.json.CMP0147": "Visual Studio 生成器可并行构建自定义命令。", + "assets/policies.json.CMP0148": "移除了 FindPythonInterp 和 FindPythonLibs 模块。", + "assets/policies.json.CMP0149": "Visual Studio 生成器默将认选择最新的 Windows SDK。", + "assets/policies.json.CMP0150": "ExternalProject_Add 和 FetchContent_Declare 命令会将相对 GIT_REPOSITORY 路径视为相对于父项目的远程位置的路径。", + "assets/policies.json.CMP0151": "AUTOMOC include 目录默认为系统 include 目录。", + "assets/policies.json.CMP0152": "file 会在折叠 ../ 组件之前会解析符号链接。", + "assets/policies.json.CMP0153": "不应调用 exec_program 命令。", + "assets/policies.json.CMP0154": "默认情况下,生成的文件在使用文件集的目标中是专用的。", + "assets/policies.json.CMP0155": "当目标使用 C++20 或更高标准时,会在支持的情况下自动扫描其中的 C++ 源文件以查找 import 语句。", + "assets/policies.json.CMP0156": "根据链接器功能对链接行上的库进行去重。", + "assets/policies.json.CMP0157": "Swift 编译模式由抽象层选择。", + "assets/policies.json.CMP0158": "add_test 仅在交叉编译时遵循 CMAKE_CROSSCOMPILING_EMULATOR 设置。", + "assets/policies.json.CMP0159": "使用带有 REGEX 的 file 时,会更新 CMAKE_MATCH_。", + "assets/policies.json.CMP0160": "现在,更多只读目标属性会在尝试设置时报错。", + "assets/policies.json.CMP0161": "CPACK_PRODUCTBUILD_DOMAINS 变量默认为 true。", + "assets/policies.json.CMP0162": "Visual Studio 生成器默认添加 UseDebugLibraries 指示器。", + "assets/policies.json.CMP0163": "GENERATED 源文件属性现在在所有目录中都可见。", + "assets/policies.json.CMP0164": "add_library 会在平台不支持时拒绝 SHARED 库。", + "assets/policies.json.CMP0165": "enable_language 不得在 project 之前调用。", + "assets/policies.json.CMP0166": "TARGET_PROPERTY 会通过静态库的专用依赖项递归计算链接属性。", + "assets/policies.json.CMP0167": "移除了 FindBoost 模块。", + "assets/policies.json.CMP0168": "FetchContent 模块将直接实现步骤,而不是通过子编译实现。", + "assets/policies.json.CMP0169": "已弃用使用单个参数(声明的依赖项的名称)调用 FetchContent_Populate 的方法。", + "assets/policies.json.CMP0170": "当 FETCHCONTENT_FULLY_DISCONNECTED 设置为 true 时,FetchContent_MakeAvailable 和 FetchContent_Populate 会强制要求其源目录必须已经填充这一约束条件。虽然该要求一直有文档说明,但在 CMake 3.29 及更早版本中并未进行检查或强制执行。当项目需要某个依赖项已完成填充,但填充过程却被静默跳过时,这有时会导致难以追踪的错误。", + "assets/policies.json.CMP0171": "codegen 是保留的目标名称。", + "assets/policies.json.CMP0172": "CPack 模块在 CPack WIX 生成器中默认启用基于计算机的安装。", + "assets/policies.json.CMP0173": "移除了 CMakeFindFrameworks 模块。", + "assets/policies.json.CMP0174": "cmake_parse_arguments 在单值关键字后定义空字符串变量。", + "assets/policies.json.CMP0175": "add_custom_command 会拒绝无效参数。", + "assets/policies.json.CMP0176": "execute_process ENCODING 默认为 UTF-8。", + "assets/policies.json.CMP0177": "install DESTINATION 路径已规范化。", + "assets/policies.json.CMP0178": "测试命令行将保留空参数。", + "assets/policies.json.CMP0179": "链接行中静态库的去重将保留首次出现的库。此策略仅在 CMP0156 策略设置为 NEW 时适用。", + "assets/policies.json.CMP0180": "project 始终将 _* 设置为普通变量。", + "assets/policies.json.CMP0181": "CMAKE_EXE_LINKER_FLAGS、CMAKE_EXE_LINKER_FLAGS_、CMAKE_SHARED_LINKER_FLAGS、CMAKE_SHARED_LINKER_FLAGS_、CMAKE_MODULE_LINKER_FLAGS 和 CMAKE_MODULE_LINKER_FLAGS_ 变量会被解析并重新引用,且支持 LINKER: 前缀。", + "assets/policies.json.CMP0182": "默认情况下,在 AIX 上创建共享库存档。", + "assets/policies.json.CMP0183": "add_feature_info 支持完整的条件语法。", + "assets/policies.json.CMP0184": "MSVC 运行时检查标志由抽象层选择。", + "assets/policies.json.CMP0185": "FindRuby 不再提供大写的 RUBY_* 变量。", + "assets/policies.json.CMP0186": "正则表达式在重复搜索中最多匹配 ^ 一次。", + "assets/policies.json.CMP0187": "包含不带扩展名的源文件,并将其置于同名但带扩展名的源文件之后。", + "assets/policies.json.CMP0188": "移除了 FindGCCXML 模块。", + "assets/policies.json.CMP0189": "TARGET_PROPERTY 会递归计算 LINK_LIBRARIES 属性。", + "assets/policies.json.CMP0190": "FindPython3、FindPython2 和 FindPython 模块在交叉编译模式下强制保持工件一致性。", + "assets/policies.json.CMP0191": "移除了 FindCABLE 模块。", + "assets/policies.json.CMP0192": "GNUInstallDirs 在特殊前缀中使用绝对路径 SYSCONFDIR、LOCALSTATEDIR 和 RUNSTATEDIR。", + "assets/policies.json.CMP0193": "对于安装前缀 /,GNUInstallDirs 会使用前缀 usr/ 缓存 CMAKE_INSTALL_*。", + "assets/policies.json.CMP0194": "MSVC 不是 ASM 语言的汇编器。", + "assets/policies.json.CMP0195": "构建树中的 Swift 模块采用 Swift 模块目录结构。", + "assets/policies.json.CMP0196": "移除了 CMakeDetermineVSServicePack 模块。", + "assets/policies.json.CMP0197": "MSVC 链接 -machine: 标志不包含在 CMAKE_*_LINKER_FLAGS 中。", + "assets/policies.json.CMP0198": "CMakeLists.txt 中不会定义 CMAKE_PARENT_LIST_FILE。", + "assets/policies.json.CMP0199": ":genex:`$` 不匹配未选中的映射配置。", + "assets/policies.json.CMP0200": "导入目标的位置和配置选择将更加一致。", + "assets/policies.json.CMP0201": "Python::NumPy 不依赖于 Python::Development.Module。", + "assets/policies.json.CMP0202": "PDB 文件名将始终包含其目标的基于配置的后缀。", + "assets/policies.json.CMP0203": "_WINDLL 是为以 MSVC ABI 为目标的共享库定义的。", + "assets/policies.json.CMP0204": "在以 MSVC ABI 为目标时,一律定义字符集。" +} \ No newline at end of file diff --git a/i18n/chs/package.i18n.json b/i18n/chs/package.i18n.json index 415e7b3954..f65f9b5347 100644 --- a/i18n/chs/package.i18n.json +++ b/i18n/chs/package.i18n.json @@ -4,6 +4,8 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "cmake-tools.command.cmake.addFileToCMakeLists.title": "Add File to CMake Lists", + "cmake-tools.command.cmake.removeFileFromCMakeLists.title": "Remove File from CMake Lists", "cmake-tools.command.cmake.openCMakePresets.title": "打开 CMakePresets.json", "cmake-tools.command.cmake.addConfigurePreset.title": "添加配置预设", "cmake-tools.command.cmake.addBuildPreset.title": "添加生成预设", @@ -46,6 +48,9 @@ "cmake-tools.command.cmake.cleanConfigureWithDebugger.title": "删除缓存并使用 CMake 调试器重新配置", "cmake-tools.command.cmake.cleanConfigureAll.title": "删除缓存并重新配置所有项目", "cmake-tools.command.cmake.cleanConfigureAllWithDebugger.title": "删除缓存并使用 CMake 调试器重新配置所有项目", + "cmake-tools.command.cmake.fullCleanConfigure.title": "删除生成目录并重新配置", + "cmake-tools.command.cmake.fullCleanConfigureAll.title": "删除生成目录并重新配置所有项目", + "cmake-tools.command.cmake.outline.fullCleanConfigureAll.title": "完全清理、重新配置所有项目", "cmake-tools.command.cmake.editCacheUI.title": "编辑 CMake 缓存(UI)", "cmake-tools.command.cmake.outline.cleanConfigure.title": "清理重新配置", "cmake-tools.command.cmake.outline.cleanConfigureWithDebugger.title": "使用 CMake 调试器清理重新配置", @@ -58,6 +63,9 @@ "cmake-tools.command.cmake.cleanConfigureAndBuild.title": "删除缓存,重新配置并构建", "cmake-tools.command.cmake.cleanConfigureAndBuildAll.title": "删除缓存,重新配置并构建所有项目", "cmake-tools.command.cmake.outline.cleanConfigureAndBuildAll.title": "清理,重新配置并构建所有项目", + "cmake-tools.command.cmake.fullCleanConfigureAndBuild.title": "删除生成目录、重新配置并生成", + "cmake-tools.command.cmake.fullCleanConfigureAndBuildAll.title": "删除生成目录、重新配置并生成所有项目", + "cmake-tools.command.cmake.outline.fullCleanConfigureAndBuildAll.title": "完全清理、重新配置并生成所有项目", "cmake-tools.command.cmake.ctest.title": "运行测试", "cmake-tools.command.cmake.ctestAll.title": "为所有项目运行测试", "cmake-tools.command.cmake.cpack.title": "运行 CPack", @@ -74,6 +82,7 @@ "cmake-tools.command.cmake.launchTarget.title": "运行但不调试", "cmake-tools.command.cmake.launchTargetAll.title": "运行所有项目但不调试", "cmake-tools.command.cmake.selectLaunchTarget.title": "设置启动/调试目标", + "cmake-tools.command.cmake.selectBuildAndLaunchTarget.title": "设置生成和启动/调试目标", "cmake-tools.command.cmake.stop.title": "取消生成", "cmake-tools.command.cmake.stopAll.title": "取消所有项目的生成", "cmake-tools.command.cmake.resetState.title": "重置 CMake Tools 扩展状态(用于故障排除)", @@ -105,6 +114,7 @@ "cmake-tools.configuration.cmake.generator.description": "要使用的 CMake 生成器。", "cmake-tools.configuration.cmake.toolset.description": "要在配置时使用的 CMake 工具集。", "cmake-tools.configuration.cmake.platform.description": "要在配置时使用的 CMake 平台。", + "cmake-tools.configuration.cmake.shell.description": "运行 CMake、CTest 和 CPack 命令时使用的 shell 可执行文件路径(例如 Git Bash 或 MSYS2)。设置后,所有子进程调用都将通过此 shell 进行。适用于需要 POSIX 路径转换的嵌入式工具链。为 null 时,使用默认的系统 shell 行为。", "cmake-tools.configuration.cmake.configureArgs.description": "要在配置时传递给 CMake 的其他参数。使用 CMake 预设时,这些参数会临时追加到活动配置预设提供的参数中。", "cmake-tools.configuration.cmake.buildArgs.description": "要在生成时传递给 CMake 的其他参数。使用 CMake 预设时,这些参数会临时追加到活动生成预设提供的参数中。", "cmake-tools.configuration.cmake.buildToolArgs.description": "要在生成时传递给基础生成工具的其他参数。使用 CMake 预设时,这些参数会临时追加到活动生成预设提供的参数,以调用生成工具。", @@ -112,7 +122,7 @@ "cmake-tools.configuration.cmake.ctestPath.description": "CTest 可执行文件的路径。如果为 null,则从 cmake.cmakePath 推理(建议保留为 null)。", "cmake-tools.configuration.cmake.cpackPath.description": "CPack 可执行文件的路径。如果为 null,则将根据 cmake.cmakePath 推断(建议保留为 null)。当使用工具包而不是预设时,将会忽略。", "cmake-tools.configuration.cmake.ctest.parallelJobs.markdownDescription": "并行测试作业的数量。使用零可以使用 `#cmake.parallelJobs#` 的值。这仅适用于 `#cmake.ctest.allowParallelJobs#` 设置为 `true` 的情况。", - "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "允许并行运行 ctest,但结果输出可能会因此而乱码,并且测试资源管理器可能无法准确地反映测试进度。", + "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "允许并行运行 ctest,但结果输出可能会因此而乱码,并且测试资源管理器可能无法准确地反映测试进度。禁用后,测试将按字母顺序依次运行,与测试资源管理器的显示顺序相匹配。", "cmake-tools.configuration.cmake.ctest.testExplorerIntegrationEnabled.description": "是否启用与测试资源管理器的集成。如果希望使用其他扩展进行测试集成,这有助于禁用。", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiter.markdownDescription": "可选分隔符,用于在测试资源管理器中以分层方式分隔测试套件名称和组合测试。此字符串用于正则表达式,因此某些分隔符可能需要转义。示例: `-` (一个分隔符: `-`),`\\.|::` (两个分隔符: `.` 或 `::`。请注意,需要对 `.` 进行转义。)", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiterMaxOccurrence.markdownDescription": "分隔符可用于拆分测试名称的最大次数。`0` 表示无限制。", @@ -124,9 +134,21 @@ "cmake-tools.configuration.cmake.ctest.failurePatterns.actual": "实际测试输出的匹配组索引。默认为“未定义”。", "cmake-tools.configuration.cmake.ctest.failurePatterns.expected": "预期测试输出的匹配组索引。默认为“未定义”。", "cmake-tools.configuration.cmake.ctest.debugLaunchTarget.description": "在使用 CTest 调试测试时,从 launch.json 中获取目标名称以启动。默认情况下,如果目标不存在,将显示一个包含所有有空目标的选取器。", + "cmake-tools.configuration.cmake.ctest.neverDebugTestsWithLaunchConfiguration.description": "设置为 true 时,始终无启动配置调试测试,跳过快速选择菜单。默认值为 false。", "cmake-tools.configuration.cmake.parseBuildDiagnostics.description": "分析编译器输出以查找警告和错误。", "cmake-tools.configuration.cmake.enabledOutputParsers.description": "要使用的输出分析程序。支持的分析程序 `cmake`、`gcc`、`gnuld`(适用于 GNULD 样式的链接器输出)、`msvc`(适用于 Microsoft Visual C++)、`ghs`(适用于 Green Hills 编译器,具有 --no_wrap_diagnostics --brief_diagnostics),`diab`(适用于 Wind River Diab 编译器)以及 `iwyu`(适用于 include-what-you-use 诊断)。", - "cmake-tools.configuration.cmake.debugConfig.description": "要在调试目标时使用的调试配置。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.markdownDescription": "生成输出的其他问题匹配器。使用此选项可显示来自 clang-tidy、PCLint Plus、cppcheck 等工具的诊断信息,或通过 CMake 中的 `add_custom_command`/`add_custom_target` 集成的自定义脚本的诊断信息。\n\n每个条目定义一个 `name` (用作诊断源标签)、一个 `regexp`,以及 `file`、`line`、`column`、`severity`、`message` 和 `code` 的捕获组索引。\n\n例如,要匹配类似于 `/path/file.cpp:10:5: warning: some message [check-name]` 的 clang-tidy 输出:\n```json\n[\n {\n \"name\": \"clang-tidy\",\n \"regexp\": \"^(.+?):(\\\\d+):(\\\\d+):\\\\s+(warning|error|note):\\\\s+(.+?)\\\\s*(?:\\\\[(.+)\\\\])?$\",\n \"file\": 1,\n \"line\": 2,\n \"column\": 3,\n \"severity\": 4,\n \"message\": 5,\n \"code\": 6\n }\n]\n```\n\n自定义匹配器在内置解析器(`gcc`、`msvc` 等)之后运行,因此不会从内置编译器中抢占行。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.name": "此匹配器的唯一名称,用作“问题”窗格中的诊断源标签。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.regexp": "用于匹配每个生成输出行的正则表达式。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.file": "文件路径的捕获组索引。默认为 `1`。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.line": "行号的捕获组索引。默认为 `2`。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.column": "列号的捕获组索引。可选。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.group": "严重性的捕获组索引(应捕获 \"error\"、\"warning\" 或 \"info\")。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.fixed": "应用于此模式所有匹配项的固定严重性。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.message": "诊断消息的捕获组索引。默认为 `3`。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.code": "可选诊断代码的捕获组索引。", + "cmake-tools.configuration.cmake.debugConfig.description": "在调试目标时使用的调试配置。当指定 `type` 时,将跳过自动检测的调试程序配置,仅从目标生成最小的基本配置(program、cwd、name)。所有其他属性均从此设置应用,允许完全控制任何调试适配器的调试启动配置。", + "cmake-tools.configuration.cmake.debugConfig.type.description": "要使用的调试适配器类型(例如 `cppdbg`、`cppvsdbg`、`lldb`、`codelldb`)。设置后,将跳过 CMake 缓存中的自动调试程序检测,直接使用此类型。调试适配器所需的任何其他属性都可以添加到 `#cmake.debugConfig#`。", "cmake-tools.configuration.cmake.debugConfig.symbolSearchPath.description": "Visual Studio 调试程序符号搜索路径。", "cmake-tools.configuration.cmake.debugConfig.additionalSOLibSearchPath.description": "用于搜索 .so 文件的 GDB 或 LLDB 的路径。", "cmake-tools.configuration.cmake.debugConfig.externalConsole.description": "启动程序的外部控制台。", @@ -226,11 +248,13 @@ "cmake-tools.configuration.cmake.automaticReconfigure.description": "当工具包或配置预设发生更改时,将自动配置 CMake 项目目录。", "cmake-tools.configuration.cmake.pinnedCommands.description": "默认情况下始终固定的 CMake 命令列表。这些内容将显示在 CMake Tools 边栏“固定的命令”部分中。", "cmake-tools.configuration.cmake.enableAutomaticKitScan.description": "未选择工具包时启用工具包的自动扫描。这只会在未使用 CMake 预设时生效。", + "cmake-tools.configuration.cmake.removeStaleKitsOnScan.description": "Remove compiler-based kits from the user kits file during a full kit scan when they are no longer rediscovered. Set \"keep\": true in a kit entry to preserve it.", "cmake-tools.configuration.cmake.enableLanguageServices.description": "为 CMake 文件启用语言服务。这将启用语法突出显示、代码完成和其他功能。", "cmake-tools.configuration.cmake.preRunCoverageTarget.description": "使用测试资源管理器运行覆盖率测试之前要生成的目标", "cmake-tools.configuration.cmake.postRunCoverageTarget.description": "使用测试资源管理器运行覆盖率测试之后要生成的目标", "cmake-tools.configuration.cmake.coverageInfoFiles.description": "使用测试资源管理器运行覆盖率测试后要处理的 LCOV 覆盖率信息文件。", "cmake-tools.configuration.cmake.useFolderPropertyInBuildTargetDropdown.description": "控制默认生成目标下拉列表是否按 CMake 文件夹组分组。", + "cmake-tools.configuration.cmake.setBuildTargetSameAsLaunchTarget.description": "启用后,设置启动/调试目标会自动设置要匹配的生成目标。仍可单独更改生成目标。", "cmake-tools.debugger.pipeName.description": "用于调试器通信的管道(在 Windows 上)或域套接字(在 Unix 上)的名称。", "cmake-tools.debugger.clean.description": "在配置之前清理。", "cmake-tools.debugger.configureAll.description": "为所有项目配置。", @@ -262,6 +286,7 @@ "cmake-tools.configuration.cmake.launchBehavior.breakAndReuseTerminal.markdownDescriptions": "已重用启动终端实例,并且将在启动目标之前发送 `break` 命令以终止任何活动的前台进程。", "cmake-tools.configuration.cmake.launchBehavior.newTerminal.markdownDescriptions": "已创建新的终端实例,并且已在其中启动目标。系统不会自动清理现有终端。", "cmake-tools.configuration.cmake.loadCompileCommands.description": "控制扩展是否读取 compile_commands.json 以启用单个文件编译。", + "cmake-tools.configuration.cmake.outlineViewType.description": "Project Outline View`s type. Available options are: \"list\" and \"tree\".", "cmake-tools.command.cmake.projectStatus.update.title": "刷新项目状态", "cmake-tools.command.cmake.pinnedCommands.add.title": "添加要固定的 CMake 命令", "cmake-tools.command.cmake.pinnedCommands.remove.title": "取消固定命令", @@ -272,5 +297,33 @@ "cmake-tools.debugger.label": "CMake 调试程序", "cmake-tools.command.cmake.appendBuildDirectoryToWorkspace.title": "将生成目录追加到当前工作区", "cmake-tools.command.workbench.action.tasks.configureTaskRunner.title": "配置任务", - "cmake-tools.command.workbench.action.tasks.runTask.title": "运行任务" + "cmake-tools.command.workbench.action.tasks.runTask.title": "运行任务", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.description": "Add source files to CMake lists when they are created.", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.no.description": "Do not automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.yes.description": "Automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.description": "Remove source files from CMake lists when they are deleted.", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.no.description": "Do not automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.yes.description": "Automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.markdownDescription": "How to choose which `set()` or `list(APPEND/PREPEND/INSERT)` command invocation to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.never.description": "Do not look for variable modification command invocations, only look for source command invocations.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askFirstParentDir.description": "Present a Quick Pick with options from the first `CMakeLists.txt` found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askParentDirs.description": "Present a Quick Pick with options from all `CMakeLists.txt` files found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.sourceVariables.markdownDescription": "Variables to add source files to. Variables appearing earlier in this list will be given higher priority. Only used if `#cmake.modifyLists.variableSelection#` is not `never`. Supports glob patterns.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.description": "How to choose which target to add new source files to when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askNearestSourceDir.description": "Present a Quick Pick with targets whose source directories are closest to location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askParentSourceDirs.description": "Present a Quick Pick with targets whose source directories contain the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.description": "How to choose which of a target's source command invocations to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askFirstParentDir.description": "Present a Quick Pick with options from the CMake list file in the parent directory closest to the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askParentDirs.description": "Present a Quick Pick with options from all CMake list files in the parent directories of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSourceCommands.markdownDescription": "Commands to treat as target source commands when adding source files CMake lists. Commands appearing earlier in this list will be given higher priority. Supports glob patterns.\r\n\r\nIf you are using the File API (see `#cmake.cmakeCommunicationMode#`), user-defined functions and macros which call the commands in this list are detected automatically and added to it.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.description": "How to choose which of a target's visibility scopes, file sets, or source keyword parameters to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.ask.description": "Present a Quick Pick with options from the selected target source command invocation.", + "cmake-tools.configuration.cmake.modifyLists.sourceListKeywords.markdownDescription": "Keyword arguments to user-defined functions and macros which introduce lists of source files. If left empty, all arguments consisting of only upper-case letters and underscores will be considered. Supports glob patterns.", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier" } \ No newline at end of file diff --git a/i18n/chs/schemas/kits-schema.json.i18n.json b/i18n/chs/schemas/kits-schema.json.i18n.json index c51da2190e..d54e1ef817 100644 --- a/i18n/chs/schemas/kits-schema.json.i18n.json +++ b/i18n/chs/schemas/kits-schema.json.i18n.json @@ -17,9 +17,11 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "工具链文件的路径", "schemas/kits-schema.json.items.properties.visualStudio": "Visual Studio 产品的实例 ID", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "体系结构到目标", + "schemas/kits-schema.json.items.properties.visualStudioArguments": "Arguments to vcvarsall.bat", "schemas/kits-schema.json.items.properties.environmentSetupScript": "用于修改工具包环境的脚本的绝对路径", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "环境变量的值", - "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "CMake 设置的值", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.0": "CMake 设置的值。转义字符串中的分号。", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.1": "使用分号联接的值可在不转义的情况下形成 CMake 列表。", "schemas/kits-schema.json.items.properties.preferredGenerator": "为此工具包设置首选的 CMake 生成器", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.name": "要使用的生成器的名称", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.platform": "用于 -A 参数的 CMake 平台", diff --git a/i18n/chs/src/cmakeListsModifier.i18n.json b/i18n/chs/src/cmakeListsModifier.i18n.json new file mode 100644 index 0000000000..a3c9d1d6a2 --- /dev/null +++ b/i18n/chs/src/cmakeListsModifier.i18n.json @@ -0,0 +1,51 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "add.newly.created.files": "Add newly created files to CMakeLists.txt", + "error.processing.add.files": "Error processing added files", + "remove.deleted.file": "Remove a deleted file from CMakeLists.txt", + "error.processing.delete.files": "Error processing deleted files", + "add.file.no.code.model": "Adding a file without a valid code model", + "file.already.in.target": "{0} already in target {1}.", + "no.targets.found": "No targets found. {0} not added to build system.", + "no.source.command.invocations": "No source command invocations found. {0} not added to build system.", + "delete.file.no.code.model": "Deleting a file without a valid code model", + "not.modifying.unsaved.delete": "Not modifying {0} to delete {1} because it has unsaved changes.", + "add.to.which.variable": "CMake: Add {0} to which variable?", + "add.to.which.target": "CMake: Add {0} to which target?", + "add.to.which.invocation": "CMake: Add {0} to which command invocation of {1}?", + "add.to.which.scope.fileset.keyword": "CMake: Add {0} to which Scope, File Set, or Keyword?", + "open.file": "Open File", + "not.modifying.unsaved.files": "Cannot modify {0} because it has unsaved changes.", + "skipping.unsaved.files": "Skipping {0} file(s) with unsaved changes: {1}", + "edit.label.remove.source.file": "CMake: Remove deleted source file", + "edit.label.add.source.file": "CMake: Add new source file", + "edits.applied.successfully": "Successfully applied {0} CMake list edit(s).", + "edits.apply.failed": "Failed to apply CMake list edits: {0}", + "not.local.file.add": "{0} is not a local file. Not adding to CMake lists.", + "no.candidates.found": "No suitable locations found to add {0}.", + "not.modifying.unsaved.add": "Not modifying {0} to add {1} because it has unsaved changes.", + "not.local.file.remove": "{0} is not a local file. Not removing from CMake lists.", + "could.not.open.file": "Could not open file {0}: {1}", + "file.not.found.in.cmake.lists": "{0} not found in CMake lists.", + "file.already.in.destination": "{0} already in {1} at {2}:{3}", + "parse.error.examining.cmake.lists": "Parse error while examining CMakeLists.txt files. Details: {0}", + "could.not.open.cmake.lists": "Could not open {0}: {1}", + "parse.error.finding.invocations": "Parse error while finding command invocations to add to. CMake file modified since last configure? Details: {0}", + "unexpected.command.found": "Found \"{0}\", expected \"{1}\". CMake file modified since last configure? Details: {2}:{3}", + "scope.private.detail": "{0} will be used to build {1}", + "scope.public.detail": "{0} will be used to build both {1} and targets that use {1}", + "scope.interface.detail": "{0} will be used to build targets that use {1}", + "fileset.headers.detail": "{0} will be used via a language's #include mechanism", + "fileset.cxx.modules.detail": "{0} contains C++ interface module or partition units.", + "label.fileset": "{0} File Set", + "label.scope": "{0} Scope", + "fileset.type": "Type: {0}", + "scope.with.fileset.detail": "{0} Scope: {1}", + "keyword.of.command": "Keyword of {0} command", + "command.label": "{0} Command", + "add.to.command.arguments": "Add {0} to the list of arguments to {1} command" +} \ No newline at end of file diff --git a/i18n/chs/src/cmakeProject.i18n.json b/i18n/chs/src/cmakeProject.i18n.json index 3205e0f585..a04f131310 100644 --- a/i18n/chs/src/cmakeProject.i18n.json +++ b/i18n/chs/src/cmakeProject.i18n.json @@ -9,6 +9,7 @@ "generator.changed.restart.driver": "在生成器更改后重启 CMake 驱动程序。", "preferredGenerator.changed.restart.driver": "在 preferredGenerators 更改后重启 CMake 驱动程序。", "bad.executable": "CMake 可执行文件错误: {0}。请检查以确保它已安装,或者 {1} 设置的值包含正确的路径", + "shell.changed.restart.driver": "在 shell 更改后重启 CMake 驱动程序。", "targests.in.preset": "[预设中的目标]", "constructing.cmakeproject": "构造新的 CMakeProject 实例", "disposing.driver": "正在释放 CMake 驱动程序", @@ -142,9 +143,9 @@ "configure.now.button": "立即配置", "cache.load.failed": "找不到 CMakeCache.txt 文件。请先配置项目!", "set.up.before.selecting.target": "请先设置 CMake 项目,然后再选择目标。", - "select.active.target.tooltip": "设置默认生成目标", "enter.target.name": "输入目标名称", "target.to.build.description": "要生成的目标", + "select.active.target.tooltip": "设置默认生成目标", "build.failed": "生成失败。", "driver.died.after.build.succeeded": "CMake 驱动程序在生成成功后立即终止。", "driver.died.before.workflow": "CMake 驱动程序在启动工作流之前已终止。", @@ -167,6 +168,7 @@ "target.debugging.unsupported": "旧驱动程序不再支持目标调试", "learn.more.button": "了解详细信息", "failed.to.prepare.target": "无法准备名称为 {0} 的可执行目标", + "debug.configuration.from.settings": "从用户设置中调试配置: {0}", "debug.configuration.from.cache": "从缓存调试配置: {0}", "problem.getting.debug": "从缓存获取调试配置时出现问题。", "starting.debugger.with": "正在使用以下配置启动调试程序。", diff --git a/i18n/chs/src/ctest.i18n.json b/i18n/chs/src/ctest.i18n.json index 0b44cb8057..9d3d1558de 100644 --- a/i18n/chs/src/ctest.i18n.json +++ b/i18n/chs/src/ctest.i18n.json @@ -27,6 +27,13 @@ "test.buildingPostRunCoverageTarget": "在运行覆盖率测试后为项目 {1} 生成 postRunCoverageTarget“{0}”。", "test.postRunCoverageTargetFailure": "在 {0} 的项目上生成目标 postRunCoverageTarget 失败。跳过覆盖率数据的处理。", "test.skip.run.build.failure": "由于生成失败而未运行测试。", + "debug.without.launch.config": "无启动配置调试", + "choose.debug.method": "选择调试测试的方式。", + "yes": "是", + "no": "否", + "never.debug.with.launch.prompt": "你是否希望在此工作区中始终无启动配置调试测试?", + "no.launch.config": "未找到启动配置。", + "choose.launch.config": "选择要调试测试的启动配置。", "test.skip.debug.build.failure": "由于生成失败而未调试测试。", "build.failed": "生成失败", "run.tests.profile": "运行测试", diff --git a/i18n/chs/src/drivers/cmakeDriver.i18n.json b/i18n/chs/src/drivers/cmakeDriver.i18n.json index 362b458290..5ca0ae7f0e 100644 --- a/i18n/chs/src/drivers/cmakeDriver.i18n.json +++ b/i18n/chs/src/drivers/cmakeDriver.i18n.json @@ -5,13 +5,14 @@ // Do not edit this file. It is machine generated. { "no.usable.generator.found": "找不到任何可用的生成器。", - "user.closed.file.compilation.terminal": "用户已关闭文件编译终端", "disposing.base.cmakedriver": "释放基准 CMakeDriver", "async.disposing.cmake.driver": "异步释放 CMake 驱动程序", "test.with.overrides": "注意: 你正在使用预设 {0} 进行测试,但正在从 VS Code 设置中应用一些替代。", "package.with.overrides": "注意: 正在使用预设 {0} 进行打包,但正在从 VS Code 设置中应用一些替代。", "compile.with.overrides": "注意: 你正在使用预设 {0} 进行编译,但正在从 VS Code 设置中应用一些替代。", "file.compilation": "文件编译", + "compile.finished.with.error": "编译完成,存在错误。", + "compile.finished.successfully": "编译成功完成。", "removing": "删除 {0}", "unlink.failed": "未能删除缓存文件 {0}", "switching.to.config.preset": "正在切换到配置预设: {0}", diff --git a/i18n/chs/src/extension.i18n.json b/i18n/chs/src/extension.i18n.json index 6129a8d808..5c2b6aec6a 100644 --- a/i18n/chs/src/extension.i18n.json +++ b/i18n/chs/src/extension.i18n.json @@ -11,10 +11,11 @@ "configure.now.button": "立即配置", "configure.recommended": "建议在升级到新的工具包定义后重新配置。", "using.cache.to.configure.workspace.on.open": "正在尝试使用缓存配置工作区 {0}", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier", + "failed.to.open.cache.file.on.code.model.update": "Failed to open CMake cache file on code model update", "update.code.model.for.cpptools": "更新 cpptools 的代码模型", "update.intellisense.disabled": "未更新配置提供程序,因为 {0} 设置为 {1}", "failed.to.get.cpptools.api": "未能获取 cppTools API", - "filed.to.open.cache.file.on.code.model.update": "未能在代码模型更新时打开 CMake 缓存文件", "opening.text.editor.for": "正在打开适用于 {0} 的文本编辑器", "no.kits.file.what.to.do": "不存在任何工具包文件。你要执行什么操作?", "scan.for.kits.button": "扫描工具包", @@ -49,6 +50,7 @@ "cmake.finished.returned.unserializable": "{0} 已完成(已返回不可序列化的值)", "loading.extension.commands": "正在加载扩展命令", "register.command": "注册 CMakeTools 扩展命令 {0}", + "bookmark.target.not.resolved": "书签“{0}”无法解析为目标。可能需要重新配置项目。", "search.project.outline": "输入搜索词以筛选项目大纲", "added.to": "已添加到", "removed.from": "已移除自", diff --git a/i18n/chs/src/proc.i18n.json b/i18n/chs/src/proc.i18n.json index 6688557328..202c2b2e35 100644 --- a/i18n/chs/src/proc.i18n.json +++ b/i18n/chs/src/proc.i18n.json @@ -6,11 +6,11 @@ { "executing.command": "正在执行命令: {0}", "execution.environment": " 环境为 {0}", - "process.error": "命令: {0} 失败,出现错误: {1} 堆栈: {2}", - "process.exit.with.signal": "命令: {0} 退出,出现代码: {1} 和信号: {2} 堆栈: {3}", - "process.exit": "命令: {0} 退出,出现代码: {1} 堆栈: {2}", - "process.exit.stdout": "有关标准输出的命令输出: {0} 堆栈: {1}", - "process.exit.stderr": "有关标准错误的命令输出: {0} 堆栈: {1}", + "process.error": "命令: {0} 失败,出现错误: {1}", + "process.exit.with.signal": "命令: {0} 退出,代码为: {1},信号为: {2}", + "process.exit": "命令“{0}”已退出,代码为 {1}", + "process.exit.stdout": "标准输出的命令输出: {0}", + "process.exit.stderr": "标准错误的命令输出: {0}", "processing.data.event.stdout": "正在处理 proc stdout 中的 {0} 事件", "processing.data.event.stderr": "正在处理 proc stderr 中的 {0} 事件", "resolving.close.event": "正在解析 {0} 事件上的进程" diff --git a/i18n/chs/src/util.i18n.json b/i18n/chs/src/util.i18n.json index 1212db82e5..53c91a46e4 100644 --- a/i18n/chs/src/util.i18n.json +++ b/i18n/chs/src/util.i18n.json @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "invalid.value": "转换为 cmake 值的值无效: {0}", "invalid.version.string": "版本字符串 {0} 无效", "extension.is.undefined": "扩展未定义!", "sourcedirectory.not.a.directory": "\"sourceDirectory\" 不是目录" diff --git a/i18n/cht/assets/policies.json.i18n.json b/i18n/cht/assets/policies.json.i18n.json new file mode 100644 index 0000000000..b8f6dd83ba --- /dev/null +++ b/i18n/cht/assets/policies.json.i18n.json @@ -0,0 +1,212 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "assets/policies.json.CMP0000": "必須指定最低要求的 CMake 版本。", + "assets/policies.json.CMP0001": "不應再使用 CMAKE_BACKWARDS_COMPATIBILITY。", + "assets/policies.json.CMP0002": "邏輯目標名稱必須在全域範圍內保持唯一。", + "assets/policies.json.CMP0003": "透過完整路徑連結的函式庫將不再產生連結器搜尋路徑。", + "assets/policies.json.CMP0004": "連結的函式庫不得包含前置或後置空白。", + "assets/policies.json.CMP0005": "前置處理器定義值現在會自動進行跳脫處理。", + "assets/policies.json.CMP0006": "安裝 MACOSX_BUNDLE 目標時必須指定 BUNDLE DESTINATION。", + "assets/policies.json.CMP0007": "list 指令不再忽略空元素。", + "assets/policies.json.CMP0008": "以完整路徑連結的函式庫必須具有有效的函式庫檔案名稱。", + "assets/policies.json.CMP0009": "FILE GLOB_RECURSE 呼叫預設不會跟隨符號連結。", + "assets/policies.json.CMP0010": "錯誤的變數參照語法為錯誤。", + "assets/policies.json.CMP0011": "包含的指令碼會自動執行 cmake_policy 的 PUSH 和 POP。", + "assets/policies.json.CMP0012": "if 可識別數值與布林常數。", + "assets/policies.json.CMP0013": "不允許重複的二進位目錄。", + "assets/policies.json.CMP0014": "輸入目錄必須包含 CMakeLists.txt。", + "assets/policies.json.CMP0015": "link_directories 會將路徑視為相對於來源目錄。", + "assets/policies.json.CMP0016": "若 target_link_libraries 的唯一引數不是目標,則會回報錯誤。", + "assets/policies.json.CMP0017": "從 CMake 模組目錄 include 時,會優先使用該目錄中的檔案。", + "assets/policies.json.CMP0018": "忽略 CMAKE_SHARED_LIBRARY__FLAGS 變數。", + "assets/policies.json.CMP0019": "在 include 與連結資訊中不會再次展開變數。", + "assets/policies.json.CMP0020": "在 Windows 上自動將 Qt 執行檔連結到 qtmain 目標。", + "assets/policies.json.CMP0021": "在 INCLUDE_DIRECTORIES 目標屬性中使用相對路徑會導致致命錯誤。", + "assets/policies.json.CMP0022": "INTERFACE_LINK_LIBRARIES 定義連結介面。", + "assets/policies.json.CMP0023": "target_link_libraries 的一般與關鍵字簽章不能混用。", + "assets/policies.json.CMP0024": "禁止包含匯出結果。", + "assets/policies.json.CMP0025": "Apple Clang 的編譯器識別碼現在為 AppleClang。", + "assets/policies.json.CMP0026": "不允許在建置目標中使用 LOCATION 屬性。", + "assets/policies.json.CMP0027": "對缺少包含目錄的匯入目標進行條件式連結。", + "assets/policies.json.CMP0028": "目標名稱中的雙冒號表示 ALIAS 或 IMPORTED 目標。", + "assets/policies.json.CMP0029": "不應呼叫 subdir_depends 指令。", + "assets/policies.json.CMP0030": "不應呼叫 use_mangled_mesa 指令。", + "assets/policies.json.CMP0031": "不應呼叫 load_command 指令。", + "assets/policies.json.CMP0032": "不應呼叫 output_required_files 指令。", + "assets/policies.json.CMP0033": "不應呼叫 export_library_dependencies 指令。", + "assets/policies.json.CMP0034": "不應呼叫 utility_source 指令。", + "assets/policies.json.CMP0035": "不應呼叫 variable_requires 指令。", + "assets/policies.json.CMP0036": "不應呼叫 build_name 指令。", + "assets/policies.json.CMP0037": "目標名稱不應保留,且必須符合有效性模式。", + "assets/policies.json.CMP0038": "目標不得直接連結到自身。", + "assets/policies.json.CMP0039": "工具型目標不能具有連結相依性。", + "assets/policies.json.CMP0040": "add_custom_command 的 TARGET 簽章中所指定的目標必須存在,且必須在目前目錄中定義。", + "assets/policies.json.CMP0041": "使用產生器運算式時若包含相對路徑的 include 會產生錯誤。", + "assets/policies.json.CMP0042": "MACOSX_RPATH 預設為啟用。", + "assets/policies.json.CMP0043": "忽略 COMPILE_DEFINITIONS_ 屬性", + "assets/policies.json.CMP0044": "_COMPILER_ID 產生器運算式區分大小寫", + "assets/policies.json.CMP0045": "在 get_target_property 中引用不存在的目標時會產生錯誤。", + "assets/policies.json.CMP0046": "在 add_dependencies 中指定不存在的相依項時會產生錯誤。", + "assets/policies.json.CMP0047": "在 QNX 上的 qcc 驅動程式使用 QCC 作為編譯器識別碼。", + "assets/policies.json.CMP0048": "project 指令會管理 VERSION 相關變數。", + "assets/policies.json.CMP0049": "不要在目標來源項目中展開變數。", + "assets/policies.json.CMP0050": "禁止使用 add_custom_command 的 SOURCE 簽名。", + "assets/policies.json.CMP0051": "在 SOURCES 目標屬性中列出 TARGET_OBJECTS。", + "assets/policies.json.CMP0052": "在已安裝的 INTERFACE_INCLUDE_DIRECTORIES 中不允許使用來源目錄與建置目錄。", + "assets/policies.json.CMP0053": "簡化變數參照與跳脫序列的解析方式。", + "assets/policies.json.CMP0054": "只有在未加引號時,if 引數才會被解讀為變數或關鍵字。", + "assets/policies.json.CMP0055": "嚴格檢查 break 指令。", + "assets/policies.json.CMP0056": "在 try_compile 的來源檔案簽章中會遵循連結旗標。", + "assets/policies.json.CMP0057": "支援新的 if IN_LIST 運算子。", + "assets/policies.json.CMP0058": "Ninja 要求自訂命令的附帶輸出必須明確指定。", + "assets/policies.json.CMP0059": "請勿將 DEFINITIONS 視為內建的目錄屬性。", + "assets/policies.json.CMP0060": "即使在隱含目錄中,也以完整路徑連結函式庫。", + "assets/policies.json.CMP0061": "CTest 預設不會告知 make 忽略錯誤 (-i)。", + "assets/policies.json.CMP0062": "不允許安裝匯出結果。", + "assets/policies.json.CMP0063": "所有目標類型都會遵循可見性屬性設定。", + "assets/policies.json.CMP0064": "將 TEST 視為 if 指令可使用的運算子。", + "assets/policies.json.CMP0065": "若未設定 ENABLE_EXPORTS 目標屬性,則不會為可執行檔新增匯出符號的旗標。", + "assets/policies.json.CMP0066": "在 try_compile 的來源檔案簽章中會遵循每個設定的旗標。", + "assets/policies.json.CMP0067": "在 try_compile 的來源檔案簽章中會遵循語言標準。", + "assets/policies.json.CMP0068": "macOS 上的 RPATH 設定不會影響 install_name。", + "assets/policies.json.CMP0069": "啟用時會強制執行 INTERPROCEDURAL_OPTIMIZATION。", + "assets/policies.json.CMP0070": "定義相對路徑的檔案行為。", + "assets/policies.json.CMP0071": "允許 AUTOMOC 和 AUTOUIC 處理 GENERATED 檔案。", + "assets/policies.json.CMP0072": "可用時,FindOpenGL 預設優先使用 GLVND。", + "assets/policies.json.CMP0073": "請勿產生舊版 _LIB_DEPENDS 快取項目。", + "assets/policies.json.CMP0074": "find_package 使用 _ROOT 變數。", + "assets/policies.json.CMP0075": "包含檔案檢查巨集會遵循 CMAKE_REQUIRED_LIBRARIES。", + "assets/policies.json.CMP0076": "target_sources 指令會將相對路徑轉換為絕對路徑。", + "assets/policies.json.CMP0077": "option 會遵循一般變數。", + "assets/policies.json.CMP0078": "UseSWIG 會產生標準目標名稱。", + "assets/policies.json.CMP0079": "target_link_libraries 允許與其他目錄中的目標一起使用。", + "assets/policies.json.CMP0080": "BundleUtilities 無法在設定階段包含。", + "assets/policies.json.CMP0081": "LINK_DIRECTORIES 目標屬性中不允許使用相對路徑。", + "assets/policies.json.CMP0082": "add_subdirectory 呼叫的安裝規則會與呼叫者的規則交錯執行。", + "assets/policies.json.CMP0083": "若要控制是否產生位置獨立可執行檔 (PIE),需在連結階段設定特定旗標。", + "assets/policies.json.CMP0084": "find_package 中不再提供 FindQt 模組。", + "assets/policies.json.CMP0085": "$ 會處理空清單項目。", + "assets/policies.json.CMP0086": "UseSWIG 會透過 -module 旗標遵循 SWIG_MODULE_NAME。", + "assets/policies.json.CMP0087": "install 指令及安裝支援產生器運算式。", + "assets/policies.json.CMP0088": "FindBISON 執行時會在 CMAKE_CURRENT_BINARY_DIR 中執行 bison。", + "assets/policies.json.CMP0089": "IBM 基於 Clang 的 XL 編譯器其編譯器識別碼現為 XLClang。", + "assets/policies.json.CMP0090": "匯出預設不會填入套件登錄。", + "assets/policies.json.CMP0091": "MSVC 執行階段函式庫旗標會透過抽象機制自動選擇。", + "assets/policies.json.CMP0092": "MSVC 的警告旗標預設不包含在 CMAKE__FLAGS 中。", + "assets/policies.json.CMP0093": "FindBoost 以 x.y.z 格式報告 Boost_VERSION。", + "assets/policies.json.CMP0094": "模組 FindPython3、FindPython2 和 FindPython 使用 LOCATION 作為查詢策略。", + "assets/policies.json.CMP0095": "RPATH 項目會在中介的 CMake 安裝指令碼中正確跳脫。", + "assets/policies.json.CMP0096": "project 指令會保留版本元件中的前導零。", + "assets/policies.json.CMP0097": "在 ExternalProject_Add 中將 GIT_SUBMODULES 設為 \"\" 時,不會初始化任何子模組。", + "assets/policies.json.CMP0098": "FindFLEX 執行時會在目錄 CMAKE_CURRENT_BINARY_DIR 中執行 flex。", + "assets/policies.json.CMP0099": "連結屬性會透過靜態函式庫的私人相依性進行傳遞。", + "assets/policies.json.CMP0100": "允許 AUTOMOC 與 AUTOUIC 處理副檔名結尾為 .hh 的標頭檔案。", + "assets/policies.json.CMP0101": "target_compile_options 現在一律遵循 BEFORE 關鍵字。", + "assets/policies.json.CMP0102": "若快取項目不存在,mark_as_advanced 指令不再建立新的快取項目。", + "assets/policies.json.CMP0103": "不再允許對同一個檔案多次呼叫 export 指令而不使用 APPEND。", + "assets/policies.json.CMP0104": "當 CMAKE_CUDA_COMPILER_ID _COMPILER_ID> 為 NVIDIA 時,會初始化 CMAKE_CUDA_ARCHITECTURES。若 CUDA_ARCHITECTURES 為空,則會產生錯誤。", + "assets/policies.json.CMP0105": "LINK_OPTIONS 和 INTERFACE_LINK_OPTIONS 目標屬性現在用於裝置連結步驟。", + "assets/policies.json.CMP0106": "Documentation 模組已移除。", + "assets/policies.json.CMP0107": "不允許建立與其他目標同名的 ALIAS 目標。", + "assets/policies.json.CMP0108": "目標不允許透過 ALIAS 目標與自己連結。", + "assets/policies.json.CMP0109": "find_program 只要求執行權限,不要求讀取權限。", + "assets/policies.json.CMP0110": "add_test 支援在測試名稱中使用任意字元。", + "assets/policies.json.CMP0111": "若匯入目標缺少其位置屬性,在產生階段會失敗。", + "assets/policies.json.CMP0112": "目標檔案元件的產生器運算式不會新增目標相依性。", + "assets/policies.json.CMP0113": "Makefile 產生器不會重複執行來自目標相依的自訂指令。", + "assets/policies.json.CMP0114": "ExternalProject 的步驟目標會完全採用其步驟。", + "assets/policies.json.CMP0115": "來源檔案副檔名必須明確。", + "assets/policies.json.CMP0116": "Ninja 產生器會轉換 add_custom_command 所產生的 DEPFILE。", + "assets/policies.json.CMP0117": "MSVC RTTI 旗標 /GR 預設不會加入 CMAKE_CXX_FLAGS _FLAGS>。", + "assets/policies.json.CMP0118": "GENERATED 來源可跨目錄使用,而無需手動標記。", + "assets/policies.json.CMP0119": "LANGUAGE 來源檔案屬性會明確地以指定語言進行編譯。", + "assets/policies.json.CMP0120": "WriteCompilerDetectionHeader 模組已移除。", + "assets/policies.json.CMP0121": "list 指令現在會偵測無效索引。", + "assets/policies.json.CMP0122": "UseSWIG 對 CSharp 語言會採用函式庫名稱的慣例命名。", + "assets/policies.json.CMP0123": "ARMClang 的 CPU/架構編譯與連結旗標必須明確設定。", + "assets/policies.json.CMP0124": "foreach 迴圈變數僅在迴圈範圍內有效。", + "assets/policies.json.CMP0125": "find_file、find_path、find_library 與 find_program 指令會將結果快取在第一個引數指定的變數中。在 CMake 3.21 之前,如果呼叫前已存在同名的快取變數但未指定類型,則同名的一般變數會被捨棄,並始終使用該快取變數 (另可參考 CMP0126,其行為不同但類似)。這與一般慣例相矛盾,因為通常應由一般變數優先於同名的快取變數。若使用者在命令列設定快取變數但未指定類型,例如使用 cmake -DMYVAR=blah 而不是 cmake -DMYVAR:FILEPATH=blah,就可能出現此情況。", + "assets/policies.json.CMP0126": "當此原則設為 NEW 時,set 指令不會從目前範圍中移除同名的一般變數。在舊行為下,在以下情況會從目前範圍移除同名的一般變數:", + "assets/policies.json.CMP0127": "cmake_dependent_option 支援完整的條件語法。", + "assets/policies.json.CMP0128": "當此原則設定為 NEW 時:", + "assets/policies.json.CMP0129": "MCST LCC 編譯器的編譯器識別碼現改為 LCC,而非 GNU。", + "assets/policies.json.CMP0130": "while 指令會診斷條件評估錯誤。", + "assets/policies.json.CMP0131": "LINK_LIBRARIES 支援 :genex:`$` 產生器運算式。", + "assets/policies.json.CMP0132": "第一次執行時不會設定編譯器的環境變數。", + "assets/policies.json.CMP0133": "CPack 模組預設在 CPack DragNDrop 產生器中停用 SLA。", + "assets/policies.json.CMP0134": "find_file、find_path、find_library 和 find_package 指令的預設登錄檢視為 TARGET,find_program 指令則為 BOTH。", + "assets/policies.json.CMP0135": "當使用 ExternalProject_Add 或 FetchContent_Declare 指令的 URL 下載方式時,在 CMake 3.23 及更早版本中,解壓縮內容的時間戳會被設為與壓縮檔內相同。當 URL 變更時,會下載並解壓縮新的壓縮檔,但解壓後內容的時間戳記可能不會比之前的內容更新。即使內容有所變更,任何依賴這些解壓內容的項目也可能不會重新建置。", + "assets/policies.json.CMP0136": "Watcom 執行階段函式庫旗標會透過抽象機制自動選擇。", + "assets/policies.json.CMP0137": "try_compile 在專案模式下會傳遞平台變數。", + "assets/policies.json.CMP0138": "CheckIPOSupported 會使用呼叫專案中的編譯旗標。", + "assets/policies.json.CMP0139": "if 指令支援使用 PATH_EQUAL 運算子進行路徑比較。", + "assets/policies.json.CMP0140": "return 指令會檢查其參數。", + "assets/policies.json.CMP0141": "MSVC 的偵錯資訊格式旗標會透過抽象機制自動選擇。", + "assets/policies.json.CMP0142": "Xcode 產生器不會在函式庫搜尋路徑中附加每個設定的後綴。", + "assets/policies.json.CMP0143": "USE_FOLDERS 全域屬性預設為開啟。", + "assets/policies.json.CMP0144": "find_package 使用大寫的 _ROOT 變數。", + "assets/policies.json.CMP0145": "Dart 和 FindDart 模組已移除。", + "assets/policies.json.CMP0146": "FindCUDA 模組已移除。", + "assets/policies.json.CMP0147": "Visual Studio 產生器會平行建置自訂指令。", + "assets/policies.json.CMP0148": "FindPythonInterp 和 FindPythonLibs 模組已移除。", + "assets/policies.json.CMP0149": "Visual Studio 產生器預設會選取最新版本的 Windows SDK。", + "assets/policies.json.CMP0150": "ExternalProject_Add 和 FetchContent_Declare 指令會將相對的 GIT_REPOSITORY 路徑視為相對於父專案遠端的路徑。", + "assets/policies.json.CMP0151": "AUTOMOC 包含目錄預設為系統包含目錄。", + "assets/policies.json.CMP0152": "file 指令會先解析符號連結,再處理 ../ 元件。", + "assets/policies.json.CMP0153": "不應呼叫 exec_program 指令。", + "assets/policies.json.CMP0154": "使用檔案集的目標中,產生的檔案預設為私人。", + "assets/policies.json.CMP0155": "在支援的情況下,使用至少 C++20 的目標中的 C++ 原始碼會掃描 import。", + "assets/policies.json.CMP0156": "根據連結器的能力,在連結指令列中對函式庫進行去重處理。", + "assets/policies.json.CMP0157": "Swift 的編譯模式會透過抽象機制自動選擇。", + "assets/policies.json.CMP0158": "add_test 僅在交叉編譯時才會遵循 CMAKE_CROSSCOMPILING_EMULATOR。", + "assets/policies.json.CMP0159": "使用 file 搭配 REGEX 時會更新 CMAKE_MATCH_。", + "assets/policies.json.CMP0160": "現在對更多唯讀目標屬性進行設定時會產生錯誤。", + "assets/policies.json.CMP0161": "CPACK_PRODUCTBUILD_DOMAINS 變數預設為 true。", + "assets/policies.json.CMP0162": "Visual Studio 產生器預設會新增 UseDebugLibraries 指標。", + "assets/policies.json.CMP0163": "GENERATED 來源檔案屬性現在在所有目錄中都可見。", + "assets/policies.json.CMP0164": "add_library 在平台不支援時會拒絕建立 SHARED 函式庫。", + "assets/policies.json.CMP0165": "不得在專案之前呼叫 enable_language。", + "assets/policies.json.CMP0166": "TARGET_PROPERTY 會透過靜態函式庫的私有相依關係,傳遞性地評估連結屬性。", + "assets/policies.json.CMP0167": "FindBoost 模組已移除。", + "assets/policies.json.CMP0168": "FetchContent 模組會直接實作步驟,而不再透過子建置。", + "assets/policies.json.CMP0169": "使用單一參數 (已宣告相依性的名稱) 呼叫 FetchContent_Populate 的方式已被棄用。", + "assets/policies.json.CMP0170": "當 FETCHCONTENT_FULLY_DISCONNECTED 設為 true 時,FetchContent_MakeAvailable 與 FetchContent_Populate 會強制要求其來源目錄必須已經存在內容。此要求一直有文件說明,但在 CMake 3.29 及更早版本中並未被檢查或強制執行。當專案預期某個相依項已被下載或建立,但實際上被悄悄跳過時,可能導致難以追蹤的錯誤。", + "assets/policies.json.CMP0171": "codegen 是保留的目標名稱。", + "assets/policies.json.CMP0172": "CPack 模組預設在 CPack WIX 產生器中啟用每台電腦的安裝。", + "assets/policies.json.CMP0173": "CMakeFindFrameworks 模組已移除。", + "assets/policies.json.CMP0174": "cmake_parse_arguments 在單一值關鍵字後若為空白字串,仍會定義相應的變數。", + "assets/policies.json.CMP0175": "add_custom_command 拒絕無效的引數。", + "assets/policies.json.CMP0176": "execute_process 的編碼預設為 UTF-8。", + "assets/policies.json.CMP0177": "會標準化安裝 DESTINATION 路徑。", + "assets/policies.json.CMP0178": "test 指令列會保留空白引數。", + "assets/policies.json.CMP0179": "在連結指令列中對靜態函式庫進行去重時,會保留第一次出現的項目。此原則僅在 CMP0156 設為 NEW 時適用。", + "assets/policies.json.CMP0180": "專案一律會將 _* 設為一般變數。", + "assets/policies.json.CMP0181": "CMAKE_EXE_LINKER_FLAGS、CMAKE_EXE_LINKER_FLAGS_、CMAKE_SHARED_LINKER_FLAGS、CMAKE_SHARED_LINKER_FLAGS_、CMAKE_MODULE_LINKER_FLAGS 與 CMAKE_MODULE_LINKER_FLAGS_ 變數會被解析並重新加上引號,並支援 LINKER: 前綴。", + "assets/policies.json.CMP0182": "在 AIX 上預設建立共用函式庫封存。", + "assets/policies.json.CMP0183": "add_feature_info 支援完整的條件語法。", + "assets/policies.json.CMP0184": "MSVC 執行階段檢查旗標會透過抽象機制自動選擇。", + "assets/policies.json.CMP0185": "FindRuby 不再提供大寫的 RUBY_* 變數。", + "assets/policies.json.CMP0186": "在重複搜尋時,規則運算式中的 ^ 最多只會比對一次。", + "assets/policies.json.CMP0187": "在包含具有副檔名的同名來源檔案之後,可包含沒有副檔名的來源檔案。", + "assets/policies.json.CMP0188": "FindGCCXML 模組已移除。", + "assets/policies.json.CMP0189": "TARGET_PROPERTY 會以傳遞方式評估 LINK_LIBRARIES 屬性。", + "assets/policies.json.CMP0190": "FindPython3、FindPython2 和 FindPython 模組在交叉編譯模式下會強制確保產物的一致性。", + "assets/policies.json.CMP0191": "FindCABLE 模組已移除。", + "assets/policies.json.CMP0192": "GNUInstallDirs 在特殊前綴中會使用絕對路徑 SYSCONFDIR、LOCALSTATEDIR 和 RUNSTATEDIR。", + "assets/policies.json.CMP0193": "當安裝前綴為 / 時,GNUInstallDirs 會將 CMAKE_INSTALL_* 快取為以 usr/ 開頭的路徑。", + "assets/policies.json.CMP0194": "MSVC 不是 ASM 語言的組譯器。", + "assets/policies.json.CMP0195": "建置目錄中的 Swift 模組會使用 Swift 的模組目錄結構。", + "assets/policies.json.CMP0196": "CMakeDetermineVSServicePack 模組已移除。", + "assets/policies.json.CMP0197": "MSVC 的 -machine: 連結旗標不包含在 CMAKE_*_LINKER_FLAGS 變數中。", + "assets/policies.json.CMP0198": "在 CMakeLists.txt 中不會定義 CMAKE_PARENT_LIST_FILE。", + "assets/policies.json.CMP0199": ":genex:`$` 不會比對未選取的對應組態。", + "assets/policies.json.CMP0200": "匯入目標的位置與配置選擇更加一致。", + "assets/policies.json.CMP0201": "Python::NumPy 不依賴 Python::Development.Module。", + "assets/policies.json.CMP0202": "PDB 檔案名稱一律會包含其目標的每個組態後綴。", + "assets/policies.json.CMP0203": "對於以 MSVC ABI 為目標的共用函式庫,會定義 _WINDLL。", + "assets/policies.json.CMP0204": "當目標為 MSVC ABI 時,一律會定義字元集設定。" +} \ No newline at end of file diff --git a/i18n/cht/package.i18n.json b/i18n/cht/package.i18n.json index 1fa95ce333..c48ddd9e85 100644 --- a/i18n/cht/package.i18n.json +++ b/i18n/cht/package.i18n.json @@ -4,6 +4,8 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "cmake-tools.command.cmake.addFileToCMakeLists.title": "Add File to CMake Lists", + "cmake-tools.command.cmake.removeFileFromCMakeLists.title": "Remove File from CMake Lists", "cmake-tools.command.cmake.openCMakePresets.title": "開啟 CMakePresets.json", "cmake-tools.command.cmake.addConfigurePreset.title": "新增設定預設", "cmake-tools.command.cmake.addBuildPreset.title": "新增建置預設", @@ -46,6 +48,9 @@ "cmake-tools.command.cmake.cleanConfigureWithDebugger.title": "使用 CMake 偵錯工具刪除快取並重新設定", "cmake-tools.command.cmake.cleanConfigureAll.title": "刪除快取並重新設定所有專案", "cmake-tools.command.cmake.cleanConfigureAllWithDebugger.title": "刪除快取並使用 CMake 偵錯工具重新設定所有專案", + "cmake-tools.command.cmake.fullCleanConfigure.title": "刪除建置目錄並重新設定", + "cmake-tools.command.cmake.fullCleanConfigureAll.title": "刪除建置目錄並重新設定所有專案", + "cmake-tools.command.cmake.outline.fullCleanConfigureAll.title": "完全清除重新設定所有專案", "cmake-tools.command.cmake.editCacheUI.title": "編輯 CMake 快取 (UI)", "cmake-tools.command.cmake.outline.cleanConfigure.title": "清除重新設定", "cmake-tools.command.cmake.outline.cleanConfigureWithDebugger.title": "使用 CMake 偵錯工具進行清除重新設定", @@ -58,6 +63,9 @@ "cmake-tools.command.cmake.cleanConfigureAndBuild.title": "刪除快取、重新設定和建置", "cmake-tools.command.cmake.cleanConfigureAndBuildAll.title": "刪除快取、重新設定和建置所有專案", "cmake-tools.command.cmake.outline.cleanConfigureAndBuildAll.title": "清除重新設定和建置所有專案", + "cmake-tools.command.cmake.fullCleanConfigureAndBuild.title": "刪除建置目錄,重新設定並建置", + "cmake-tools.command.cmake.fullCleanConfigureAndBuildAll.title": "刪除建置目錄,重新設定並建置所有專案", + "cmake-tools.command.cmake.outline.fullCleanConfigureAndBuildAll.title": "完全清除重新設定並建置所有專案", "cmake-tools.command.cmake.ctest.title": "執行測試", "cmake-tools.command.cmake.ctestAll.title": "執行所有專案的測試", "cmake-tools.command.cmake.cpack.title": "執行 CPack", @@ -74,6 +82,7 @@ "cmake-tools.command.cmake.launchTarget.title": "執行但不進行偵錯", "cmake-tools.command.cmake.launchTargetAll.title": "執行所有專案但不進行偵錯", "cmake-tools.command.cmake.selectLaunchTarget.title": "設定啟動/偵錯目標", + "cmake-tools.command.cmake.selectBuildAndLaunchTarget.title": "設定建置及啟動/偵錯目標", "cmake-tools.command.cmake.stop.title": "取消建置", "cmake-tools.command.cmake.stopAll.title": "取消所有專案的組建", "cmake-tools.command.cmake.resetState.title": "重設 CMake Tools 延伸模組狀態 (進行疑難排解)", @@ -105,6 +114,7 @@ "cmake-tools.configuration.cmake.generator.description": "要使用的 CMake 產生器。", "cmake-tools.configuration.cmake.toolset.description": "進行組態時要使用的 CMake 工具組。", "cmake-tools.configuration.cmake.platform.description": "進行組態時要使用的 CMake 平台。", + "cmake-tools.configuration.cmake.shell.description": "執行 CMake、CTest 和 CPack 指令時所使用的 shell 執行檔路徑 (例如 Git Bash 或 MSYS2)。設定後,所有子程序呼叫都會透過此 shell 路由。此功能對需要 POSIX 路徑翻譯的嵌入式工具鏈特別有用。若為 null,則使用預設系統 shell 行為。", "cmake-tools.configuration.cmake.configureArgs.description": "進行組態時會傳遞到 CMake 的其他引數。使用 CMake 預設時,這些引數會臨時附加至使用中設定預設所提供的引數。", "cmake-tools.configuration.cmake.buildArgs.description": "建置時會傳遞到 CMake 的其他引數。使用 CMake 預設時,這些引數會臨時附加至使用中組建預設所提供的引數。", "cmake-tools.configuration.cmake.buildToolArgs.description": "建置時會傳遞到基礎建置工具的其他引數。使用 CMake 預設時,這些引數會臨時附加至使用中組建預設所提供的引數,以叫用組建工具。", @@ -112,7 +122,7 @@ "cmake-tools.configuration.cmake.ctestPath.description": "CTest 可執行檔的路徑。若為 null,將會從 cmake.cmakePath 推斷 (建議保留 null)。", "cmake-tools.configuration.cmake.cpackPath.description": "CPack 可執行檔的路徑。如果為 null,將從 cmake.cmakePath 推斷 (建議保留 null)。當使用套件而不是預設時,將被略過。", "cmake-tools.configuration.cmake.ctest.parallelJobs.markdownDescription": "平行測試工作的數量。使用零以使用 `#cmake.parallelJobs#` 的值。這僅適用於 `#cmake.ctest.allowParallelJobs#` 設定為 `true` 的情况。", - "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "允許 ctest 平行執行,但結果輸出可能因此而出現亂碼,且測試總管可能無法精確反映測試進度。", + "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "允許 ctest 平行執行,但結果輸出可能因此而出現亂碼,且測試總管可能無法精確反映測試進度。停用時,測試會依字母順序循序執行,並符合測試總管顯示順序。", "cmake-tools.configuration.cmake.ctest.testExplorerIntegrationEnabled.description": "是否已啟用與測試總管的整合。如果您偏好使用不同的延伸模組進行測試整合,這有助於停用。", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiter.markdownDescription": "選擇性分隔符號,用來在測試總管中以階層方式分隔測試套件名稱和群組測試。此字串用於規則運算式,因此某些分隔符號可能需要逸出。範例:`-` (一個分隔符號:`-`)、`\\.|::` (兩個分隔符號:`.` 或 `::`。請注意,`.` 必須逸出。)", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiterMaxOccurrence.markdownDescription": "分隔符號可用來分割測試名稱的次數上限。`0` 表示沒有限制。", @@ -124,9 +134,21 @@ "cmake-tools.configuration.cmake.ctest.failurePatterns.actual": "實際測試輸出的相符群組索引。預設為未定義。", "cmake-tools.configuration.cmake.ctest.failurePatterns.expected": "預期測試輸出的相符群組索引。預設為未定義。", "cmake-tools.configuration.cmake.ctest.debugLaunchTarget.description": "在使用 CTest 進行偵錯測試時,從 launch.json 中指定要啟動的目標名稱。根據預設,若目標不存在,這會顯示列出所有可用目標的選擇器。", + "cmake-tools.configuration.cmake.ctest.neverDebugTestsWithLaunchConfiguration.description": "設定為 true 時,一律會在沒有啟動設定的情況下直接偵錯測試,跳過快速選擇選單。預設值為 false。", "cmake-tools.configuration.cmake.parseBuildDiagnostics.description": "剖析警告與錯誤的編譯器輸出。", "cmake-tools.configuration.cmake.enabledOutputParsers.description": "要使用的輸出剖析器。支援的剖析器為 `cmake`、`gcc`、`gnuld` (若為 GNULD 樣式的連結器輸出)、`msvc` (若為 Microsoft Visual C++)、`ghs` (若為具有 --no_wrap_diagnostics --brief_diagnostics 的 Green Hills 編譯器)、`diab` (若為 Wind River Diab 編譯器) 及 `iwyu` (若為 include-what-you-use 診斷)。", - "cmake-tools.configuration.cmake.debugConfig.description": "偵錯目標時,要使用的偵錯組態。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.markdownDescription": "用於組建輸出的額外問題比對器。使用此功能來顯示來自 clang-tidy、PCLint Plus、cppcheck 或透過 CMake 中的 `add_custom_command`/`add_custom_target` 整合之自訂指令碼等工具的診斷資訊。\n\n每個項目會定義一個 `name` (作為診斷來源標籤)、一個 `regexp`,以及用於擷取 `file`、`line`、`column`、`severity`、`message` 和 `code` 的群組索引。\n\n例如,若要比對 `/path/file.cpp:10:5: warning: some message [check-name]` 等 clang-tidy 輸出:\n```json\n[\n {\n \"name\": \"clang-tidy\",\n \"regexp\": \"^(.+?):(\\\\d+):(\\\\d+):\\\\s+(warning|error|note):\\\\s+(.+?)\\\\s*(?:\\\\[(.+)\\\\])?$\",\n \"file\": 1,\n \"line\": 2,\n \"column\": 3,\n \"severity\": 4,\n \"message\": 5,\n \"code\": 6\n }\n]\n```\n\n自訂比對會在內建解析器 (如 `gcc`、`msvc` 等) 之後執行,因此不會搶先處理內建編譯器的行。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.name": "此比對的唯一名稱,作為問題面板中診斷的來源標籤。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.regexp": "用於比對每個組建輸出行的規則運算式。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.file": "檔案路徑的擷取群組索引。預設為 `1`。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.line": "資料行號碼的擷取群組索引。預設值為 `2`。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.column": "資料行號碼的擷取群組索引。選用。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.group": "嚴重程度的擷取群組索引 (應擷取「錯誤」、「警告」或「資訊」)。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.fixed": "對此模式的所有配對套用固定的嚴重程度。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.message": "診斷訊息的擷取群組索引。預設為 `3`。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.code": "可選的診斷代碼擷取群組索引。", + "cmake-tools.configuration.cmake.debugConfig.description": "偵錯目標時,要使用的偵錯設定。當指定 `type` 時,將跳過自動偵測到的偵錯工具設定,並且僅從目標產生最小的基本設定 (程式、cwd、名稱)。其他所有屬性皆由此設定套用,讓您能完全掌控所有偵錯介面卡的偵錯啟動設定。", + "cmake-tools.configuration.cmake.debugConfig.type.description": "要使用的偵錯介面卡類型 (例如 `cppdbg`、`cppvsdbg`、`lldb`、`codelldb`)。設定後,會跳過 CMake 快取中的自動偵錯工具偵測,直接使用此類型。偵錯介面卡所需的任何額外屬性都可以新增至 `#cmake.debugConfig#`。", "cmake-tools.configuration.cmake.debugConfig.symbolSearchPath.description": "Visual Studio 偵錯工具符號搜尋路徑。", "cmake-tools.configuration.cmake.debugConfig.additionalSOLibSearchPath.description": "要搜尋是否有 .so 檔案的 GDB 或 LLDB 路徑。", "cmake-tools.configuration.cmake.debugConfig.externalConsole.description": "為程式啟動外部主控台。", @@ -226,11 +248,13 @@ "cmake-tools.configuration.cmake.automaticReconfigure.description": "當套件或設定預設變更時,自動設定 CMake 專案目錄。", "cmake-tools.configuration.cmake.pinnedCommands.description": "默認永遠釘選的 CMake 命令清單。這些會出現在 [CMake Tools] 側邊欄的 [已釘選的命令] 區段中。", "cmake-tools.configuration.cmake.enableAutomaticKitScan.description": "未選取套件時啟用套件的自動掃描。只有在未使用 CMake 預設時才會生效。", + "cmake-tools.configuration.cmake.removeStaleKitsOnScan.description": "Remove compiler-based kits from the user kits file during a full kit scan when they are no longer rediscovered. Set \"keep\": true in a kit entry to preserve it.", "cmake-tools.configuration.cmake.enableLanguageServices.description": "啟用 CMake 檔案的語言服務。這將啟用語法強調、程式碼完成及其他功能。", "cmake-tools.configuration.cmake.preRunCoverageTarget.description": "使用測試總管對涵蓋範圍執行測試之前的建置目標", "cmake-tools.configuration.cmake.postRunCoverageTarget.description": "使用測試總管對涵蓋範圍執行測試之後的建置目標", "cmake-tools.configuration.cmake.coverageInfoFiles.description": "使用測試總管對涵蓋範圍執行測試之後,要處理的 LCOV 涵蓋範圍資訊檔案。", "cmake-tools.configuration.cmake.useFolderPropertyInBuildTargetDropdown.description": "控制預設建置目標下拉式功能表是否依據 CMake 資料夾群組進行分組。", + "cmake-tools.configuration.cmake.setBuildTargetSameAsLaunchTarget.description": "啟用後,設定啟動/偵錯目標會自動將組建目標設定為比對。組建目標仍可獨立變更。", "cmake-tools.debugger.pipeName.description": "用於偵錯工具通訊的管道 (在 Windows 上) 或網域通訊端 (在 Unix 上) 的名稱。", "cmake-tools.debugger.clean.description": "在設定之前先清除。", "cmake-tools.debugger.configureAll.description": "設定所有專案。", @@ -262,6 +286,7 @@ "cmake-tools.configuration.cmake.launchBehavior.breakAndReuseTerminal.markdownDescriptions": "已重複使用啟動終端機執行個體,並在啟動目標之前傳送 `break` 命令以終止任何使用中的前景進程。", "cmake-tools.configuration.cmake.launchBehavior.newTerminal.markdownDescriptions": "已建立新的終端機執行個體,並在其中啟動目標。不會自動清除現有的終端機。", "cmake-tools.configuration.cmake.loadCompileCommands.description": "控制延伸模組是否要讀取 compile_commands.json 以啟用單一檔案編譯。", + "cmake-tools.configuration.cmake.outlineViewType.description": "Project Outline View`s type. Available options are: \"list\" and \"tree\".", "cmake-tools.command.cmake.projectStatus.update.title": "重新整理專案狀態", "cmake-tools.command.cmake.pinnedCommands.add.title": "新增要釘選的 CMake 命令", "cmake-tools.command.cmake.pinnedCommands.remove.title": "取消釘選命令", @@ -272,5 +297,33 @@ "cmake-tools.debugger.label": "CMake 偵錯工具", "cmake-tools.command.cmake.appendBuildDirectoryToWorkspace.title": "將組建目錄附加到目前工作區", "cmake-tools.command.workbench.action.tasks.configureTaskRunner.title": "設定工作", - "cmake-tools.command.workbench.action.tasks.runTask.title": "執行工作" + "cmake-tools.command.workbench.action.tasks.runTask.title": "執行工作", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.description": "Add source files to CMake lists when they are created.", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.no.description": "Do not automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.yes.description": "Automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.description": "Remove source files from CMake lists when they are deleted.", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.no.description": "Do not automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.yes.description": "Automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.markdownDescription": "How to choose which `set()` or `list(APPEND/PREPEND/INSERT)` command invocation to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.never.description": "Do not look for variable modification command invocations, only look for source command invocations.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askFirstParentDir.description": "Present a Quick Pick with options from the first `CMakeLists.txt` found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askParentDirs.description": "Present a Quick Pick with options from all `CMakeLists.txt` files found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.sourceVariables.markdownDescription": "Variables to add source files to. Variables appearing earlier in this list will be given higher priority. Only used if `#cmake.modifyLists.variableSelection#` is not `never`. Supports glob patterns.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.description": "How to choose which target to add new source files to when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askNearestSourceDir.description": "Present a Quick Pick with targets whose source directories are closest to location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askParentSourceDirs.description": "Present a Quick Pick with targets whose source directories contain the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.description": "How to choose which of a target's source command invocations to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askFirstParentDir.description": "Present a Quick Pick with options from the CMake list file in the parent directory closest to the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askParentDirs.description": "Present a Quick Pick with options from all CMake list files in the parent directories of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSourceCommands.markdownDescription": "Commands to treat as target source commands when adding source files CMake lists. Commands appearing earlier in this list will be given higher priority. Supports glob patterns.\r\n\r\nIf you are using the File API (see `#cmake.cmakeCommunicationMode#`), user-defined functions and macros which call the commands in this list are detected automatically and added to it.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.description": "How to choose which of a target's visibility scopes, file sets, or source keyword parameters to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.ask.description": "Present a Quick Pick with options from the selected target source command invocation.", + "cmake-tools.configuration.cmake.modifyLists.sourceListKeywords.markdownDescription": "Keyword arguments to user-defined functions and macros which introduce lists of source files. If left empty, all arguments consisting of only upper-case letters and underscores will be considered. Supports glob patterns.", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier" } \ No newline at end of file diff --git a/i18n/cht/schemas/kits-schema.json.i18n.json b/i18n/cht/schemas/kits-schema.json.i18n.json index 7b80d3d02e..2f61138158 100644 --- a/i18n/cht/schemas/kits-schema.json.i18n.json +++ b/i18n/cht/schemas/kits-schema.json.i18n.json @@ -17,9 +17,11 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "工具鏈檔案路徑", "schemas/kits-schema.json.items.properties.visualStudio": "Visual Studio 產品的執行個體識別碼", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "要設為目標的架構", + "schemas/kits-schema.json.items.properties.visualStudioArguments": "Arguments to vcvarsall.bat", "schemas/kits-schema.json.items.properties.environmentSetupScript": "修改套件環境的指令碼絕對路徑", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "環境變數的值", - "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "CMake 設定的值", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.0": "CMake 設定的值。字串中的分號會逸出。", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.1": "值以分號連接以形成 CMake 清單,且不逸出。", "schemas/kits-schema.json.items.properties.preferredGenerator": "設定此套件的慣用 CMake 產生器", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.name": "要使用之產生器的名稱", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.platform": "-A 引數的 CMake 平台", diff --git a/i18n/cht/src/cmakeListsModifier.i18n.json b/i18n/cht/src/cmakeListsModifier.i18n.json new file mode 100644 index 0000000000..a3c9d1d6a2 --- /dev/null +++ b/i18n/cht/src/cmakeListsModifier.i18n.json @@ -0,0 +1,51 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "add.newly.created.files": "Add newly created files to CMakeLists.txt", + "error.processing.add.files": "Error processing added files", + "remove.deleted.file": "Remove a deleted file from CMakeLists.txt", + "error.processing.delete.files": "Error processing deleted files", + "add.file.no.code.model": "Adding a file without a valid code model", + "file.already.in.target": "{0} already in target {1}.", + "no.targets.found": "No targets found. {0} not added to build system.", + "no.source.command.invocations": "No source command invocations found. {0} not added to build system.", + "delete.file.no.code.model": "Deleting a file without a valid code model", + "not.modifying.unsaved.delete": "Not modifying {0} to delete {1} because it has unsaved changes.", + "add.to.which.variable": "CMake: Add {0} to which variable?", + "add.to.which.target": "CMake: Add {0} to which target?", + "add.to.which.invocation": "CMake: Add {0} to which command invocation of {1}?", + "add.to.which.scope.fileset.keyword": "CMake: Add {0} to which Scope, File Set, or Keyword?", + "open.file": "Open File", + "not.modifying.unsaved.files": "Cannot modify {0} because it has unsaved changes.", + "skipping.unsaved.files": "Skipping {0} file(s) with unsaved changes: {1}", + "edit.label.remove.source.file": "CMake: Remove deleted source file", + "edit.label.add.source.file": "CMake: Add new source file", + "edits.applied.successfully": "Successfully applied {0} CMake list edit(s).", + "edits.apply.failed": "Failed to apply CMake list edits: {0}", + "not.local.file.add": "{0} is not a local file. Not adding to CMake lists.", + "no.candidates.found": "No suitable locations found to add {0}.", + "not.modifying.unsaved.add": "Not modifying {0} to add {1} because it has unsaved changes.", + "not.local.file.remove": "{0} is not a local file. Not removing from CMake lists.", + "could.not.open.file": "Could not open file {0}: {1}", + "file.not.found.in.cmake.lists": "{0} not found in CMake lists.", + "file.already.in.destination": "{0} already in {1} at {2}:{3}", + "parse.error.examining.cmake.lists": "Parse error while examining CMakeLists.txt files. Details: {0}", + "could.not.open.cmake.lists": "Could not open {0}: {1}", + "parse.error.finding.invocations": "Parse error while finding command invocations to add to. CMake file modified since last configure? Details: {0}", + "unexpected.command.found": "Found \"{0}\", expected \"{1}\". CMake file modified since last configure? Details: {2}:{3}", + "scope.private.detail": "{0} will be used to build {1}", + "scope.public.detail": "{0} will be used to build both {1} and targets that use {1}", + "scope.interface.detail": "{0} will be used to build targets that use {1}", + "fileset.headers.detail": "{0} will be used via a language's #include mechanism", + "fileset.cxx.modules.detail": "{0} contains C++ interface module or partition units.", + "label.fileset": "{0} File Set", + "label.scope": "{0} Scope", + "fileset.type": "Type: {0}", + "scope.with.fileset.detail": "{0} Scope: {1}", + "keyword.of.command": "Keyword of {0} command", + "command.label": "{0} Command", + "add.to.command.arguments": "Add {0} to the list of arguments to {1} command" +} \ No newline at end of file diff --git a/i18n/cht/src/cmakeProject.i18n.json b/i18n/cht/src/cmakeProject.i18n.json index 8ef77e76b4..e3bab38bd8 100644 --- a/i18n/cht/src/cmakeProject.i18n.json +++ b/i18n/cht/src/cmakeProject.i18n.json @@ -9,6 +9,7 @@ "generator.changed.restart.driver": "在產生器變更後重新啟動 CMake 驅動程式。", "preferredGenerator.changed.restart.driver": "在 preferredGenerators 變更後重新啟動 CMake 驅動程式。", "bad.executable": "錯誤的 CMake 可執行檔: {0}。請檢查以確定已安裝,或 {1} 設定的值包含正確的路徑", + "shell.changed.restart.driver": "在殼層變更後重新啟動 CMake 驅動程式。", "targests.in.preset": "[預設的目標]", "constructing.cmakeproject": "建構新的 CMakeProject 執行個體", "disposing.driver": "處置 CMake 驅動程式", @@ -142,9 +143,9 @@ "configure.now.button": "立即設定", "cache.load.failed": "找不到任何 CMakeCache.txt 檔案。請先設定專案!", "set.up.before.selecting.target": "先設定 CMake 專案,再選取目標。", - "select.active.target.tooltip": "選取預設建置目標", "enter.target.name": "輸入目標名稱", "target.to.build.description": "要建置的目標", + "select.active.target.tooltip": "選取預設建置目標", "build.failed": "建置失敗。", "driver.died.after.build.succeeded": "建置成功後,CMake 驅動程式已隨即終止。", "driver.died.before.workflow": "CMake 驅動程式在開始工作流程之前已中止。", @@ -167,6 +168,7 @@ "target.debugging.unsupported": "舊版驅動程式已不再支援目標偵錯", "learn.more.button": "深入了解", "failed.to.prepare.target": "無法準備名稱為 {0} 的可執行目標", + "debug.configuration.from.settings": "偵錯使用者設定中的設定: {0}", "debug.configuration.from.cache": "快取中的偵錯組態: {0}", "problem.getting.debug": "取得快取中的偵錯組態時發生問題。", "starting.debugger.with": "正在使用下列組態啟動偵錯工具。", diff --git a/i18n/cht/src/ctest.i18n.json b/i18n/cht/src/ctest.i18n.json index 55ee2ec197..2ef1213a30 100644 --- a/i18n/cht/src/ctest.i18n.json +++ b/i18n/cht/src/ctest.i18n.json @@ -27,6 +27,13 @@ "test.buildingPostRunCoverageTarget": "對涵蓋範圍執行測試之後,建置專案 {1} 的 postRunCoverageTarget '{0}'。", "test.postRunCoverageTargetFailure": "在 {0} 的專案上建置目標 postRunCoverageTarget 失敗。正在略過涵蓋範圍資料的處理。", "test.skip.run.build.failure": "由於建置失敗,沒有執行中的測試。", + "debug.without.launch.config": "不使用啟動設定偵錯", + "choose.debug.method": "選擇如何進行偵錯測試。", + "yes": "是", + "no": "否", + "never.debug.with.launch.prompt": "您想在此工作區中,一律在沒有啟動設定的情況下除錯測試嗎?", + "no.launch.config": "找不到啟動設定。", + "choose.launch.config": "選擇要對測試進行偵錯的啟動設定。", "test.skip.debug.build.failure": "由於建置失敗,沒有偵錯中的測試。", "build.failed": "建置失敗", "run.tests.profile": "執行測試", diff --git a/i18n/cht/src/drivers/cmakeDriver.i18n.json b/i18n/cht/src/drivers/cmakeDriver.i18n.json index be11cbe470..b47c4fc19b 100644 --- a/i18n/cht/src/drivers/cmakeDriver.i18n.json +++ b/i18n/cht/src/drivers/cmakeDriver.i18n.json @@ -5,13 +5,14 @@ // Do not edit this file. It is machine generated. { "no.usable.generator.found": "找不到可用的產生器。", - "user.closed.file.compilation.terminal": "使用者已關閉檔案編譯終端機", "disposing.base.cmakedriver": "正在處置基底 CMakeDriver", "async.disposing.cmake.driver": "非同步處置 CMake 驅動程式", "test.with.overrides": "注意: 您正使用預設 {0} 進行測試,但您的 VS Code 設定中正在套用某些覆寫。", "package.with.overrides": "注意: 您正使用預設 {0} 進行封裝,但從 VS Code 設定中正在套用某些覆寫。", "compile.with.overrides": "注意: 您正使用預設 {0} 進行編譯,但您的 VS Code 設定中正在套用某些覆寫。", "file.compilation": "檔案編譯", + "compile.finished.with.error": "編譯完成,但發生錯誤。", + "compile.finished.successfully": "已成功完成編譯。", "removing": "移除 {0}", "unlink.failed": "無法移除快取檔案 {0}", "switching.to.config.preset": "切換以設定預設: {0}", diff --git a/i18n/cht/src/extension.i18n.json b/i18n/cht/src/extension.i18n.json index 6059f6e19c..b741336884 100644 --- a/i18n/cht/src/extension.i18n.json +++ b/i18n/cht/src/extension.i18n.json @@ -11,10 +11,11 @@ "configure.now.button": "立即設定", "configure.recommended": "建議您在升級為新套件定義後重新設定。", "using.cache.to.configure.workspace.on.open": "正在嘗試使用快取來設定工作區 {0}", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier", + "failed.to.open.cache.file.on.code.model.update": "Failed to open CMake cache file on code model update", "update.code.model.for.cpptools": "更新 cpptools 的程式碼模型", "update.intellisense.disabled": "未更新設定提供者,因為 {0} 設定為 {1}", "failed.to.get.cpptools.api": "無法取得 cppTools API", - "filed.to.open.cache.file.on.code.model.update": "無法在程式碼模型更新時開啟 CMake 快取檔案", "opening.text.editor.for": "正在開啟 {0} 的文字編輯器", "no.kits.file.what.to.do": "沒有套件檔案存在。要執行什麼作業?", "scan.for.kits.button": "掃描套件", @@ -49,6 +50,7 @@ "cmake.finished.returned.unserializable": "{0} 已完成 (傳回無法序列化的值)", "loading.extension.commands": "正在載入延伸模組命令", "register.command": "註冊 CMakeTools 延伸模組命令 {0}", + "bookmark.target.not.resolved": "書籤「{0}」無法解析為目標。專案可能需要重新配置。", "search.project.outline": "輸入搜尋字詞以篩選專案大綱", "added.to": "已新增至", "removed.from": "已移除自", diff --git a/i18n/cht/src/proc.i18n.json b/i18n/cht/src/proc.i18n.json index 8af45872dc..9409a4f5a1 100644 --- a/i18n/cht/src/proc.i18n.json +++ b/i18n/cht/src/proc.i18n.json @@ -6,11 +6,11 @@ { "executing.command": "正在執行命令: {0}", "execution.environment": " 具有環境: {0}", - "process.error": "命令: {0} 已失敗,出現錯誤: {1} 堆疊: {2}", - "process.exit.with.signal": "命令 {0} 已結束,出現代碼: {1} 和訊號 {2} 堆疊: {3}", - "process.exit": "命令: {0} 已結束,出現代碼: {1} 堆疊: {2}", - "process.exit.stdout": "標準輸出上的命令輸出: {0} 堆疊: {1}", - "process.exit.stderr": "標準錯誤上的命令輸出: {0} 堆疊: {1}", + "process.error": "命令 {0} 失敗,錯誤為 {1}", + "process.exit.with.signal": "命令 {0} 已結束,代碼為 {1} 且訊號為 {2}", + "process.exit": "命令: {0} 結束,出現代碼: {1}。", + "process.exit.stdout": "標準輸出上的命令輸出: {0}", + "process.exit.stderr": "標準錯誤上的命令輸出: {0}", "processing.data.event.stdout": "正在處理來自流程 stdout 的 {0} 事件", "processing.data.event.stderr": "正在處理來自流程 stderr 的 {0} 事件", "resolving.close.event": "正在解決 {0} 事件上的流程" diff --git a/i18n/cht/src/util.i18n.json b/i18n/cht/src/util.i18n.json index 2ee7b65c69..a3ee41c2b6 100644 --- a/i18n/cht/src/util.i18n.json +++ b/i18n/cht/src/util.i18n.json @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "invalid.value": "轉換成 cmake 值的值無效: {0}", "invalid.version.string": "版本字串 {0} 無效", "extension.is.undefined": "未定義延伸模組!", "sourcedirectory.not.a.directory": "\"sourceDirectory\" 不是目錄" diff --git a/i18n/csy/assets/policies.json.i18n.json b/i18n/csy/assets/policies.json.i18n.json new file mode 100644 index 0000000000..926f447ea9 --- /dev/null +++ b/i18n/csy/assets/policies.json.i18n.json @@ -0,0 +1,212 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "assets/policies.json.CMP0000": "Musí být zadána minimální požadovaná verze CMake.", + "assets/policies.json.CMP0001": "Proměnná CMAKE_BACKWARDS_COMPATIBILITY by se již neměla používat.", + "assets/policies.json.CMP0002": "Názvy logických cílů musí být globálně jedinečné.", + "assets/policies.json.CMP0003": "Knihovny propojené přes úplnou cestu už nevytvářejí cesty pro hledání linkeru.", + "assets/policies.json.CMP0004": "Linkované knihovny nesmí mít na začátku ani na konci prázdné znaky.", + "assets/policies.json.CMP0005": "Hodnoty definicí preprocesoru jsou nyní automaticky upravovány pomocí řídicích sekvencí.", + "assets/policies.json.CMP0006": "Instalace cílů MACOSX_BUNDLE vyžaduje BUNDLE DESTINATION.", + "assets/policies.json.CMP0007": "Příkaz list již neignoruje prázdné elementy.", + "assets/policies.json.CMP0008": "Knihovny propojené úplnou cestou musí mít platný název souboru knihovny.", + "assets/policies.json.CMP0009": "Volání FILE GLOB_RECURSE by ve výchozím nastavení nemělo následovat symbolické odkazy.", + "assets/policies.json.CMP0010": "Chybná syntaxe odkazu na proměnnou je chyba.", + "assets/policies.json.CMP0011": "Zahrnuté skripty automaticky provádějí cmake_policy PUSH a POP.", + "assets/policies.json.CMP0012": "Příkaz if rozpoznává čísla a logické konstanty.", + "assets/policies.json.CMP0013": "Duplicitní adresáře binárních souborů nejsou povoleny.", + "assets/policies.json.CMP0014": "Vstupní adresáře musí obsahovat soubor CMakeLists.txt.", + "assets/policies.json.CMP0015": "link_directories považuje cesty za relativní vůči zdrojovému adresáři.", + "assets/policies.json.CMP0016": "target_link_libraries hlásí chybu, pokud jako jediný argument nemá cíl.", + "assets/policies.json.CMP0017": "Preferovat soubory z adresáře modulů CMake při jejich zahrnutí z tohoto adresáře", + "assets/policies.json.CMP0018": "Ignorovat proměnnou CMAKE_SHARED_LIBRARY__FLAGS.", + "assets/policies.json.CMP0019": "Znovu nerozbalovat proměnné v informacích include a linkování", + "assets/policies.json.CMP0020": "Automaticky linkovat spustitelné soubory Qt s cílem qtmain ve Windows", + "assets/policies.json.CMP0021": "Relativní cesty ve vlastnosti cíle INCLUDE_DIRECTORIES způsobují závažnou chybu.", + "assets/policies.json.CMP0022": "INTERFACE_LINK_LIBRARIES definuje rozhraní pro linkování.", + "assets/policies.json.CMP0023": "Signatury plain a keyword příkazu target_link_libraries nelze kombinovat.", + "assets/policies.json.CMP0024": "Nepovolovat výsledek exportu z include", + "assets/policies.json.CMP0025": "ID kompilátoru pro Apple Clang je nyní AppleClang.", + "assets/policies.json.CMP0026": "Zakázat použití vlastnosti LOCATION pro cíle sestavení", + "assets/policies.json.CMP0027": "Podmíněně propojené importované cíle s chybějícími adresáři zahrnutí", + "assets/policies.json.CMP0028": "Dvojitá dvojtečka v názvu cíle znamená cíl typu ALIAS nebo IMPORTED.", + "assets/policies.json.CMP0029": "Příkaz subdir_depends by neměl být volán.", + "assets/policies.json.CMP0030": "Příkaz use_mangled_mesa by neměl být volán.", + "assets/policies.json.CMP0031": "Příkaz load_command by neměl být volán.", + "assets/policies.json.CMP0032": "Příkaz output_required_files by neměl být volán.", + "assets/policies.json.CMP0033": "Příkaz export_library_dependencies by neměl být volán.", + "assets/policies.json.CMP0034": "Příkaz utility_source by neměl být volán.", + "assets/policies.json.CMP0035": "Příkaz variable_requires by neměl být volán.", + "assets/policies.json.CMP0036": "Příkaz build_name by se neměl volat.", + "assets/policies.json.CMP0037": "Názvy cílů by neměly být rezervované a měly by odpovídat vzoru platnosti.", + "assets/policies.json.CMP0038": "Cíle nesmí být přímo linkovány samy na sebe.", + "assets/policies.json.CMP0039": "Cíle typu Utility nesmí mít závislosti linkování.", + "assets/policies.json.CMP0040": "Cíl v signatuře TARGET příkazu add_custom_command musí existovat a musí být definován v aktuálním adresáři.", + "assets/policies.json.CMP0041": "Chyba při relativním include s výrazem generátoru", + "assets/policies.json.CMP0042": "Vlastnost MACOSX_RPATH je ve výchozím nastavení povolena.", + "assets/policies.json.CMP0043": "Ignorovat vlastnosti COMPILE_DEFINITIONS_", + "assets/policies.json.CMP0044": "U výrazů generátoru _COMPILER_ID se rozlišují velká a malá písmena.", + "assets/policies.json.CMP0045": "Chyba u neexistující cíle v get_target_property", + "assets/policies.json.CMP0046": "Chyba u neexistující závislosti v add_dependencies", + "assets/policies.json.CMP0047": "Pro ovladače qcc na QNX použijte ID kompilátoru QCC", + "assets/policies.json.CMP0048": "Příkaz project spravuje proměnné VERSION.", + "assets/policies.json.CMP0049": "Neexpandovat proměnné v položkách zdrojů cíle", + "assets/policies.json.CMP0050": "Nepovolovat signatury add_custom_command typu SOURCE", + "assets/policies.json.CMP0051": "Vypsat TARGET_OBJECTS ve vlastnosti cíle SOURCES", + "assets/policies.json.CMP0052": "Odmítnout zdrojové a sestavovací adresáře v nainstalovaných INTERFACE_INCLUDE_DIRECTORIES", + "assets/policies.json.CMP0053": "Zjednodušit vyhodnocování odkazů na proměnné a řídicích sekvencí", + "assets/policies.json.CMP0054": "Argumenty příkazu if interpretovat jako proměnné nebo klíčová slova pouze tehdy, pokud nejsou v uvozovkách", + "assets/policies.json.CMP0055": "Striktní kontrola příkazu break", + "assets/policies.json.CMP0056": "Respektovat příznaky linkování v signatuře source-file příkazu try_compile", + "assets/policies.json.CMP0057": "Podpora nového operátoru if IN_LIST", + "assets/policies.json.CMP0058": "Ninja vyžaduje explicitní uvedení vedlejších výstupů vlastních příkazů.", + "assets/policies.json.CMP0059": "Nepovažovat DEFINITIONS za integrovanou vlastnost adresáře", + "assets/policies.json.CMP0060": "Propojit knihovny podle úplné cesty i v implicitních adresářích", + "assets/policies.json.CMP0061": "CTest ve výchozím nastavení neinstruuje nástroj make k ignorování chyb (-i).", + "assets/policies.json.CMP0062": "Nepovolovat instalaci výsledku exportu", + "assets/policies.json.CMP0063": "Respektovat vlastnosti viditelnosti pro všechny typy cílů", + "assets/policies.json.CMP0064": "Rozpoznat TEST jako operátor pro příkaz if", + "assets/policies.json.CMP0065": "Nepřidávat příznaky pro export symbolů ze spustitelných souborů bez cílové vlastnosti ENABLE_EXPORTS", + "assets/policies.json.CMP0066": "Respektovat příznaky pro jednotlivé konfigurace v signatuře source-file příkazu try_compile", + "assets/policies.json.CMP0067": "Respektovat standard jazyka v signatuře source-file příkazu try_compile", + "assets/policies.json.CMP0068": "Nastavení RPATH v macOS nemá vliv na install_name.", + "assets/policies.json.CMP0069": "Při povolení se vynucuje INTERPROCEDURAL_OPTIMIZATION.", + "assets/policies.json.CMP0070": "Definovat chování souboru pro relativní cesty", + "assets/policies.json.CMP0071": "Umožnit AUTOMOC a AUTOUIC zpracovávat soubory GENERATED", + "assets/policies.json.CMP0072": "FindOpenGL ve výchozím nastavení preferuje GLVND, pokud je k dispozici.", + "assets/policies.json.CMP0073": "Nevytvářet starší položky mezipaměti _LIB_DEPENDS", + "assets/policies.json.CMP0074": "find_package používá proměnné _ROOT.", + "assets/policies.json.CMP0075": "Makra pro kontrolu souborů include respektují CMAKE_REQUIRED_LIBRARIES.", + "assets/policies.json.CMP0076": "Příkaz target_sources převádí relativní cesty na absolutní.", + "assets/policies.json.CMP0077": "Příkaz option respektuje normální proměnné.", + "assets/policies.json.CMP0078": "UseSWIG generuje standardní názvy cílů.", + "assets/policies.json.CMP0079": "target_link_libraries umožňuje použití s cíli v jiných adresářích.", + "assets/policies.json.CMP0080": "BundleUtilities nelze zahrnout při konfiguraci.", + "assets/policies.json.CMP0081": "Relativní cesty nejsou ve vlastnosti cíle LINK_DIRECTORIES povoleny.", + "assets/policies.json.CMP0082": "Pravidla instalace z volání add_subdirectory jsou prokládána s pravidly ve volajícím adresáři.", + "assets/policies.json.CMP0083": "K řízení toho, zda se generuje Position Independent Executable (PIE), jsou při linkování vyžadovány určité příznaky.", + "assets/policies.json.CMP0084": "Modul FindQt pro find_package neexistuje.", + "assets/policies.json.CMP0085": "$ zpracovává prázdné položky seznamu.", + "assets/policies.json.CMP0086": "UseSWIG respektuje SWIG_MODULE_NAME pomocí přepínače -module.", + "assets/policies.json.CMP0087": "Příkazy install a install podporují výrazy generátoru.", + "assets/policies.json.CMP0088": "Při spuštění spouští FindBISON nástroj bison v adresáři CMAKE_CURRENT_BINARY_DIR.", + "assets/policies.json.CMP0089": "ID kompilátoru pro kompilátory IBM XL založené na Clangu je nyní XLClang.", + "assets/policies.json.CMP0090": "Export ve výchozím nastavení nenaplňuje registr balíčků.", + "assets/policies.json.CMP0091": "Příznaky knihovny runtime MSVC se vybírají prostřednictvím abstrakce.", + "assets/policies.json.CMP0092": "Příznaky upozornění MSVC nejsou ve výchozím nastavení v CMAKE__FLAGS.", + "assets/policies.json.CMP0093": "FindBoost hlásí Boost_VERSION ve formátu x.y.z.", + "assets/policies.json.CMP0094": "Moduly FindPython3, FindPython2 a FindPython používají pro strategii vyhledávání LOCATION.", + "assets/policies.json.CMP0095": "Položky RPATH jsou ve zprostředkujícím instalačním skriptu CMake správně opatřeny řídicími sekvencemi.", + "assets/policies.json.CMP0096": "Příkaz project zachovává úvodní nuly v jednotlivých částech verze.", + "assets/policies.json.CMP0097": "ExternalProject_Add s GIT_SUBMODULES \"\" neinicializuje žádné dílčí moduly.", + "assets/policies.json.CMP0098": "FindFLEX při provádění spustí flex v adresáři CMAKE_CURRENT_BINARY_DIR.", + "assets/policies.json.CMP0099": "Vlastnosti propojení jsou tranzitivně děděny přes privátní závislosti statických knihoven.", + "assets/policies.json.CMP0100": "Nechat AUTOMOC a AUTOUIC zpracovávat hlavičkové soubory s příponou .hh.", + "assets/policies.json.CMP0101": "Příkaz target_compile_options nyní vždy respektuje klíčové slovo BEFORE.", + "assets/policies.json.CMP0102": "Příkaz mark_as_advanced již nevytváří položku v mezipaměti, pokud ještě neexistuje.", + "assets/policies.json.CMP0103": "Vícenásobná volání příkazu export se stejným FILE bez APPEND již nejsou povolena.", + "assets/policies.json.CMP0104": "Inicializovat CMAKE_CUDA_ARCHITECTURES v případě, že CMAKE_CUDA_COMPILER_ID COMPILER_ID> je NVIDIA Vyvolat chybu, pokud je proměnná CUDA_ARCHITECTURES prázdná", + "assets/policies.json.CMP0105": "Vlastnosti cíle LINK_OPTIONS a INTERFACE_LINK_OPTIONS se nyní používají pro krok propojení zařízení.", + "assets/policies.json.CMP0106": "Modul Documentation byl odebrán.", + "assets/policies.json.CMP0107": "Není povoleno vytvořit cíl ALIAS se stejným názvem jako jiný cíl.", + "assets/policies.json.CMP0108": "Cíl se nesmí propojit sám se sebou ani prostřednictvím cíle ALIAS.", + "assets/policies.json.CMP0109": "Příkaz find_program vyžaduje oprávnění ke spuštění, nikoli ke čtení.", + "assets/policies.json.CMP0110": "add_test podporuje v názvech testů libovolné znaky.", + "assets/policies.json.CMP0111": "Importovanému cíli chybí vlastnost umístění během generování.", + "assets/policies.json.CMP0112": "Výrazy generátoru komponent souboru cíle nepřidávají závislosti cíle.", + "assets/policies.json.CMP0113": "Generátory souborů pravidel (Makefile) neopakují vlastní příkazy ze závislostí cíle.", + "assets/policies.json.CMP0114": "Cíle kroků ExternalProject plně přebírají své kroky.", + "assets/policies.json.CMP0115": "Přípony zdrojových souborů musí být explicitní.", + "assets/policies.json.CMP0116": "Generátory Ninja transformují soubory DEPFILE z příkazu add_custom_command.", + "assets/policies.json.CMP0117": "Příznak RTTI /GR nástroje MSVC se ve výchozím nastavení nepřidává do CMAKE_CXX_FLAGS _FLAGS>.", + "assets/policies.json.CMP0118": "Zdroje GENERATED lze používat napříč adresáři bez ručního označení.", + "assets/policies.json.CMP0119": "Vlastnost zdrojového souboru LANGUAGE kompiluje soubor explicitně jako zadaný jazyk.", + "assets/policies.json.CMP0120": "Modul WriteCompilerDetectionHeader byl odebrán.", + "assets/policies.json.CMP0121": "Příkaz list nyní rozpoznává neplatné indexy.", + "assets/policies.json.CMP0122": "UseSWIG používá konvence pojmenování knihoven pro jazyk CSharp.", + "assets/policies.json.CMP0123": "Příznaky kompilace a linkování cpu/arch pro ARMClang musí být nastaveny explicitně.", + "assets/policies.json.CMP0124": "Proměnné smyčky foreach jsou dostupné pouze v rozsahu smyčky.", + "assets/policies.json.CMP0125": "Příkazy find_file, find_path, find_library a find_program ukládají svůj výsledek do mezipaměti v proměnné určené jejich prvním argumentem. Před verzí CMake 3.21 platilo, že pokud již před voláním existovala proměnná mezipaměti s tímto názvem, ale neměla typ, byla jakákoli proměnná mimo mezipaměť se stejným názvem zahozena a vždy byla použita proměnná mezipaměti (viz také CMP0126 pro odlišné, ale podobné chování). To je v rozporu s konvencí, že proměnná mimo mezipaměť má mít přednost před proměnnou mezipaměti se stejným názvem. Taková situace může nastat, pokud uživatel nastaví proměnnou mezipaměti na příkazovém řádku bez určení typu, například cmake -DMYVAR=blah ... místo cmake -DMYVAR:FILEPATH=blah.", + "assets/policies.json.CMP0126": "Pokud je tato zásada nastavena na NEW, příkaz set neodebírá žádnou normální proměnnou se stejným názvem z aktuálního rozsahu. Chování OLD odebírá z aktuálního rozsahu jakoukoli normální proměnnou se stejným názvem v následujících situacích:", + "assets/policies.json.CMP0127": "Příkaz cmake_dependent_option podporuje úplnou syntaxi podmínek.", + "assets/policies.json.CMP0128": "Když je tato zásada nastavená na NEW:", + "assets/policies.json.CMP0129": "ID kompilátoru pro kompilátory MCST LCC je nyní LCC, nikoli GNU.", + "assets/policies.json.CMP0130": "Příkaz while diagnostikuje chyby při vyhodnocování podmínky.", + "assets/policies.json.CMP0131": "LINK_LIBRARIES podporuje výraz generátoru :genex:`$`.", + "assets/policies.json.CMP0132": "Při prvním spuštění nenastavovat proměnné prostředí kompilátoru", + "assets/policies.json.CMP0133": "Modul CPack ve výchozím nastavení zakazuje SLA v generátoru CPack DragNDrop.", + "assets/policies.json.CMP0134": "Výchozí zobrazení registru je TARGET pro příkazy find_file, find_path, find_library a find_package a BOTH pro příkaz find_program.", + "assets/policies.json.CMP0135": "Při použití metody stažení URL s příkazy ExternalProject_Add nebo FetchContent_Declare nastavuje CMake 3.23 a starší verze časová razítka extrahovaného obsahu shodně s časovými razítky v archivu. Když se změní adresa URL, nový archiv se stáhne a extrahuje, ale časová razítka extrahovaného obsahu nemusí být novější než u předchozího obsahu. Cokoli, co závisí na extrahovaném obsahu, se nemusí znovu sestavit, i když se obsah může změnit.", + "assets/policies.json.CMP0136": "Příznaky běhové knihovny Watcom se vybírají prostřednictvím abstrakce.", + "assets/policies.json.CMP0137": "Příkaz try_compile předává proměnné platformy v režimu project.", + "assets/policies.json.CMP0138": "CheckIPOSupported používá příznaky z volajícího projektu.", + "assets/policies.json.CMP0139": "Příkaz if podporuje porovnávání cest pomocí operátoru PATH_EQUAL.", + "assets/policies.json.CMP0140": "Příkaz return kontroluje své parametry.", + "assets/policies.json.CMP0141": "Příznaky formátu informací pro ladění MSVC se vybírají prostřednictvím abstrakce.", + "assets/policies.json.CMP0142": "Generátor Xcode nepřipojuje k cestám pro vyhledávání knihoven přípony podle konfigurace.", + "assets/policies.json.CMP0143": "Globální vlastnost USE_FOLDERS je ve výchozím nastavení považována za zapnutou (ON).", + "assets/policies.json.CMP0144": "Příkaz find_package používá proměnné _ROOT psané velkými písmeny.", + "assets/policies.json.CMP0145": "Moduly Dart a FindDart byly odebrány.", + "assets/policies.json.CMP0146": "Modul FindCUDA byl odebrán.", + "assets/policies.json.CMP0147": "Generátory sady Visual Studio sestavují vlastní příkazy paralelně.", + "assets/policies.json.CMP0148": "Moduly FindPythonInterp a FindPythonLibs byly odebrány.", + "assets/policies.json.CMP0149": "Generátory sady Visual Studio ve výchozím nastavení vybírají nejnovější sadu Windows SDK.", + "assets/policies.json.CMP0150": "Příkazy ExternalProject_Add a FetchContent_Declare považují relativní cesty GIT_REPOSITORY za relativní vůči vzdálenému úložišti nadřazeného projektu.", + "assets/policies.json.CMP0151": "Adresář pro soubory include AUTOMOC je ve výchozím nastavení systémový adresář include.", + "assets/policies.json.CMP0152": "Příkaz file vyhodnocuje symbolické odkazy před zjednodušením částí cesty ../.", + "assets/policies.json.CMP0153": "Příkaz exec_program by neměl být volán.", + "assets/policies.json.CMP0154": "Generované soubory jsou ve výchozím nastavení v cílech používajících sady souborů soukromé.", + "assets/policies.json.CMP0155": "Ve zdrojových souborech C++ v cílech s alespoň C++20 se při dostupné podpoře vyhledávají importy.", + "assets/policies.json.CMP0156": "Odstraňovat duplicity knihoven na řádcích linkování podle schopností linkeru", + "assets/policies.json.CMP0157": "Režim kompilace Swift se vybírá prostřednictvím abstrakce.", + "assets/policies.json.CMP0158": "add_test respektuje CMAKE_CROSSCOMPILING_EMULATOR pouze při křížové kompilaci.", + "assets/policies.json.CMP0159": "Příkaz file s REGEX aktualizuje CMAKE_MATCH_.", + "assets/policies.json.CMP0160": "Další vlastnosti cíle jen pro čtení nyní při pokusu o jejich nastavení způsobí chybu.", + "assets/policies.json.CMP0161": "Proměnná CPACK_PRODUCTBUILD_DOMAINS má výchozí hodnotu true.", + "assets/policies.json.CMP0162": "Generátory sady Visual Studio ve výchozím nastavení přidávají indikátory UseDebugLibraries.", + "assets/policies.json.CMP0163": "Vlastnost zdrojového souboru GENERATED je nyní viditelná ve všech adresářích.", + "assets/policies.json.CMP0164": "add_library odmítne sdílené knihovny, pokud je platforma nepodporuje.", + "assets/policies.json.CMP0165": "Příkaz enable_language nesmí být volán před příkazem project.", + "assets/policies.json.CMP0166": "TARGET_PROPERTY vyhodnocuje vlastnosti linkování tranzitivně přes privátní závislosti statických knihoven.", + "assets/policies.json.CMP0167": "Modul FindBoost byl odebrán.", + "assets/policies.json.CMP0168": "Modul FetchContent implementuje kroky přímo, nikoli přes dílčí sestavení.", + "assets/policies.json.CMP0169": "Volání FetchContent_Populate s jedním argumentem (názvem deklarované závislosti) je zastaralé.", + "assets/policies.json.CMP0170": "Pokud má FETCHCONTENT_FULLY_DISCONNECTED nastavení true, příkazy FetchContent_MakeAvailable a FetchContent_Populate vynucují, aby byl jejich zdrojový adresář již naplněn. Tento požadavek byl vždy zdokumentován, ale v CMake 3.29 nebo starší verze nebyl kontrolován ani vynucován. To někdy vedlo k obtížně trasovatelným chybám, když projekt očekával, že závislost bude naplněna, ale její naplnění bylo bez upozornění přeskočeno.", + "assets/policies.json.CMP0171": "codegen je vyhrazený název cíle.", + "assets/policies.json.CMP0172": "Modul CPack ve výchozím nastavení povoluje instalaci pro celý počítač v generátoru CPack WIX.", + "assets/policies.json.CMP0173": "Modul CMakeFindFrameworks byl odebrán.", + "assets/policies.json.CMP0174": "cmake_parse_arguments definuje proměnnou pro prázdný řetězec po klíčovém slovu s jednou hodnotou.", + "assets/policies.json.CMP0175": "add_custom_command odmítne neplatné argumenty.", + "assets/policies.json.CMP0176": "Příkaz execute_process má ve výchozím nastavení kódování ENCODING nastaveno na UTF-8.", + "assets/policies.json.CMP0177": "Cesty DESTINATION v příkazu install jsou normalizovány.", + "assets/policies.json.CMP0178": "Příkazové řádky testů zachovávají prázdné argumenty.", + "assets/policies.json.CMP0179": "Odstranění duplicit statických knihoven na řádcích linkování zachovává první výskyt. Tato zásada platí pouze při nastavení CMP0156 na NEW.", + "assets/policies.json.CMP0180": "Příkaz project vždy nastavuje * jako normální proměnné.", + "assets/policies.json.CMP0181": "Proměnné CMAKE_EXE_LINKER_FLAGS, CMAKE_EXE_LINKER_FLAGS_, CMAKE_SHARED_LINKER_FLAGS, CMAKE_SHARED_LINKER_FLAGS_, CMAKE_MODULE_LINKER_FLAGS a CMAKE_MODULE_LINKER_FLAGS_ jsou parsovány, znovu opatřeny uvozovkami a podporují předponu LINKER:.", + "assets/policies.json.CMP0182": "Na AIX se ve výchozím nastavení vytvářejí archivy sdílených knihoven.", + "assets/policies.json.CMP0183": "add_feature_info podporuje úplnou syntaxi podmínky.", + "assets/policies.json.CMP0184": "Příznaky kontrol běhového prostředí MSVC se vybírají prostřednictvím abstrakce.", + "assets/policies.json.CMP0185": "FindRuby již neposkytuje proměnné RUBY_* psané velkými písmeny.", + "assets/policies.json.CMP0186": "Regulární výrazy při opakovaném vyhledávání odpovídají znaku ^ nejvýše jednou.", + "assets/policies.json.CMP0187": "Zahrnout zdrojový soubor bez přípony až za soubor se stejným názvem s příponou", + "assets/policies.json.CMP0188": "Modul FindGCCXML byl odebrán.", + "assets/policies.json.CMP0189": "TARGET_PROPERTY vyhodnocuje vlastnosti LINK_LIBRARIES transitivně.", + "assets/policies.json.CMP0190": "Moduly FindPython3, FindPython2 a FindPython v režimu křížové kompilace vynucují konzistenci artefaktů.", + "assets/policies.json.CMP0191": "Modul FindCABLE byl odebrán.", + "assets/policies.json.CMP0192": "GNUInstallDirs používá absolutní cesty SYSCONFDIR, LOCALSTATEDIR a RUNSTATEDIR ve speciálních předponách.", + "assets/policies.json.CMP0193": "GNUInstallDirs ukládá CMAKE_INSTALL_* do mezipaměti s počátečním usr/ pro instalační předponu /.", + "assets/policies.json.CMP0194": "MSVC není assembler pro jazyk ASM.", + "assets/policies.json.CMP0195": "Moduly Swift ve stromech sestavení používají strukturu adresářů modulů Swift.", + "assets/policies.json.CMP0196": "Modul CMakeDetermineVSServicePack byl odebrán.", + "assets/policies.json.CMP0197": "Přepínač link -machine: MSVC není v CMAKE_*_LINKER_FLAGS.", + "assets/policies.json.CMP0198": "Proměnná CMAKE_PARENT_LIST_FILE není definována v CMakeLists.txt.", + "assets/policies.json.CMP0199": ":genex:`$` neodpovídá namapovaným konfiguracím, které nejsou vybrané.", + "assets/policies.json.CMP0200": "Výběr umístění a konfigurace pro importované cíle je konzistentnější.", + "assets/policies.json.CMP0201": "Python::NumPy nezávisí na Python::Development.Module.", + "assets/policies.json.CMP0202": "Názvy souborů PDB vždy zahrnují POSTFIX cíle pro danou konfiguraci.", + "assets/policies.json.CMP0203": "_WINDLL je definováno pro sdílené knihovny cílené na MSVC ABI.", + "assets/policies.json.CMP0204": "Při cílení na ABI MSVC je vždy definována znaková sada." +} \ No newline at end of file diff --git a/i18n/csy/package.i18n.json b/i18n/csy/package.i18n.json index 9706fe7a7b..d862308a1b 100644 --- a/i18n/csy/package.i18n.json +++ b/i18n/csy/package.i18n.json @@ -4,6 +4,8 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "cmake-tools.command.cmake.addFileToCMakeLists.title": "Add File to CMake Lists", + "cmake-tools.command.cmake.removeFileFromCMakeLists.title": "Remove File from CMake Lists", "cmake-tools.command.cmake.openCMakePresets.title": "Open CMakePresets.json", "cmake-tools.command.cmake.addConfigurePreset.title": "Přidat předvolbu konfigurace", "cmake-tools.command.cmake.addBuildPreset.title": "Přidat předvolbu sestavení", @@ -46,6 +48,9 @@ "cmake-tools.command.cmake.cleanConfigureWithDebugger.title": "Odstranění mezipaměti a překonfigurování pomocí ladicího programu CMake", "cmake-tools.command.cmake.cleanConfigureAll.title": "Vymazat mezipaměť a překonfigurovat všechny projekty", "cmake-tools.command.cmake.cleanConfigureAllWithDebugger.title": "Odstranění mezipaměti a překonfigurování všech projektů pomocí ladicího programu CMake", + "cmake-tools.command.cmake.fullCleanConfigure.title": "Odstranit adresář sestavení a překonfigurovat", + "cmake-tools.command.cmake.fullCleanConfigureAll.title": "Odstranit adresář sestavení a překonfigurovat všechny projekty", + "cmake-tools.command.cmake.outline.fullCleanConfigureAll.title": "Zcela vymazat a překonfigurovat všechny projekty", "cmake-tools.command.cmake.editCacheUI.title": "Upravit mezipaměť CMake (uživatelské rozhraní)", "cmake-tools.command.cmake.outline.cleanConfigure.title": "Vymazat a znovu nakonfigurovat", "cmake-tools.command.cmake.outline.cleanConfigureWithDebugger.title": "Vyčištění a překonfigurování pomocí ladicího programu CMake", @@ -58,6 +63,9 @@ "cmake-tools.command.cmake.cleanConfigureAndBuild.title": "Odstranit mezipaměť, překonfigurovat a sestavit", "cmake-tools.command.cmake.cleanConfigureAndBuildAll.title": "Odstranit mezipaměť, překonfigurovat a sestavit všechny projekty", "cmake-tools.command.cmake.outline.cleanConfigureAndBuildAll.title": "Vymazat a znovu nakonfigurovat a sestavit všechny projekty", + "cmake-tools.command.cmake.fullCleanConfigureAndBuild.title": "Odstranit adresář sestavení, překonfigurovat a sestavit", + "cmake-tools.command.cmake.fullCleanConfigureAndBuildAll.title": "Odstranit adresář sestavení, překonfigurovat a sestavit všechny projekty", + "cmake-tools.command.cmake.outline.fullCleanConfigureAndBuildAll.title": "Zcela vymazat, překonfigurovat a sestavit všechny projekty", "cmake-tools.command.cmake.ctest.title": "Spustit testy", "cmake-tools.command.cmake.ctestAll.title": "Spustit testy pro všechny projekty", "cmake-tools.command.cmake.cpack.title": "Spustit CPack", @@ -74,6 +82,7 @@ "cmake-tools.command.cmake.launchTarget.title": "Spustit bez ladění", "cmake-tools.command.cmake.launchTargetAll.title": "Spustit všechny projekty bez ladění", "cmake-tools.command.cmake.selectLaunchTarget.title": "Nastavit cíl spuštění/ladění", + "cmake-tools.command.cmake.selectBuildAndLaunchTarget.title": "Nastavit cíl sestavení a cíl spuštění nebo ladění", "cmake-tools.command.cmake.stop.title": "Zrušit sestavení", "cmake-tools.command.cmake.stopAll.title": "Zrušit sestavování pro všechny projekty", "cmake-tools.command.cmake.resetState.title": "Resetovat stav rozšíření nástrojů CMake Tools (pro řešení potíží)", @@ -105,6 +114,7 @@ "cmake-tools.configuration.cmake.generator.description": "Generátor CMake, který se má použít", "cmake-tools.configuration.cmake.toolset.description": "Sada nástrojů CMake, která se má použít při konfiguraci", "cmake-tools.configuration.cmake.platform.description": "Platforma CMake, která se má použít při konfigurování", + "cmake-tools.configuration.cmake.shell.description": "Cesta ke spustitelnému souboru prostředí, který se použije při spouštění příkazů CMake, CTest a CPack (např. Git Bash nebo MSYS2). Pokud je tato možnost nastavena, všechna volání podprocesů jsou směrována prostřednictvím tohoto prostředí. Užitečné pro vložené sady nástrojů, které vyžadují převod cest ve formátu POSIX. Při hodnotě null se použije výchozí chování systémového prostředí.", "cmake-tools.configuration.cmake.configureArgs.description": "Další argumenty, které se mají předat nástrojům CMake při konfigurování Při použití předvoleb CMake se tyto argumenty dočasně připojí k argumentům poskytnutým aktivní předvolbou konfigurace.", "cmake-tools.configuration.cmake.buildArgs.description": "Další argumenty, které se mají předat nástrojům CMake při sestavování Při použití předvoleb CMake se tyto argumenty dočasně připojí k argumentům poskytnutým aktivní předvolbou sestavení.", "cmake-tools.configuration.cmake.buildToolArgs.description": "Další argumenty, které se mají předat podkladovému nástroji pro sestavení při sestavování Při použití předvoleb CMake se tyto argumenty dočasně připojí k argumentům poskytovaným aktivní předvolbou sestavení pro vyvolání nástroje pro sestavení.", @@ -112,7 +122,7 @@ "cmake-tools.configuration.cmake.ctestPath.description": "Cesta ke spustitelnému souboru CTest. Pokud je hodnota null, bude odvozena z parametru cmake.cmakePath (doporučeno ponechat hodnotu null).", "cmake-tools.configuration.cmake.cpackPath.description": "Cesta ke spustitelnému souboru CPack. Pokud je hodnota null, odvodí se z parametru cmake.cmakePath (doporučuje se ponechat hodnotu null). Bude ignorováno, pokud se místo předvoleb použijí sady.", "cmake-tools.configuration.cmake.ctest.parallelJobs.markdownDescription": "Počet paralelních testovacích úloh. Pokud chcete použít hodnotu `#cmake.parallelJobs#`, použijte nulu. Toto platí pouze v případě, že je hodnota `#cmake.ctest.allowParallelJobs#` nastavená na `true`.", - "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "Umožňuje paralelní spouštění ctestů, avšak výstup výsledků může být v důsledku toho zkreslený a Průzkumník testů nemusí přesně odrážet průběh testu.", + "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "Umožňuje paralelní spouštění ctestů, avšak výstup výsledků může být v důsledku toho zkreslený a Průzkumník testů nemusí přesně odrážet průběh testu. Pokud je tato možnost zakázaná, testy se spouštějí postupně v abecedním pořadí, které odpovídá pořadí zobrazení v Průzkumníkovi testů.", "cmake-tools.configuration.cmake.ctest.testExplorerIntegrationEnabled.description": "Určuje, jestli je povolená integrace s průzkumníkem testů. To je užitečné zakázat, pokud upřednostňujete použití jiného rozšíření pro integraci testů.", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiter.markdownDescription": "Volitelný oddělovač používaný k oddělení názvů sad testů a hierarchickému seskupení testů v Průzkumníku testů. Tento řetězec se používá v regulárních výrazech, takže pro některé oddělovače může být nutné zadat uvozovací znak. Příklady: `-` (Jeden oddělovač: `-`), `\\.|::` (Dva oddělovače: `.` nebo `::`. Poznámka: Znak `.` musí být uvozen uvozovacími znaky.)", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiterMaxOccurrence.markdownDescription": "Maximální počet použití oddělovače k rozdělení názvu testu. `0` znamená žádný limit.", @@ -124,9 +134,21 @@ "cmake-tools.configuration.cmake.ctest.failurePatterns.actual": "Index skupiny shody skutečného výstupu testu. Výchozí hodnota je Undefined (Nedefinováno).", "cmake-tools.configuration.cmake.ctest.failurePatterns.expected": "Index skupiny shody očekávaného výstupu testu. Výchozí hodnota je Undefined (Nedefinováno).", "cmake-tools.configuration.cmake.ctest.debugLaunchTarget.description": "Název cíle z launch.json, který se spustí při ladění testu pomocí CTestu. Ve výchozím nastavení a v případě neexistujícího cíle se zobrazí výběr se všemi dostupnými cíli.", + "cmake-tools.configuration.cmake.ctest.neverDebugTestsWithLaunchConfiguration.description": "Když je nastaveno na true, vždy ladí testy bez konfigurace spuštění a přeskočí nabídku rychlého výběru. Výchozí hodnota je false.", "cmake-tools.configuration.cmake.parseBuildDiagnostics.description": "Analyzovat výstup kompilátoru z hlediska upozornění a chyb", "cmake-tools.configuration.cmake.enabledOutputParsers.description": "Výstupní analyzátory, které se mají použít. Podporované jsou analyzátory `cmake`, `gcc` a `gnuld` pro výstup linkeru ve stylu GNULD, `msvc` pro Microsoft Visual C++, `ghs` pro kompilátor Green Hills s parametry --no_wrap_diagnostics nebo --brief_diagnostics a `diab` pro kompilátor Wind River Diab a `iwyu` pro diagnostiku include-what-you-use.", - "cmake-tools.configuration.cmake.debugConfig.description": "Konfigurace ladění, která se má použít při ladění cíle", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.markdownDescription": "Další matchery problémů pro výstup sestavení. Slouží k zobrazení diagnostických údajů z nástrojů, jako jsou clang-tidy, PCLint Plus, cppcheck nebo vlastní skripty integrované prostřednictvím `add_custom_command`/`add_custom_target` v CMake.\n\nKaždá položka definuje `name` (používá se jako popisek zdroje diagnostiky), `regexp` a indexy skupin zachycení pro `file`, `line`, `column`, `severity`, `message` a `code`.\n\nNapříklad pro shodu s výstupem nástroje clang-tidy ve formátu `/path/file.cpp:10:5: warning: some message [check-name]`:\n```json\n[\n {\n \"name\": \"clang-tidy\",\n \"regexp\": \"^(.+?):(\\\\d+):(\\\\d+):\\\\s+(warning|error|note):\\\\s+(.+?)\\\\s*(?:\\\\[(.+)\\\\])?$\",\n \"file\": 1,\n \"line\": 2,\n \"column\": 3,\n \"severity\": 4,\n \"message\": 5,\n \"code\": 6\n }\n]\n```\n\nVlastní porovnávací vzory (matchery) se spouštějí až po integrovaných parserech (`gcc`, `msvc` atd.), takže nepřebírají řádky určené pro integrované kompilátory.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.name": "Jedinečný název tohoto porovnávacího vzoru (matcheru), který se používá jako popisek zdroje diagnostiky v podokně Problémy.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.regexp": "Regulární výraz, podle kterého se porovnává každý řádek výstupu sestavení.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.file": "Index skupiny zachycení pro cestu k souboru. Výchozí hodnota je `1`.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.line": "Index skupiny zachycení pro číslo řádku. Výchozí hodnota je `2`.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.column": "Index skupiny zachycení pro číslo sloupce. Volitelné.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.group": "Index skupiny zachycení pro úroveň závažnosti (měla by zachytit „error“, „warning“ nebo „info“).", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.fixed": "Pevně nastavená úroveň závažnosti, která se použije pro všechny shody tohoto vzoru.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.message": "Index skupiny zachycení pro diagnostickou zprávu. Výchozí hodnota je `3`.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.code": "Index skupiny zachycení pro volitelný diagnostický kód.", + "cmake-tools.configuration.cmake.debugConfig.description": "Konfigurace ladění, která se má použít při ladění cíle. Pokud je zadán parametr `type`, automaticky rozpoznaná konfigurace ladicího programu se přeskočí a z cíle se vygeneruje pouze minimální základní konfigurace (program, cwd, name). Všechny ostatní vlastnosti se přebírají z tohoto nastavení, což umožňuje plnou kontrolu nad konfigurací spuštění ladění pro jakýkoli adaptér ladění.", + "cmake-tools.configuration.cmake.debugConfig.type.description": "Typ adaptéru ladění, který se má použít (např. `cppdbg`, `cppvsdbg`, `lldb`, `codelldb`). Pokud je tento parametr nastaven, přeskočí se automatická detekce ladicího programu z mezipaměti CMake a tento typ se použije přímo. Jakékoli další vlastnosti požadované adaptérem ladění lze přidat do `#cmake.debugConfig#`.", "cmake-tools.configuration.cmake.debugConfig.symbolSearchPath.description": "Cesty pro hledání symbolů ladicího programu sady Visual Studio", "cmake-tools.configuration.cmake.debugConfig.additionalSOLibSearchPath.description": "Cesty pro GDB nebo LLDB, kde se mají hledat soubory .so", "cmake-tools.configuration.cmake.debugConfig.externalConsole.description": "Spustit externí konzolu pro program", @@ -226,11 +248,13 @@ "cmake-tools.configuration.cmake.automaticReconfigure.description": "Automaticky nakonfigurujte adresáře projektu CMake při změně sady nebo předvolby konfigurace.", "cmake-tools.configuration.cmake.pinnedCommands.description": "Seznam příkazů CMake Tools, které se mají ve výchozím nastavení vždy připnout. Zobrazí se v části Připnuté příkazy na bočním panelu CMake Tools.", "cmake-tools.configuration.cmake.enableAutomaticKitScan.description": "Umožňuje povolit automatické vyhledávání sad, když není vybrána sada. Bude to mít vliv jen v případě, že se nepoužívají předvolby CMake.", + "cmake-tools.configuration.cmake.removeStaleKitsOnScan.description": "Remove compiler-based kits from the user kits file during a full kit scan when they are no longer rediscovered. Set \"keep\": true in a kit entry to preserve it.", "cmake-tools.configuration.cmake.enableLanguageServices.description": "Umožňuje povolit jazykové služby pro soubory CMake. Povoluje zvýrazňování syntaxe, dokončování kódu a další funkce.", "cmake-tools.configuration.cmake.preRunCoverageTarget.description": "Cíl, který se má sestavit před spuštěním testů s pokrytím pomocí Průzkumníka testů", "cmake-tools.configuration.cmake.postRunCoverageTarget.description": "Cíl, který se má sestavit po spuštění testů s pokrytím pomocí Průzkumníka testů", "cmake-tools.configuration.cmake.coverageInfoFiles.description": "Soubory s informacemi o pokrytí LCOV, které se mají zpracovat po spuštění testů s pokrytím pomocí Průzkumníka testů", "cmake-tools.configuration.cmake.useFolderPropertyInBuildTargetDropdown.description": "Určuje, jestli je výchozí rozevírací seznam cíle sestavení seskupený podle skupin složek CMake.", + "cmake-tools.configuration.cmake.setBuildTargetSameAsLaunchTarget.description": "Pokud je tato možnost povolená, nastavení cíle pro spuštění nebo ladění automaticky nastaví odpovídající cíl sestavení. Cíl sestavení lze stále měnit nezávisle.", "cmake-tools.debugger.pipeName.description": "Název kanálu (ve Windows) nebo soketu domény (v systému Unix), který se má použít pro komunikaci ladicího programu.", "cmake-tools.debugger.clean.description": "Před konfigurací vyčistěte.", "cmake-tools.debugger.configureAll.description": "Nakonfigurujte pro všechny projekty.", @@ -262,6 +286,7 @@ "cmake-tools.configuration.cmake.launchBehavior.breakAndReuseTerminal.markdownDescriptions": "Instance spouštěcího terminálu se znovu použije a před spuštěním cíle se odešle příkaz `break` k přerušení veškerých aktivních procesů v popředí.", "cmake-tools.configuration.cmake.launchBehavior.newTerminal.markdownDescriptions": "Vytvoří se nová instance terminál a cíl se v ní spustí. Existující terminály se automaticky nevyčistí.", "cmake-tools.configuration.cmake.loadCompileCommands.description": "Určuje, jestli rozšíření přečte soubor compile_commands.json a povolí kompilaci jednoho souboru.", + "cmake-tools.configuration.cmake.outlineViewType.description": "Project Outline View`s type. Available options are: \"list\" and \"tree\".", "cmake-tools.command.cmake.projectStatus.update.title": "Aktualizovat stav projektu", "cmake-tools.command.cmake.pinnedCommands.add.title": "Přidání příkazu CMake pro připnutí", "cmake-tools.command.cmake.pinnedCommands.remove.title": "Odepnout příkaz", @@ -272,5 +297,33 @@ "cmake-tools.debugger.label": "Ladicí program CMake", "cmake-tools.command.cmake.appendBuildDirectoryToWorkspace.title": "Připojit adresář sestavení k aktuálnímu pracovnímu prostoru", "cmake-tools.command.workbench.action.tasks.configureTaskRunner.title": "Nakonfigurovat úlohu", - "cmake-tools.command.workbench.action.tasks.runTask.title": "Spustit úlohu" + "cmake-tools.command.workbench.action.tasks.runTask.title": "Spustit úlohu", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.description": "Add source files to CMake lists when they are created.", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.no.description": "Do not automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.yes.description": "Automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.description": "Remove source files from CMake lists when they are deleted.", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.no.description": "Do not automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.yes.description": "Automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.markdownDescription": "How to choose which `set()` or `list(APPEND/PREPEND/INSERT)` command invocation to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.never.description": "Do not look for variable modification command invocations, only look for source command invocations.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askFirstParentDir.description": "Present a Quick Pick with options from the first `CMakeLists.txt` found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askParentDirs.description": "Present a Quick Pick with options from all `CMakeLists.txt` files found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.sourceVariables.markdownDescription": "Variables to add source files to. Variables appearing earlier in this list will be given higher priority. Only used if `#cmake.modifyLists.variableSelection#` is not `never`. Supports glob patterns.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.description": "How to choose which target to add new source files to when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askNearestSourceDir.description": "Present a Quick Pick with targets whose source directories are closest to location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askParentSourceDirs.description": "Present a Quick Pick with targets whose source directories contain the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.description": "How to choose which of a target's source command invocations to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askFirstParentDir.description": "Present a Quick Pick with options from the CMake list file in the parent directory closest to the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askParentDirs.description": "Present a Quick Pick with options from all CMake list files in the parent directories of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSourceCommands.markdownDescription": "Commands to treat as target source commands when adding source files CMake lists. Commands appearing earlier in this list will be given higher priority. Supports glob patterns.\r\n\r\nIf you are using the File API (see `#cmake.cmakeCommunicationMode#`), user-defined functions and macros which call the commands in this list are detected automatically and added to it.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.description": "How to choose which of a target's visibility scopes, file sets, or source keyword parameters to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.ask.description": "Present a Quick Pick with options from the selected target source command invocation.", + "cmake-tools.configuration.cmake.modifyLists.sourceListKeywords.markdownDescription": "Keyword arguments to user-defined functions and macros which introduce lists of source files. If left empty, all arguments consisting of only upper-case letters and underscores will be considered. Supports glob patterns.", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier" } \ No newline at end of file diff --git a/i18n/csy/schemas/kits-schema.json.i18n.json b/i18n/csy/schemas/kits-schema.json.i18n.json index 3c4b536e51..acee134137 100644 --- a/i18n/csy/schemas/kits-schema.json.i18n.json +++ b/i18n/csy/schemas/kits-schema.json.i18n.json @@ -17,9 +17,11 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Cesta k souboru sady nástrojů", "schemas/kits-schema.json.items.properties.visualStudio": "ID instance produktu Visual Studio", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Cílená architektura", + "schemas/kits-schema.json.items.properties.visualStudioArguments": "Arguments to vcvarsall.bat", "schemas/kits-schema.json.items.properties.environmentSetupScript": "Absolutní cesta ke skriptu, který upravuje prostředí pro sadu", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Hodnota pro proměnnou prostředí", - "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Hodnota pro nastavení CMake", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.0": "Hodnota pro nastavení CMake. Středníky v řetězcích jsou uvozeny řídicími znaky.", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.1": "Hodnoty spojené středníky pro vytvoření seznamu CMake bez použití uvozovek.", "schemas/kits-schema.json.items.properties.preferredGenerator": "Nastavit preferovaný generátor CMake pro tuto sadu", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.name": "Název generátoru, který se má použít", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.platform": "Platforma CMake pro argument -A", diff --git a/i18n/csy/src/cmakeListsModifier.i18n.json b/i18n/csy/src/cmakeListsModifier.i18n.json new file mode 100644 index 0000000000..a3c9d1d6a2 --- /dev/null +++ b/i18n/csy/src/cmakeListsModifier.i18n.json @@ -0,0 +1,51 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "add.newly.created.files": "Add newly created files to CMakeLists.txt", + "error.processing.add.files": "Error processing added files", + "remove.deleted.file": "Remove a deleted file from CMakeLists.txt", + "error.processing.delete.files": "Error processing deleted files", + "add.file.no.code.model": "Adding a file without a valid code model", + "file.already.in.target": "{0} already in target {1}.", + "no.targets.found": "No targets found. {0} not added to build system.", + "no.source.command.invocations": "No source command invocations found. {0} not added to build system.", + "delete.file.no.code.model": "Deleting a file without a valid code model", + "not.modifying.unsaved.delete": "Not modifying {0} to delete {1} because it has unsaved changes.", + "add.to.which.variable": "CMake: Add {0} to which variable?", + "add.to.which.target": "CMake: Add {0} to which target?", + "add.to.which.invocation": "CMake: Add {0} to which command invocation of {1}?", + "add.to.which.scope.fileset.keyword": "CMake: Add {0} to which Scope, File Set, or Keyword?", + "open.file": "Open File", + "not.modifying.unsaved.files": "Cannot modify {0} because it has unsaved changes.", + "skipping.unsaved.files": "Skipping {0} file(s) with unsaved changes: {1}", + "edit.label.remove.source.file": "CMake: Remove deleted source file", + "edit.label.add.source.file": "CMake: Add new source file", + "edits.applied.successfully": "Successfully applied {0} CMake list edit(s).", + "edits.apply.failed": "Failed to apply CMake list edits: {0}", + "not.local.file.add": "{0} is not a local file. Not adding to CMake lists.", + "no.candidates.found": "No suitable locations found to add {0}.", + "not.modifying.unsaved.add": "Not modifying {0} to add {1} because it has unsaved changes.", + "not.local.file.remove": "{0} is not a local file. Not removing from CMake lists.", + "could.not.open.file": "Could not open file {0}: {1}", + "file.not.found.in.cmake.lists": "{0} not found in CMake lists.", + "file.already.in.destination": "{0} already in {1} at {2}:{3}", + "parse.error.examining.cmake.lists": "Parse error while examining CMakeLists.txt files. Details: {0}", + "could.not.open.cmake.lists": "Could not open {0}: {1}", + "parse.error.finding.invocations": "Parse error while finding command invocations to add to. CMake file modified since last configure? Details: {0}", + "unexpected.command.found": "Found \"{0}\", expected \"{1}\". CMake file modified since last configure? Details: {2}:{3}", + "scope.private.detail": "{0} will be used to build {1}", + "scope.public.detail": "{0} will be used to build both {1} and targets that use {1}", + "scope.interface.detail": "{0} will be used to build targets that use {1}", + "fileset.headers.detail": "{0} will be used via a language's #include mechanism", + "fileset.cxx.modules.detail": "{0} contains C++ interface module or partition units.", + "label.fileset": "{0} File Set", + "label.scope": "{0} Scope", + "fileset.type": "Type: {0}", + "scope.with.fileset.detail": "{0} Scope: {1}", + "keyword.of.command": "Keyword of {0} command", + "command.label": "{0} Command", + "add.to.command.arguments": "Add {0} to the list of arguments to {1} command" +} \ No newline at end of file diff --git a/i18n/csy/src/cmakeProject.i18n.json b/i18n/csy/src/cmakeProject.i18n.json index fdcf54ffc8..04dc9ffeeb 100644 --- a/i18n/csy/src/cmakeProject.i18n.json +++ b/i18n/csy/src/cmakeProject.i18n.json @@ -9,6 +9,7 @@ "generator.changed.restart.driver": "Ovladač CMake se restartuje po změně generátoru.", "preferredGenerator.changed.restart.driver": "Ovladač CMake se restartuje po změně hodnoty preferredGenerators.", "bad.executable": "Chybný spustitelný soubor CMake: {0} Zkontrolujte, zda je nainstalovaný nebo zda hodnota nastavení {1} obsahuje správnou cestu.", + "shell.changed.restart.driver": "Po změně prostředí se restartuje ovladač CMake.", "targests.in.preset": "[Cíle v předvolbách]", "constructing.cmakeproject": "Vytváří se nová instance CMakeProject", "disposing.driver": "Ruší se ovladač CMake.", @@ -142,9 +143,9 @@ "configure.now.button": "Nakonfigurovat", "cache.load.failed": "Nenašel se žádný soubor CMakeCache.txt. Nejdříve prosím nakonfigurujte projekt.", "set.up.before.selecting.target": "Před výběrem cíle nastavte projekt CMake.", - "select.active.target.tooltip": "Vybrat výchozí cíl sestavení", "enter.target.name": "Zadejte název cíle.", "target.to.build.description": "Cíl k sestavení", + "select.active.target.tooltip": "Vybrat výchozí cíl sestavení", "build.failed": "Sestavení selhalo.", "driver.died.after.build.succeeded": "Ovladač CMake se ukončil hned po úspěšném sestavení.", "driver.died.before.workflow": "Ovladač CMake se před spuštěním pracovního postupu ukončil.", @@ -167,6 +168,7 @@ "target.debugging.unsupported": "U starší verze ovladače už není podporované ladění cíle.", "learn.more.button": "Další informace", "failed.to.prepare.target": "Nepovedlo se připravit cíl spustitelného souboru s názvem {0}.", + "debug.configuration.from.settings": "Konfigurace ladění z uživatelských nastavení: {0}", "debug.configuration.from.cache": "Ladit konfiguraci z mezipaměti: {0}", "problem.getting.debug": "Došlo k problému při načítání konfigurace ladění z mezipaměti.", "starting.debugger.with": "Spouští se ladicí program s následující konfigurací.", diff --git a/i18n/csy/src/ctest.i18n.json b/i18n/csy/src/ctest.i18n.json index 0211aa6793..8b71fded46 100644 --- a/i18n/csy/src/ctest.i18n.json +++ b/i18n/csy/src/ctest.i18n.json @@ -27,6 +27,13 @@ "test.buildingPostRunCoverageTarget": "Sestavení postRunCoverageTarget {0} pro projekt {1} po spuštění testů s pokrytím", "test.postRunCoverageTargetFailure": "Sestavení cíle postRunCoverageTarget v projektu v {0} se nezdařilo. Přeskakuje se zpracování dat pokrytí.", "test.skip.run.build.failure": "Kvůli selhání sestavení se nespouští testy.", + "debug.without.launch.config": "Ladit bez konfigurace spuštění", + "choose.debug.method": "Zvolte způsob ladění testu.", + "yes": "Ano", + "no": "Ne", + "never.debug.with.launch.prompt": "Chcete v tomto pracovním prostoru vždy ladit testy bez konfigurace spuštění?", + "no.launch.config": "Nenašly se žádné konfigurace spuštění.", + "choose.launch.config": "Zvolte konfiguraci spuštění, se kterou chcete test ladit.", "test.skip.debug.build.failure": "Kvůli selhání sestavení se neladí testy.", "build.failed": "Sestavení selhalo", "run.tests.profile": "Spustit testy", diff --git a/i18n/csy/src/drivers/cmakeDriver.i18n.json b/i18n/csy/src/drivers/cmakeDriver.i18n.json index 0dabe4e123..c48a087200 100644 --- a/i18n/csy/src/drivers/cmakeDriver.i18n.json +++ b/i18n/csy/src/drivers/cmakeDriver.i18n.json @@ -5,13 +5,14 @@ // Do not edit this file. It is machine generated. { "no.usable.generator.found": "Nenašel se žádný použitelný generátor.", - "user.closed.file.compilation.terminal": "Uživatel zavřel terminál pro kompilaci souboru.", "disposing.base.cmakedriver": "Uvolňuje se základní element CMakeDriver.", "async.disposing.cmake.driver": "Asynchronní uvolňování ovladače nástrojů CMake", "test.with.overrides": "POZNÁMKA: Provádíte testování pomocí předvolby {0}, ale používají se některá přepisující nastavení z vašeho nastavení VS Code.", "package.with.overrides": "POZNÁMKA: Provádíte vytváření balíčků pomocí předvolby {0}, ale používají se některá přepsání z vašeho nastavení VS Code.", "compile.with.overrides": "POZNÁMKA: Provádíte kompilaci pomocí předvolby {0}, ale používají se některá přepisující nastavení z vašeho nastavení VS Code.", "file.compilation": "Kompilace souboru", + "compile.finished.with.error": "Kompilace byla dokončena s chybami.", + "compile.finished.successfully": "Kompilace se úspěšně dokončila.", "removing": "Odebírání kanálu {0}", "unlink.failed": "Nepovedlo se odebrat soubor mezipaměti {0}", "switching.to.config.preset": "Přepíná se na předvolbu konfigurace: {0}", diff --git a/i18n/csy/src/extension.i18n.json b/i18n/csy/src/extension.i18n.json index 869aac4adb..1a07e00bbf 100644 --- a/i18n/csy/src/extension.i18n.json +++ b/i18n/csy/src/extension.i18n.json @@ -11,10 +11,11 @@ "configure.now.button": "Nakonfigurovat", "configure.recommended": "Po upgradu na novou definici sad se doporučuje změnit konfiguraci.", "using.cache.to.configure.workspace.on.open": "Probíhá pokus o použití mezipaměti ke konfiguraci {0} pracovního prostoru.", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier", + "failed.to.open.cache.file.on.code.model.update": "Failed to open CMake cache file on code model update", "update.code.model.for.cpptools": "Aktualizovat model kódu pro cpptools", "update.intellisense.disabled": "Zprostředkovatel konfigurace se neaktualizuje, protože {0} je nastavený na {1}", "failed.to.get.cpptools.api": "Nepovedlo se získat API cppTools.", - "filed.to.open.cache.file.on.code.model.update": "Nepovedlo se otevřít soubor mezipaměti CMake při aktualizaci kódu modelu.", "opening.text.editor.for": "Spouští se textový editor pro {0}.", "no.kits.file.what.to.do": "Není k dispozici žádný soubor sad. Co byste chtěli udělat?", "scan.for.kits.button": "Vyhledat sady", @@ -49,6 +50,7 @@ "cmake.finished.returned.unserializable": "Dokončeno: {0} (vrácena neserializovatelná hodnota)", "loading.extension.commands": "Načítání příkazů rozšíření", "register.command": "Zaregistrujte příkaz rozšíření CMakeTools {0}.", + "bookmark.target.not.resolved": "Záložku {0} nelze přeložit na cíl. Možná bude nutné projekt znovu nakonfigurovat.", "search.project.outline": "Zadejte hledaný termín pro filtrování osnovy projektu", "added.to": "přidáno do", "removed.from": "odebráno z", diff --git a/i18n/csy/src/proc.i18n.json b/i18n/csy/src/proc.i18n.json index a900af3580..a6978527d3 100644 --- a/i18n/csy/src/proc.i18n.json +++ b/i18n/csy/src/proc.i18n.json @@ -6,11 +6,11 @@ { "executing.command": "Provádí se příkaz: {0}", "execution.environment": " s prostředím: {0}", - "process.error": "Příkaz: {0} selhal s chybou: {1} zásobníku: {2}", - "process.exit.with.signal": "Příkaz: {0} byl ukončen s kódem: {1} a signálem: {2} zásobníku: {3}", - "process.exit": "Příkaz: {0} byl ukončen s kódem: {1} zásobníku: {2}", - "process.exit.stdout": "Výstup příkazu na standardním výstupu: {0} zásobníku: {1}", - "process.exit.stderr": "Výstup příkazu při standardní chybě: {0} zásobníku: {1}", + "process.error": "Příkaz: {0} selhal s chybou: {1}", + "process.exit.with.signal": "Příkaz: {0} ukončen s kódem: {1} a signálem: {2}", + "process.exit": "Příkaz {0} byl ukončen s kódem {1}.", + "process.exit.stdout": "Výstup příkazu na standardním výstupu: {0}", + "process.exit.stderr": "Výstup příkazu při standardní chybě: {0}", "processing.data.event.stdout": "Zpracovává se událost {0} z ukazatele stdout procedury.", "processing.data.event.stderr": "Zpracovává se událost {0} z ukazatele stderr procedury.", "resolving.close.event": "Překládá se proces při události {0}." diff --git a/i18n/csy/src/util.i18n.json b/i18n/csy/src/util.i18n.json index 496e458375..67f19598d4 100644 --- a/i18n/csy/src/util.i18n.json +++ b/i18n/csy/src/util.i18n.json @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "invalid.value": "Neplatná hodnota pro převod na hodnotu cmake: {0}", "invalid.version.string": "Neplatný řetězec verze {0}", "extension.is.undefined": "Rozšíření není definováno!", "sourcedirectory.not.a.directory": "sourceDirectory není adresář." diff --git a/i18n/deu/assets/policies.json.i18n.json b/i18n/deu/assets/policies.json.i18n.json new file mode 100644 index 0000000000..af4abb32a7 --- /dev/null +++ b/i18n/deu/assets/policies.json.i18n.json @@ -0,0 +1,212 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "assets/policies.json.CMP0000": "Eine mindestens erforderliche CMake-Version muss angegeben werden.", + "assets/policies.json.CMP0001": "CMAKE_BACKWARDS_COMPATIBILITY sollte nicht mehr verwendet werden.", + "assets/policies.json.CMP0002": "Logische Zielnamen müssen global eindeutig sein.", + "assets/policies.json.CMP0003": "Bibliotheken, die über den vollständigen Pfad verlinkt sind, erzeugen keine Linkersuchpfade mehr.", + "assets/policies.json.CMP0004": "Verknüpfte Bibliotheken dürfen keine führenden oder nachgestellten Leerzeichen enthalten.", + "assets/policies.json.CMP0005": "Präprozessordefinitionswerte werden jetzt automatisch mit Escapezeichen versehen.", + "assets/policies.json.CMP0006": "Für die Installation von MACOSX_BUNDLE-Zielen ist ein BUNDLE DESTINATION erforderlich.", + "assets/policies.json.CMP0007": "Der Befehl „Auflisten“ ignoriert keine leeren Elemente mehr.", + "assets/policies.json.CMP0008": "Bibliotheken, die über den vollständigen Pfad verlinkt sind, müssen einen gültigen Bibliotheksdateinamen haben.", + "assets/policies.json.CMP0009": "FILE GLOB_RECURSE-Aufrufe sollten standardmäßig keinen Symlinks folgen.", + "assets/policies.json.CMP0010": "Fehlerhafte Variablenverweissyntax ist ein Fehler.", + "assets/policies.json.CMP0011": "Eingebundene Skripte führen automatisch cmake_policy-PUSH und -POP aus.", + "assets/policies.json.CMP0012": "WENN erkennt Zahlen und boolesche Konstanten.", + "assets/policies.json.CMP0013": "Doppelte binäre Verzeichnisse sind nicht zulässig.", + "assets/policies.json.CMP0014": "Eingabeverzeichnisse müssen eine CMakeLists.txt enthalten.", + "assets/policies.json.CMP0015": "link_directories behandelt Pfade relativ zum Quellverzeichnis.", + "assets/policies.json.CMP0016": "target_link_libraries meldet einen Fehler, wenn das einzige Argument kein Ziel ist.", + "assets/policies.json.CMP0017": "Dateien aus dem CMake-Modulverzeichnis bevorzugen, wenn sie von dort eingebunden werden.", + "assets/policies.json.CMP0018": "Variable CMAKE_SHARED_LIBRARY__FLAGS wird ignoriert.", + "assets/policies.json.CMP0019": "Variablen in Include- und Linkinformationen nicht erneut erweitern.", + "assets/policies.json.CMP0020": "Ausführbare Qt-Dateien unter Windows automatisch mit dem qtmain-Ziel verlinken.", + "assets/policies.json.CMP0021": "Schwerwiegender Fehler bei relativen Pfaden in der INCLUDE_DIRECTORIES-Zieleigenschaft.", + "assets/policies.json.CMP0022": "INTERFACE_LINK_LIBRARIES definiert die Link-Schnittstelle.", + "assets/policies.json.CMP0023": "Einfache und Schlüsselwort-Signaturen von target_link_libraries dürfen nicht gemischt werden.", + "assets/policies.json.CMP0024": "Include-Exportergebnis nicht zulassen.", + "assets/policies.json.CMP0025": "Die Compiler-ID für Apple Clang ist jetzt AppleClang.", + "assets/policies.json.CMP0026": "Die Verwendung der LOCATION-Eigenschaft für Buildziele ist nicht erlaubt.", + "assets/policies.json.CMP0027": "Bedingt verknüpfte importierte Ziele mit fehlenden Include-Verzeichnissen.", + "assets/policies.json.CMP0028": "Doppelter Doppelpunkt im Zielnamen bedeutet ALIAS- oder IMPORTIERTED-Ziel.", + "assets/policies.json.CMP0029": "Der Befehl subdir_depends darf nicht aufgerufen werden.", + "assets/policies.json.CMP0030": "Der Befehl use_mangled_mesa darf nicht aufgerufen werden.", + "assets/policies.json.CMP0031": "Der Befehl load_command darf nicht aufgerufen werden.", + "assets/policies.json.CMP0032": "Der Befehl output_required_files darf nicht aufgerufen werden.", + "assets/policies.json.CMP0033": "Der Befehl export_library_dependencies darf nicht aufgerufen werden.", + "assets/policies.json.CMP0034": "Der Befehl utility_source darf nicht aufgerufen werden.", + "assets/policies.json.CMP0035": "Der Befehl variable_requires sollte nicht aufgerufen werden.", + "assets/policies.json.CMP0036": "Der Befehl build_name darf nicht aufgerufen werden.", + "assets/policies.json.CMP0037": "Zielnamen sollten nicht reserviert sein und sollten einem gültigen Muster entsprechen.", + "assets/policies.json.CMP0038": "Ziele dürfen nicht direkt mit sich selbst verlinkt werden.", + "assets/policies.json.CMP0039": "Hilfsprogrammziele dürfen keine Link-Abhängigkeiten haben.", + "assets/policies.json.CMP0040": "Das Ziel in der TARGET-Signatur von add_custom_command muss existieren und im aktuellen Verzeichnis definiert sein.", + "assets/policies.json.CMP0041": "Fehler bei relativem Include mit Generatorausdruck.", + "assets/policies.json.CMP0042": "MACOSX_RPATH ist standardmäßig aktiviert.", + "assets/policies.json.CMP0043": "COMPILE_DEFINITIONS_-Eigenschaften ignorieren.", + "assets/policies.json.CMP0044": "Groß-/Kleinschreibung beachten _COMPILER_ID-Generatorausdrücke", + "assets/policies.json.CMP0045": "Fehler bei nicht vorhandenem Ziel in get_target_property.", + "assets/policies.json.CMP0046": "Fehler bei nicht vorhandener Abhängigkeit in add_dependencies.", + "assets/policies.json.CMP0047": "Für die QCC-Treiber auf QNX die QCC-Compiler-ID verwenden.", + "assets/policies.json.CMP0048": "Der Projektbefehl verwaltet VERSION-Variablen.", + "assets/policies.json.CMP0049": "Variablen in Zielquelleneinträgen nicht erweitern.", + "assets/policies.json.CMP0050": "add_custom_command mit SOURCE-Signaturen nicht zulassen.", + "assets/policies.json.CMP0051": "TARGET_OBJECTS in der SOURCES-Zieleigenschaft auflisten.", + "assets/policies.json.CMP0052": "Quell- und Buildverzeichnisse in installierten INTERFACE_INCLUDE_DIRECTORIES ablehnen.", + "assets/policies.json.CMP0053": "Variablenverweise und Escapesequenzauswertung vereinfachen.", + "assets/policies.json.CMP0054": "WENN-Argumente nur dann als Variablen oder Schlüsselwörter interpretieren, wenn sie nicht in Anführungszeichen stehen.", + "assets/policies.json.CMP0055": "Strenge Prüfung für den break-Befehl.", + "assets/policies.json.CMP0056": "Linkflags in der try_compile-Quelldateisignatur berücksichtigen.", + "assets/policies.json.CMP0057": "Neuen unterstützen, wenn IN_LIST-Operator.", + "assets/policies.json.CMP0058": "Ninja verlangt, dass Nebenprodukte benutzerdefinierter Befehle explizit angegeben werden.", + "assets/policies.json.CMP0059": "DEFINITIONS nicht als integrierte Verzeichniseigenschaft behandeln.", + "assets/policies.json.CMP0060": "Bibliotheken auch in impliziten Verzeichnissen über den vollständigen Pfad verlinken.", + "assets/policies.json.CMP0061": "CTest weist Make standardmäßig nicht an, Fehler zu ignorieren (-i).", + "assets/policies.json.CMP0062": "Installation des Exportergebnisses nicht zulassen.", + "assets/policies.json.CMP0063": "Sichtbarkeitseigenschaften für alle Zieltypen beachten.", + "assets/policies.json.CMP0064": "TEST als Operator für den WENN-Befehl erkennen.", + "assets/policies.json.CMP0065": "Keine Flags zum Exportieren von Symbolen aus ausführbaren Dateien ohne ENABLE_EXPORTS-Zieleigenschaft hinzufügen.", + "assets/policies.json.CMP0066": "Konfigurationsabhängige Flags in der try_compile-Quelldateisignatur berücksichtigen.", + "assets/policies.json.CMP0067": "Sprachstandard in der try_compile-Quelldateisignatur beachten.", + "assets/policies.json.CMP0068": "RPATH-Einstellungen unter macOS beeinflussen install_name nicht.", + "assets/policies.json.CMP0069": "INTERPROCEDURAL_OPTIMIZATION wird bei Aktivierung erzwungen.", + "assets/policies.json.CMP0070": "Dateiverhalten für relative Pfade definieren.", + "assets/policies.json.CMP0071": "AUTOMOC und AUTOUIC verarbeiten generierte Dateien.", + "assets/policies.json.CMP0072": "FindOpenGL bevorzugt standardmäßig GLVND, wenn verfügbar.", + "assets/policies.json.CMP0073": "Legacy-_LIB_DEPENDS-Cacheeinträge nicht erzeugen.", + "assets/policies.json.CMP0074": "find_package verwendet _ROOT-Variablen.", + "assets/policies.json.CMP0075": "Makros zur Include-Dateiprüfung berücksichtigen CMAKE_REQUIRED_LIBRARIES.", + "assets/policies.json.CMP0076": "Der Befehl target_sources wandelt relative Pfade in absolute um.", + "assets/policies.json.CMP0077": "Option berücksichtigt normale Variablen.", + "assets/policies.json.CMP0078": "UseSWIG generiert Standardzielnamen.", + "assets/policies.json.CMP0079": "target_link_libraries erlaubt die Verwendung mit Zielen in anderen Verzeichnissen.", + "assets/policies.json.CMP0080": "BundleUtilities können zur Konfigurationszeit nicht berücksichtigt werden.", + "assets/policies.json.CMP0081": "Relative Pfade sind in der LINK_DIRECTORIES-Zieleigenschaft nicht erlaubt.", + "assets/policies.json.CMP0082": "Installationsregeln aus add_subdirectory-Aufrufen werden mit denen des Aufrufers vermischt.", + "assets/policies.json.CMP0083": "Zur Steuerung der Generierung einer positionsunabhängigen ausführbaren Datei (PIE) sind zur Linkzeit einige Flags erforderlich.", + "assets/policies.json.CMP0084": "Das FindQt-Modul existiert nicht für find_package.", + "assets/policies.json.CMP0085": "$ behandelt leere Listenelemente.", + "assets/policies.json.CMP0086": "UseSMODULE berücksichtigt SWIG_MODULE_NAME gegenüber dem Flag „-module“.", + "assets/policies.json.CMP0087": "Installieren und installieren unterstützen Generatorausdrücke.", + "assets/policies.json.CMP0088": "FindBISON führt Bison beim Ausführen im Verzeichnis CMAKE_CURRENT_BINARY_DIR aus.", + "assets/policies.json.CMP0089": "Die Compiler-ID für IBM Clang-basierte XL-Compiler lautet jetzt XLClang.", + "assets/policies.json.CMP0090": "Export füllt die Paketregistrierung standardmäßig nicht.", + "assets/policies.json.CMP0091": "MSVC-Laufzeitbibliotheksflags werden über eine Abstraktion ausgewählt.", + "assets/policies.json.CMP0092": "MSVC-Warnungsflags sind standardmäßig nicht in CMAKE__FLAGS enthalten.", + "assets/policies.json.CMP0093": "FindBoost gibt Boost_VERSION im x.y.z-Format aus.", + "assets/policies.json.CMP0094": "Die Module FindPython3, FindPython2 und FindPython verwenden LOCATION als Suchstrategie.", + "assets/policies.json.CMP0095": "RPATH-Einträge sind im zwischengeschalteten CMake-Installationsskript korrekt mit Escapezeichen versehen.", + "assets/policies.json.CMP0096": "Der Projektbefehl behält führende Nullen in Versionskomponenten bei.", + "assets/policies.json.CMP0097": "ExternalProject_Add mit GIT_SUBMODULES \"\" initialisiert keine Submodule.", + "assets/policies.json.CMP0098": "FindFLEX führt Flex im Verzeichnis CMAKE_CURRENT_BINARY_DIR beim Ausführen aus.", + "assets/policies.json.CMP0099": "Linkeigenschaften sind transitiv über privaten Abhängigkeiten statischer Bibliotheken.", + "assets/policies.json.CMP0100": "AUTOMOC und AUTOUIC verarbeiten Headerdateien, die mit der Erweiterung .hh enden.", + "assets/policies.json.CMP0101": "target_compile_options berücksichtigt jetzt immer das Schlüsselwort BEFORE.", + "assets/policies.json.CMP0102": "Der Befehl mark_as_advanced erstellt keinen Cacheeintrag mehr, wenn noch keiner existiert.", + "assets/policies.json.CMP0103": "Mehrfache Aufrufe des export-Befehls mit derselben DATEI ohne APPEND sind nicht mehr erlaubt.", + "assets/policies.json.CMP0104": "CMAKE_CUDA_ARCHITECTURES wird initialisiert, wenn CMAKE_CUDA_COMPILER_ID _COMPILER_ID> NVIDIA ist. Es wird ein Fehler ausgelöst, wenn CUDA_ARCHITECTURES leer ist.", + "assets/policies.json.CMP0105": "LINK_OPTIONS- und INTERFACE_LINK_OPTIONS-Zieleigenschaften werden jetzt für den Gerätelink-Schritt verwendet.", + "assets/policies.json.CMP0106": "Das Dokumentationsmodul wurde entfernt.", + "assets/policies.json.CMP0107": "Es ist nicht erlaubt, ein ALIAS-Ziel mit demselben Namen wie ein anderes Ziel zu erstellen.", + "assets/policies.json.CMP0108": "Ein Ziel darf sich nicht selbst verlinken, auch nicht über ein ALIAS-Ziel.", + "assets/policies.json.CMP0109": "find_program erfordert Ausführungsberechtigung, aber keine Leseberechtigung.", + "assets/policies.json.CMP0110": "add_test unterstützt beliebige Zeichen in Testnamen.", + "assets/policies.json.CMP0111": "Ein importiertes Ziel ohne Positions-Eigenschaft schlägt während der Generierung fehl.", + "assets/policies.json.CMP0112": "Generatorausdrücke für Zieldateikomponenten fügen keine Zielabhängigkeiten hinzu.", + "assets/policies.json.CMP0113": "Makefile-Generatoren wiederholen keine benutzerdefinierten Befehle aus Zielabhängigkeiten.", + "assets/policies.json.CMP0114": "ExternalProject-Schrittziele übernehmen ihre Schritte vollständig.", + "assets/policies.json.CMP0115": "Quelldateierweiterungen müssen explizit angegeben sein.", + "assets/policies.json.CMP0116": "Ninja-Generatoren wandeln DEPFILES aus add_custom_command um.", + "assets/policies.json.CMP0117": "Das MSVC-RTTI-Flag /GR wird standardmäßig nicht zu CMAKE_CXX_FLAGS _FLAGS> hinzugefügt.", + "assets/policies.json.CMP0118": "GENERATED-Quellen können ohne manuelle Markierung über Verzeichnisse hinweg verwendet werden.", + "assets/policies.json.CMP0119": "Die Quelldateieigenschaft LANGUAGE kompiliert explizit in der angegebenen Sprache.", + "assets/policies.json.CMP0120": "Das WriteCompilerDetectionHeader-Modul wurde entfernt.", + "assets/policies.json.CMP0121": "Der Befehl „Auflisten“ erkennt jetzt ungültige Indizes.", + "assets/policies.json.CMP0122": "UseSWIG verwendet Bibliotheksnamenkonventionen für die Sprache CSharp.", + "assets/policies.json.CMP0123": "ARMClang-CPU- und Architektur-Kompilierungs- sowie Linkflags müssen explizit gesetzt werden.", + "assets/policies.json.CMP0124": "FOREACH-Schleifenvariablen sind nur im Schleifenbereich verfügbar.", + "assets/policies.json.CMP0125": "Die Befehle find_file, find_path, find_library und find_program speichern ihr Ergebnis in der Variablen, die durch ihr erstes Argument angegeben wird. Vor CMake 3.21, wenn eine Cachevariable mit diesem Namen bereits vor dem Aufruf existierte, die Cachevariable jedoch keinen Typ hatte, wurde jede Nicht-Cachevariable mit demselben Namen verworfen und immer die Cachevariable verwendet (siehe auch CMP0126 für ein anderes, aber ähnliches Verhalten). Dies widerspricht der Konvention, dass eine Nicht-Cachevariable Vorrang vor einer Cachevariable mit demselben Namen haben sollte. Eine solche Situation kann auftreten, wenn ein Benutzer eine Cachevariable in der Befehlszeile ohne Typangabe setzt, zum Beispiel cmake -DMYVAR=blah ... statt cmake -DMYVAR:FILEPATH=blah.", + "assets/policies.json.CMP0126": "Wenn diese Richtlinie auf NEU gesetzt ist, entfernt der SET-Befehl keine normale Variable mit demselben Namen aus dem aktuellen Bereich. Das OLD-Verhalten entfernt normale Variablen mit demselben Namen aus dem aktuellen Bereich in den folgenden Situationen:", + "assets/policies.json.CMP0127": "cmake_dependent_option unterstützt die vollständige Bedingungssyntax.", + "assets/policies.json.CMP0128": "Wenn diese Richtlinie auf NEU gesetzt ist:", + "assets/policies.json.CMP0129": "Die Compiler-ID für MCST LCC-Compiler ist jetzt LCC, nicht GNU.", + "assets/policies.json.CMP0130": "WHILE diagnostiziert Fehler bei der Bedingungsauswertung.", + "assets/policies.json.CMP0131": "LINK_LIBRARIES unterstützt den Generatorausdruck :genex:`$`.", + "assets/policies.json.CMP0132": "Compiler-Umgebungsvariablen werden beim ersten Durchlauf nicht gesetzt.", + "assets/policies.json.CMP0133": "Das CPack-Modul deaktiviert SLA standardmäßig im CPack DragNDrop-Generator.", + "assets/policies.json.CMP0134": "Die Standardregistrierungsansicht ist TARGET für die Befehle find_file, find_path, find_library und find_package sowie BOTH für den Befehl find_program.", + "assets/policies.json.CMP0135": "Bei Verwendung der Downloadmethode URL mit den Befehlen ExternalProject_Add oder FetchContent_Declare setzt CMake 3.23 und älter die Zeitstempel der extrahierten Inhalte auf dieselben Werte wie die Zeitstempel im Archiv. Wenn sich die URL ändert, wird das neue Archiv heruntergeladen und extrahiert, aber die Zeitstempel der extrahierten Inhalte sind möglicherweise nicht neuer als die der vorherigen Inhalte. Alles, was von den extrahierten Inhalten abhängt, wird möglicherweise nicht neu erstellt, obwohl sich die Inhalte geändert haben können.", + "assets/policies.json.CMP0136": "Watcom-Laufzeitbibliotheksflags werden über eine Abstraktion ausgewählt.", + "assets/policies.json.CMP0137": "try_compile übergibt Plattformvariablen im Projektmodus.", + "assets/policies.json.CMP0138": "CheckIPOSupported verwendet Flags aus dem aufrufenden Projekt.", + "assets/policies.json.CMP0139": "Der WENN-Befehl unterstützt Pfadvergleiche mit dem Operator PATH_EQUAL.", + "assets/policies.json.CMP0140": "Der RETURN-Befehl überprüft seine Parameter.", + "assets/policies.json.CMP0141": "MSVC-Debuginformationsformatflags werden über eine Abstraktion ausgewählt.", + "assets/policies.json.CMP0142": "Der Xcode-Generator fügt Bibliothekssuchpfaden keine Konfigurationssuffixe hinzu.", + "assets/policies.json.CMP0143": "Die globale Eigenschaft USE_FOLDERS wird standardmäßig als aktiviert behandelt.", + "assets/policies.json.CMP0144": "find_package verwendet Großbuchstaben- _ROOT-Variablen.", + "assets/policies.json.CMP0145": "Die Module Dart und FindDart wurden entfernt.", + "assets/policies.json.CMP0146": "Das Modul FindCUDA wurde entfernt.", + "assets/policies.json.CMP0147": "Visual Studio-Generatoren führen benutzerdefinierte Befehle parallel aus.", + "assets/policies.json.CMP0148": "Die Module FindPythonInterp und FindPythonLibs wurden entfernt.", + "assets/policies.json.CMP0149": "Visual Studio-Generatoren wählen standardmäßig das neueste Windows SDK aus.", + "assets/policies.json.CMP0150": "ExternalProject_Add- und FetchContent_Declare-Befehle behandeln relative GIT_REPOSITORY-Pfade als relativ zum Remote des übergeordneten Projekts.", + "assets/policies.json.CMP0151": "Das AUTOMOC-Include-Verzeichnis ist standardmäßig ein System-Include-Verzeichnis.", + "assets/policies.json.CMP0152": "FILE löst Symlinks auf, bevor ../-Komponenten reduziert werden.", + "assets/policies.json.CMP0153": "Der Befehl exec_program darf nicht aufgerufen werden.", + "assets/policies.json.CMP0154": "Generierte Dateien sind in Zielen mit Dateisätzen standardmäßig privat.", + "assets/policies.json.CMP0155": "C++-Quellen in Zielen mit mindestens C++20 werden bei Unterstützung auf Importe geprüft.", + "assets/policies.json.CMP0156": "Deduplizierung von Bibliotheken in Linkzeilen basierend auf den Fähigkeiten des Linkers.", + "assets/policies.json.CMP0157": "Der Swift-Kompilierungsmodus wird über eine Abstraktion ausgewählt.", + "assets/policies.json.CMP0158": "add_test berücksichtigt CMAKE_CROSSCOMPILING_EMULATOR nur beim Crosskompilieren.", + "assets/policies.json.CMP0159": "Datei mit REGEX aktualisiert CMAKE_MATCH_.", + "assets/policies.json.CMP0160": "Weitere schreibgeschützte Zieleigenschaften führen jetzt beim Versuch, sie zu setzen, zu Fehlern.", + "assets/policies.json.CMP0161": "Die Variable CPACK_PRODUCTBUILD_DOMAINS ist standardmäßig auf WAHR gesetzt.", + "assets/policies.json.CMP0162": "Visual Studio-Generatoren fügen standardmäßig UseDebugLibraries-Indikatoren hinzu.", + "assets/policies.json.CMP0163": "Die Eigenschaft GENERATED für Quelldateien ist jetzt in allen Verzeichnissen sichtbar.", + "assets/policies.json.CMP0164": "add_library lehnt SHARED-Bibliotheken ab, wenn sie von der Plattform nicht unterstützt werden.", + "assets/policies.json.CMP0165": "enable_language darf nicht vor dem Projekt aufgerufen werden.", + "assets/policies.json.CMP0166": "TARGET_PROPERTY wertet Linkeigenschaften transitiv über private Abhängigkeiten statischer Bibliotheken aus.", + "assets/policies.json.CMP0167": "Das FindBoost-Modul wurde entfernt.", + "assets/policies.json.CMP0168": "Das FetchContent-Modul führt Schritte direkt aus, statt über einen Unterbuild.", + "assets/policies.json.CMP0169": "Der Aufruf von FetchContent_Populate mit nur einem Argument (dem Namen einer deklarierten Abhängigkeit) ist veraltet.", + "assets/policies.json.CMP0170": "Wenn FETCHCONTENT_FULLY_DISCONNECTED auf WAHR gesetzt ist, erzwingen FetchContent_MakeAvailable und FetchContent_Populate die Bedingung, dass das Quellverzeichnis bereits befüllt sein muss. Diese Anforderung war immer dokumentiert, wurde aber mit CMake 3.29 oder älter nicht überprüft oder durchgesetzt. Dies führte manchmal zu schwer nachvollziehbaren Fehlern, wenn ein Projekt erwartete, dass eine Abhängigkeit befüllt wurde, die Befüllung jedoch stillschweigend übersprungen wurde.", + "assets/policies.json.CMP0171": "codegen ist ein reservierter Zielname.", + "assets/policies.json.CMP0172": "Das CPack-Modul aktiviert standardmäßig die Installation pro Computer im CPack WIX-Generator.", + "assets/policies.json.CMP0173": "Das CMakeFindFrameworks-Modul wurde entfernt.", + "assets/policies.json.CMP0174": "cmake_parse_arguments definiert eine Variable für eine leere Zeichenfolge nach einem Schlüsselwort mit einem einzelnen Wert.", + "assets/policies.json.CMP0175": "add_custom_command lehnt ungültige Argumente ab.", + "assets/policies.json.CMP0176": "execute_process ENCODING ist standardmäßig UTF-8.", + "assets/policies.json.CMP0177": "install-DESTINATION-Pfade werden normalisiert.", + "assets/policies.json.CMP0178": "Testbefehlszeilen behalten leere Argumente bei.", + "assets/policies.json.CMP0179": "Die Deduplizierung statischer Bibliotheken in Linkzeilen behält das erste Vorkommen bei. Diese Richtlinie ist nur relevant, wenn die Richtlinie CMP0156 auf NEU gesetzt ist.", + "assets/policies.json.CMP0180": "PROJECT setzt _* immer als normale Variablen.", + "assets/policies.json.CMP0181": "Die Variablen CMAKE_EXE_LINKER_FLAGS, CMAKE_EXE_LINKER_FLAGS_, CMAKE_SHARED_LINKER_FLAGS, CMAKE_SHARED_LINKER_FLAGS_, CMAKE_MODULE_LINKER_FLAGS und CMAKE_MODULE_LINKER_FLAGS_ werden geparst, neu in Anführungszeichen gesetzt und unterstützen das Präfix LINKER:.", + "assets/policies.json.CMP0182": "Standardmäßig werden auf AIX freigegebene Bibliotheksarchive erstellt.", + "assets/policies.json.CMP0183": "add_feature_info unterstützt die vollständige Bedingungssyntax.", + "assets/policies.json.CMP0184": "MSVC-Laufzeitüberprüfungsflags werden über eine Abstraktion ausgewählt.", + "assets/policies.json.CMP0185": "FindRuby stellt keine Großbuchstaben-RUBY_*-Variablen mehr bereit.", + "assets/policies.json.CMP0186": "Reguläre Ausdrücke stimmen bei wiederholten Suchvorgängen höchstens einmal mit ^ überein.", + "assets/policies.json.CMP0187": "Eine Quelldatei ohne Erweiterung wird nach einer Datei mit demselben Namen und Erweiterung eingebunden.", + "assets/policies.json.CMP0188": "Das FindGCCXML-Modul wurde entfernt.", + "assets/policies.json.CMP0189": "TARGET_PROPERTY wertet LINK_LIBRARIES-Eigenschaften transitiv aus.", + "assets/policies.json.CMP0190": "Die Module FindPython3, FindPython2 und FindPython erzwingen die Konsistenz von Artefakten im Crosskompilierungsmodus.", + "assets/policies.json.CMP0191": "Das FindCABLE-Modul wurde entfernt.", + "assets/policies.json.CMP0192": "GNUInstallDirs verwendet absolute SYSCONFDIR-, LOCALSTATEDIR- und RUNSTATEDIR-Pfade in speziellen Präfixen.", + "assets/policies.json.CMP0193": "GNUInstallDirs speichert CMAKE_INSTALL_* mit führendem usr/ für das Installationspräfix /. zwischen.", + "assets/policies.json.CMP0194": "MSVC ist kein Assembler für die Sprache ASM.", + "assets/policies.json.CMP0195": "Swift-Module in Build-Strukturen verwenden die Swift-Modulverzeichnisstruktur.", + "assets/policies.json.CMP0196": "Das CMakeDetermineVSServicePack-Modul wurde entfernt.", + "assets/policies.json.CMP0197": "Das MSVC-Link-Flag „-machine:“ ist nicht in CMAKE_*_LINKER_FLAGS enthalten.", + "assets/policies.json.CMP0198": "CMAKE_PARENT_LIST_FILE ist in CMakeLists.txt nicht definiert.", + "assets/policies.json.CMP0199": ":genex:`$` stimmt nicht mit zugeordneten Konfigurationen überein, die nicht ausgewählt sind.", + "assets/policies.json.CMP0200": "Standort- und Konfigurationsauswahl für importierte Ziele sind konsistenter.", + "assets/policies.json.CMP0201": "Python::NumPy ist nicht von Python::Development.Module abhängig.", + "assets/policies.json.CMP0202": "PDB-Dateinamen enthalten immer das pro Konfiguration festgelegte POSTFIX des Ziels.", + "assets/policies.json.CMP0203": "_WINDLL ist für freigegebene Bibliotheken definiert, die auf die MSVC-ABI abzielen.", + "assets/policies.json.CMP0204": "Beim Ziel auf die MSVC-ABI wird immer ein Zeichensatz definiert." +} \ No newline at end of file diff --git a/i18n/deu/package.i18n.json b/i18n/deu/package.i18n.json index 9472642cdf..e9f5fb698a 100644 --- a/i18n/deu/package.i18n.json +++ b/i18n/deu/package.i18n.json @@ -4,6 +4,8 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "cmake-tools.command.cmake.addFileToCMakeLists.title": "Add File to CMake Lists", + "cmake-tools.command.cmake.removeFileFromCMakeLists.title": "Remove File from CMake Lists", "cmake-tools.command.cmake.openCMakePresets.title": "\"CMakePresets.json\" öffnen", "cmake-tools.command.cmake.addConfigurePreset.title": "Konfigurationsvoreinstellung hinzufügen", "cmake-tools.command.cmake.addBuildPreset.title": "Buildvoreinstellung hinzufügen", @@ -46,6 +48,9 @@ "cmake-tools.command.cmake.cleanConfigureWithDebugger.title": "Löschen des Caches und Neukonfigurieren mit dem CMake-Debugger", "cmake-tools.command.cmake.cleanConfigureAll.title": "Cache löschen und alle Projekte neu konfigurieren", "cmake-tools.command.cmake.cleanConfigureAllWithDebugger.title": "Löschen des Caches und Neukonfigurieren aller Projekte mit dem CMake-Debugger", + "cmake-tools.command.cmake.fullCleanConfigure.title": "Buildverzeichnis löschen und neu konfigurieren", + "cmake-tools.command.cmake.fullCleanConfigureAll.title": "Buildverzeichnis löschen und alle Projekte neu konfigurieren", + "cmake-tools.command.cmake.outline.fullCleanConfigureAll.title": "Alle Projekte vollständig neu konfigurieren", "cmake-tools.command.cmake.editCacheUI.title": "CMake-Cache bearbeiten (Benutzeroberfläche)", "cmake-tools.command.cmake.outline.cleanConfigure.title": "Neukonfiguration bereinigen", "cmake-tools.command.cmake.outline.cleanConfigureWithDebugger.title": "Neukonfiguration mit CMake-Debugger bereinigen", @@ -58,6 +63,9 @@ "cmake-tools.command.cmake.cleanConfigureAndBuild.title": "Cache löschen, neu konfigurieren und erstellen", "cmake-tools.command.cmake.cleanConfigureAndBuildAll.title": "Cache löschen, neu konfigurieren und alle Projekte neu erstellen", "cmake-tools.command.cmake.outline.cleanConfigureAndBuildAll.title": "Bereinigen, neu konfigurieren und alle Projekte erstellen", + "cmake-tools.command.cmake.fullCleanConfigureAndBuild.title": "Buildverzeichnis löschen, neu konfigurieren und erstellen", + "cmake-tools.command.cmake.fullCleanConfigureAndBuildAll.title": "Buildverzeichnis löschen, neu konfigurieren und alle Projekte erstellen", + "cmake-tools.command.cmake.outline.fullCleanConfigureAndBuildAll.title": "Vollständige Neukonfiguration neu konfigurieren und alle Projekte erstellen", "cmake-tools.command.cmake.ctest.title": "Tests durchführen", "cmake-tools.command.cmake.ctestAll.title": "Tests für alle Projekte ausführen", "cmake-tools.command.cmake.cpack.title": "CPack ausführen", @@ -74,6 +82,7 @@ "cmake-tools.command.cmake.launchTarget.title": "Ohne Debuggen ausführen", "cmake-tools.command.cmake.launchTargetAll.title": "Alle Projekte ohne Debuggen ausführen", "cmake-tools.command.cmake.selectLaunchTarget.title": "Start-/Debugziel festlegen", + "cmake-tools.command.cmake.selectBuildAndLaunchTarget.title": "Build- und Start-/Debug-Ziel festlegen", "cmake-tools.command.cmake.stop.title": "Build abbrechen", "cmake-tools.command.cmake.stopAll.title": "Build für alle Projekte abbrechen", "cmake-tools.command.cmake.resetState.title": "Status der Erweiterung CMake Tools zurücksetzen (zur Problembehandlung)", @@ -105,6 +114,7 @@ "cmake-tools.configuration.cmake.generator.description": "Der zu verwendende CMake-Generator.", "cmake-tools.configuration.cmake.toolset.description": "Das CMake-Toolset, das beim Konfigurieren verwendet werden soll.", "cmake-tools.configuration.cmake.platform.description": "Die für die Konfiguration zu verwendende CMake-Plattform.", + "cmake-tools.configuration.cmake.shell.description": "Pfad zu einer ausführbaren Shell, die beim Ausführen der Befehle CMake, CTest und CPack verwendet wird (z. B. Git Bash oder MSYS2). Wenn diese Option festgelegt ist, werden alle Aufrufe von Teilprozessen über diese Shell geleitet. Dies ist nützlich für eingebettete Toolketten, die eine POSIX-Pfadübersetzung benötigen. Ist der Wert null, wird das Standardverhalten der Systemshell verwendet.", "cmake-tools.configuration.cmake.configureArgs.description": "Zusätzliche Argumente, die beim Konfigurieren an CMake übergeben werden sollen. Bei Verwendung von CMake-Voreinstellungen werden diese Argumente vorübergehend an die Argumente angefügt, die von der aktiven Konfigurationsvoreinstellung bereitgestellt werden.", "cmake-tools.configuration.cmake.buildArgs.description": "Zusätzliche Argumente, die beim Erstellen an CMake übergeben werden. Bei Verwendung von CMake-Voreinstellungen werden diese Argumente vorübergehend an die Argumente angefügt, die von der aktiven Buildvoreinstellung bereitgestellt werden.", "cmake-tools.configuration.cmake.buildToolArgs.description": "Zusätzliche Argumente, die beim Erstellen an das zugrunde liegende Buildtool übergeben werden sollen. Bei Verwendung von CMake-Voreinstellungen werden diese Argumente vorübergehend an die Argumente angefügt, die von der aktiven Buildvoreinstellung bereitgestellt werden, um das Buildtool aufzurufen.", @@ -112,7 +122,7 @@ "cmake-tools.configuration.cmake.ctestPath.description": "Pfad zur ausführbaren CTest-Datei. Bei NULL erfolgt ein Rückschluss von \"cmake.cmakePath\". (Die Beibehaltung von NULL wird empfohlen.)", "cmake-tools.configuration.cmake.cpackPath.description": "Pfad zur ausführbaren CPack-Datei. Bei NULL erfolgt ein Rückschluss von \"cmake.cmakePath\". (Die Beibehaltung von NULL wird empfohlen.) Wird ignoriert, wenn Kits anstelle von Voreinstellungen verwendet werden.", "cmake-tools.configuration.cmake.ctest.parallelJobs.markdownDescription": "Die Anzahl paralleler Testaufträge. Verwenden Sie 0, um den Wert `#cmake.parallelJobs#` zu verwenden. Das gilt nur, wenn `#cmake.ctest.allowParallelJobs#` auf `true` festgelegt ist.", - "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "Ermöglicht die parallele Ausführung von ctests. Die Ergebnisausgabe ist jedoch möglicherweise dadurch unverständlich, und der Test-Explorer spiegelt den Teststatus möglicherweise nicht exakt wider.", + "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "Ermöglicht die parallele Ausführung von ctests. Die Ergebnisausgabe ist jedoch möglicherweise dadurch unverständlich, und der Test-Explorer spiegelt den Teststatus möglicherweise nicht exakt wider. Wenn diese Option deaktiviert ist, werden Tests sequenziell in alphabetischer Reihenfolge ausgeführt und entsprechen der Anzeigereihenfolge des Test-Explorers.", "cmake-tools.configuration.cmake.ctest.testExplorerIntegrationEnabled.description": "Gibt an, ob die Integration in den Test-Explorer aktiviert ist. Es ist hilfreich diese zu deaktivieren, wenn Sie lieber eine andere Erweiterung für die Testintegration verwenden.", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiter.markdownDescription": "Optionales Trennzeichen, das zum hierarchischen Trennen von Testsammlungsnamen und Gruppentests im Test-Explorer verwendet wird. Diese Zeichenfolge wird in einem regulären Ausdruck verwendet, sodass einige Trennzeichen möglicherweise mit Escapezeichen versehen werden müssen. Beispiele: `-` ( Ein Trennzeichen: `-`), `\\.|::` (Zwei Trennzeichen: `.` oder `::`. Beachten Sie, dass `.` mit Escapezeichen versehen werden muss.)", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiterMaxOccurrence.markdownDescription": "Die maximale Anzahl, wie oft das Trennzeichen zum Aufteilen des Testnamens verwendet werden darf. `0` bedeutet, dass es kein Limit gibt.", @@ -124,9 +134,21 @@ "cmake-tools.configuration.cmake.ctest.failurePatterns.actual": "Der Index der Übereinstimmungsgruppe der tatsächlichen Testausgabe. Der Standardwert ist undefiniert.", "cmake-tools.configuration.cmake.ctest.failurePatterns.expected": "Der Index der Übereinstimmungsgruppe der erwarteten Testausgabe. Der Standardwert ist undefiniert.", "cmake-tools.configuration.cmake.ctest.debugLaunchTarget.description": "Zielname aus launch.json, der beim Debuggen eines Tests mit CTest gestartet werden soll. Standardmäßig wird bei einem nicht vorhandenen Ziel ein Auswahlfeld mit allen verfügbaren Zielen angezeigt.", + "cmake-tools.configuration.cmake.ctest.neverDebugTestsWithLaunchConfiguration.description": "Wenn der Wert auf „true“ festgelegt ist, werden Tests immer ohne Startkonfiguration debuggt, wobei das Schnellauswahlmenü umgangen wird. Der Standardwert ist „false“.", "cmake-tools.configuration.cmake.parseBuildDiagnostics.description": "Hiermit wird Compilerausgabe auf Warnungen und Fehler analysiert.", "cmake-tools.configuration.cmake.enabledOutputParsers.description": "Zu verwendende Ausgabeparser. Unterstützte Parser `cmake`, `gcc`, `gnuld` für die Linkerausgabe im GNULD-Format, `msvc` für Microsoft Visual C++, `ghs` für den Green Hills-Compiler mit --no_wrap_diagnostics --brief_diagnostics, `diab` für den Wind River Diab-Compiler und `iwyu` für die Include-What-You-Use-Diagnose.", - "cmake-tools.configuration.cmake.debugConfig.description": "Die Debugkonfiguration, die beim Debuggen eines Ziels verwendet werden soll.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.markdownDescription": "Zusätzliche Problem-Matcher für die Build-Ausgabe. Verwenden Sie diese, um Diagnosen von Tools wie Clang-Tidy, PCLint Plus, cppcheck oder benutzerdefinierten Skripten anzuzeigen, die über `add_custom_command`/`add_custom_target` in CMake integriert sind.\n\nJeder Eintrag definiert `name` (wird als Diagnosequellbezeichnung verwendet), `regexp` sowie Indizes für die Erfassungsgruppen `file`, `line`, `column`, `severity`, `message` und `code`.\n\nBeispielsweise zum Abgleich der Clang-Tidy-Ausgabe wie `/path/file.cpp:10:5: warning: some message [check-name]`:\n```json\n[\n {\n \"name\": \"clang-tidy\",\n \"regexp\": \"^(.+?):(\\\\d+):(\\\\d+):\\\\s+(warning|error|note):\\\\s+(.+?)\\\\s*(?:\\\\[(.+)\\\\])?$\",\n \"file\": 1,\n \"line\": 2,\n \"column\": 3,\n \"severity\": 4,\n \"message\": 5,\n \"code\": 6\n }\n]\n```\n\nBenutzerdefinierte Matcher werden **nach** den integrierten Parsern (`gcc`, `msvc` usw.) ausgeführt, damit sie keine Zeilen von den integrierten Compilern übernehmen.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.name": "Ein eindeutiger Name für diesen Abgleicher, der als Diagnosequellbezeichnung im Bereich „Probleme“ verwendet wird.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.regexp": "Der reguläre Ausdruck, der auf jede Zeile der Buildausgabe angewendet wird.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.file": "Der Erfassungsgruppenindex für den Dateipfad. Wird standardmäßig auf `1` festgelegt.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.line": "Der Erfassungsgruppenindex für die Zeilennummer. Wird standardmäßig auf `2` festgelegt.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.column": "Der Erfassungsgruppenindex für die Spaltennummer. Optional.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.group": "Der Erfassungsgruppenindex für den Schweregrad (sollte „error“, „warning“ oder „info“ erfassen).", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.fixed": "Ein fester Schweregrad, der auf alle Übereinstimmungen dieses Musters angewendet wird.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.message": "Der Erfassungsgruppenindex für die Diagnosemeldung. Wird standardmäßig auf `3` festgelegt.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.code": "Der Erfassungsgruppenindex für einen optionalen Diagnosecode.", + "cmake-tools.configuration.cmake.debugConfig.description": "Die Debugkonfiguration, die beim Debuggen eines Ziels verwendet werden soll. Wenn `type` angegeben wird, wird die automatisch erkannte Debuggerkonfiguration übersprungen, und nur eine minimale Basiskonfiguration (Programm, CWD, Name) wird vom Ziel generiert. Alle anderen Eigenschaften werden über diese Einstellung angewendet, sodass sie die vollständige Kontrolle über die Konfiguration des Debugstarts für jeden Debugadapter haben.", + "cmake-tools.configuration.cmake.debugConfig.type.description": "Der zu verwendende Debugadaptertyp (z. B. `cppdbg`, `cppvsdbg`, `lldb`, `codelldb`). Wenn diese Einstellung festgelegt ist, wird die automatische Debuggererkennung aus dem CMake-Cache übersprungen, und dieser Typ wird direkt verwendet. Alle zusätzlichen Eigenschaften, die für den Debugadapter erforderlich sind, können zu `#cmake.debugConfig#`hinzugefügt werden.", "cmake-tools.configuration.cmake.debugConfig.symbolSearchPath.description": "Symbolsuchpfade für Visual Studio-Debugger.", "cmake-tools.configuration.cmake.debugConfig.additionalSOLibSearchPath.description": "Pfade für GDB oder LLDB für die Suche nach SO-Dateien.", "cmake-tools.configuration.cmake.debugConfig.externalConsole.description": "Hiermit wird eine externe Konsole für das Programm gestartet.", @@ -226,11 +248,13 @@ "cmake-tools.configuration.cmake.automaticReconfigure.description": "Hiermit werden CMake-Projektverzeichnisse automatisch konfiguriert, wenn das Kit oder die Konfigurationsvoreinstellung geändert wird.", "cmake-tools.configuration.cmake.pinnedCommands.description": "Liste der CMake-Befehle, die standardmäßig immer angeheftet werden sollen. Diese werden im Abschnitt \"Angeheftete Befehle\" in der Randleiste von CMake Tools angezeigt.", "cmake-tools.configuration.cmake.enableAutomaticKitScan.description": "Aktivieren Sie die automatische Überprüfung für Kits, wenn kein Kit ausgewählt ist. Dies wird nur wirksam, wenn keine CMake-Voreinstellungen verwendet werden.", + "cmake-tools.configuration.cmake.removeStaleKitsOnScan.description": "Remove compiler-based kits from the user kits file during a full kit scan when they are no longer rediscovered. Set \"keep\": true in a kit entry to preserve it.", "cmake-tools.configuration.cmake.enableLanguageServices.description": "Aktivieren Sie Sprachdienste für CMake-Dateien. Dadurch werden Syntaxhervorhebung, Codeabschluss und andere Features aktiviert.", "cmake-tools.configuration.cmake.preRunCoverageTarget.description": "Ziel, das vor dem Ausführen von Tests mit Abdeckung mithilfe des Test-Explorers erstellt werden soll", "cmake-tools.configuration.cmake.postRunCoverageTarget.description": "Ziel, das nach dem Ausführen von Tests mit Abdeckung mithilfe des Test-Explorers erstellt werden soll", "cmake-tools.configuration.cmake.coverageInfoFiles.description": "LCOV-Abdeckungsinfodateien, die nach der Ausführung von Tests mit Abdeckung mit dem Testexplorer verarbeitet werden.", "cmake-tools.configuration.cmake.useFolderPropertyInBuildTargetDropdown.description": "Steuert, ob das Dropdown für das standardmäßige Buildziel nach den CMake-Ordnergruppen gruppiert wird.", + "cmake-tools.configuration.cmake.setBuildTargetSameAsLaunchTarget.description": "Wenn die Option aktiviert ist, wird beim Festlegen des Start-/Debugziels automatisch das Buildziel entsprechend angepasst. Das Buildziel kann weiterhin unabhängig geändert werden.", "cmake-tools.debugger.pipeName.description": "Der Name der Pipe (unter Windows) oder des Domänensockets (unter Unix) zur Verwendung für die Debuggerkommunikation.", "cmake-tools.debugger.clean.description": "Hiermit erfolgt vor der Konfiguration eine Bereinigung.", "cmake-tools.debugger.configureAll.description": "Hiermit erfolgt die Konfiguration für alle Projekte.", @@ -262,6 +286,7 @@ "cmake-tools.configuration.cmake.launchBehavior.breakAndReuseTerminal.markdownDescriptions": "Die Startterminalinstanz wird wiederverwendet, und ein `break`-Befehl wird gesendet, um jeden aktiven Vordergrundprozess vor dem Starten des Ziels zu beenden.", "cmake-tools.configuration.cmake.launchBehavior.newTerminal.markdownDescriptions": "Eine neue Terminalinstanz wird erstellt, und das Ziel wird darin gestartet. Vorhandene Terminals werden nicht automatisch bereinigt.", "cmake-tools.configuration.cmake.loadCompileCommands.description": "Steuert, ob die Erweiterung compile_commands.json liest, um die Kompilierung einzelner Dateien zu ermöglichen.", + "cmake-tools.configuration.cmake.outlineViewType.description": "Project Outline View`s type. Available options are: \"list\" and \"tree\".", "cmake-tools.command.cmake.projectStatus.update.title": "Projektstatus aktualisieren", "cmake-tools.command.cmake.pinnedCommands.add.title": "CMake-Befehl zum Anheften hinzufügen", "cmake-tools.command.cmake.pinnedCommands.remove.title": "Befehl lösen", @@ -272,5 +297,33 @@ "cmake-tools.debugger.label": "CMake-Debugger", "cmake-tools.command.cmake.appendBuildDirectoryToWorkspace.title": "Buildverzeichnis an aktuellen Arbeitsbereich anfügen", "cmake-tools.command.workbench.action.tasks.configureTaskRunner.title": "Aufgabe konfigurieren", - "cmake-tools.command.workbench.action.tasks.runTask.title": "Task ausführen" + "cmake-tools.command.workbench.action.tasks.runTask.title": "Task ausführen", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.description": "Add source files to CMake lists when they are created.", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.no.description": "Do not automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.yes.description": "Automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.description": "Remove source files from CMake lists when they are deleted.", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.no.description": "Do not automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.yes.description": "Automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.markdownDescription": "How to choose which `set()` or `list(APPEND/PREPEND/INSERT)` command invocation to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.never.description": "Do not look for variable modification command invocations, only look for source command invocations.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askFirstParentDir.description": "Present a Quick Pick with options from the first `CMakeLists.txt` found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askParentDirs.description": "Present a Quick Pick with options from all `CMakeLists.txt` files found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.sourceVariables.markdownDescription": "Variables to add source files to. Variables appearing earlier in this list will be given higher priority. Only used if `#cmake.modifyLists.variableSelection#` is not `never`. Supports glob patterns.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.description": "How to choose which target to add new source files to when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askNearestSourceDir.description": "Present a Quick Pick with targets whose source directories are closest to location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askParentSourceDirs.description": "Present a Quick Pick with targets whose source directories contain the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.description": "How to choose which of a target's source command invocations to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askFirstParentDir.description": "Present a Quick Pick with options from the CMake list file in the parent directory closest to the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askParentDirs.description": "Present a Quick Pick with options from all CMake list files in the parent directories of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSourceCommands.markdownDescription": "Commands to treat as target source commands when adding source files CMake lists. Commands appearing earlier in this list will be given higher priority. Supports glob patterns.\r\n\r\nIf you are using the File API (see `#cmake.cmakeCommunicationMode#`), user-defined functions and macros which call the commands in this list are detected automatically and added to it.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.description": "How to choose which of a target's visibility scopes, file sets, or source keyword parameters to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.ask.description": "Present a Quick Pick with options from the selected target source command invocation.", + "cmake-tools.configuration.cmake.modifyLists.sourceListKeywords.markdownDescription": "Keyword arguments to user-defined functions and macros which introduce lists of source files. If left empty, all arguments consisting of only upper-case letters and underscores will be considered. Supports glob patterns.", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier" } \ No newline at end of file diff --git a/i18n/deu/schemas/kits-schema.json.i18n.json b/i18n/deu/schemas/kits-schema.json.i18n.json index d9e5d26b90..4b16a1d182 100644 --- a/i18n/deu/schemas/kits-schema.json.i18n.json +++ b/i18n/deu/schemas/kits-schema.json.i18n.json @@ -17,9 +17,11 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Pfad zu einer Toolkettendatei", "schemas/kits-schema.json.items.properties.visualStudio": "Instanz-ID des Visual Studio-Produkts", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Als Ziel zu verwendende Architektur", + "schemas/kits-schema.json.items.properties.visualStudioArguments": "Arguments to vcvarsall.bat", "schemas/kits-schema.json.items.properties.environmentSetupScript": "Der absolute Pfad zu einem Skript, das die Umgebung für das Kit ändert.", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Wert für die Umgebungsvariable", - "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Wert für die CMake-Einstellung", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.0": "Wert für die CMake-Einstellung. Semikolons in Zeichenfolgen werden mit Escapezeichen versehen.", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.1": "Werte, die mit Semikolons verknüpft sind, um eine CMake-Liste ohne Escapezeichen zu bilden.", "schemas/kits-schema.json.items.properties.preferredGenerator": "Bevorzugten CMake-Generator für dieses Kit festlegen", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.name": "Name des zu verwendenden Generators", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.platform": "CMake-Plattform für -A-Argument", diff --git a/i18n/deu/src/cmakeListsModifier.i18n.json b/i18n/deu/src/cmakeListsModifier.i18n.json new file mode 100644 index 0000000000..a3c9d1d6a2 --- /dev/null +++ b/i18n/deu/src/cmakeListsModifier.i18n.json @@ -0,0 +1,51 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "add.newly.created.files": "Add newly created files to CMakeLists.txt", + "error.processing.add.files": "Error processing added files", + "remove.deleted.file": "Remove a deleted file from CMakeLists.txt", + "error.processing.delete.files": "Error processing deleted files", + "add.file.no.code.model": "Adding a file without a valid code model", + "file.already.in.target": "{0} already in target {1}.", + "no.targets.found": "No targets found. {0} not added to build system.", + "no.source.command.invocations": "No source command invocations found. {0} not added to build system.", + "delete.file.no.code.model": "Deleting a file without a valid code model", + "not.modifying.unsaved.delete": "Not modifying {0} to delete {1} because it has unsaved changes.", + "add.to.which.variable": "CMake: Add {0} to which variable?", + "add.to.which.target": "CMake: Add {0} to which target?", + "add.to.which.invocation": "CMake: Add {0} to which command invocation of {1}?", + "add.to.which.scope.fileset.keyword": "CMake: Add {0} to which Scope, File Set, or Keyword?", + "open.file": "Open File", + "not.modifying.unsaved.files": "Cannot modify {0} because it has unsaved changes.", + "skipping.unsaved.files": "Skipping {0} file(s) with unsaved changes: {1}", + "edit.label.remove.source.file": "CMake: Remove deleted source file", + "edit.label.add.source.file": "CMake: Add new source file", + "edits.applied.successfully": "Successfully applied {0} CMake list edit(s).", + "edits.apply.failed": "Failed to apply CMake list edits: {0}", + "not.local.file.add": "{0} is not a local file. Not adding to CMake lists.", + "no.candidates.found": "No suitable locations found to add {0}.", + "not.modifying.unsaved.add": "Not modifying {0} to add {1} because it has unsaved changes.", + "not.local.file.remove": "{0} is not a local file. Not removing from CMake lists.", + "could.not.open.file": "Could not open file {0}: {1}", + "file.not.found.in.cmake.lists": "{0} not found in CMake lists.", + "file.already.in.destination": "{0} already in {1} at {2}:{3}", + "parse.error.examining.cmake.lists": "Parse error while examining CMakeLists.txt files. Details: {0}", + "could.not.open.cmake.lists": "Could not open {0}: {1}", + "parse.error.finding.invocations": "Parse error while finding command invocations to add to. CMake file modified since last configure? Details: {0}", + "unexpected.command.found": "Found \"{0}\", expected \"{1}\". CMake file modified since last configure? Details: {2}:{3}", + "scope.private.detail": "{0} will be used to build {1}", + "scope.public.detail": "{0} will be used to build both {1} and targets that use {1}", + "scope.interface.detail": "{0} will be used to build targets that use {1}", + "fileset.headers.detail": "{0} will be used via a language's #include mechanism", + "fileset.cxx.modules.detail": "{0} contains C++ interface module or partition units.", + "label.fileset": "{0} File Set", + "label.scope": "{0} Scope", + "fileset.type": "Type: {0}", + "scope.with.fileset.detail": "{0} Scope: {1}", + "keyword.of.command": "Keyword of {0} command", + "command.label": "{0} Command", + "add.to.command.arguments": "Add {0} to the list of arguments to {1} command" +} \ No newline at end of file diff --git a/i18n/deu/src/cmakeProject.i18n.json b/i18n/deu/src/cmakeProject.i18n.json index 4612334f78..9529e606c3 100644 --- a/i18n/deu/src/cmakeProject.i18n.json +++ b/i18n/deu/src/cmakeProject.i18n.json @@ -9,6 +9,7 @@ "generator.changed.restart.driver": "Der CMake-Treiber wird nach einer Generatoränderung neu gestartet.", "preferredGenerator.changed.restart.driver": "Der CMake-Treiber wird nach einer preferredGenerators-Änderung neu gestartet.", "bad.executable": "Ungültige ausführbare CMake-Datei: {0}. Stellen Sie sicher, dass sie installiert ist oder dass der Wert der {1}-Einstellung den richtigen Pfad enthält.", + "shell.changed.restart.driver": "Der CMake-Treiber wird nach einer Änderung der Shell neu gestartet.", "targests.in.preset": "[Ziele in Voreinstellung]", "constructing.cmakeproject": "Erstellen einer neuen CMakeProject-Instanz", "disposing.driver": "CMake-Treiber wird verworfen", @@ -142,9 +143,9 @@ "configure.now.button": "Jetzt konfigurieren", "cache.load.failed": "Es wurde keine Datei „CMakeCache.txt“ gefunden. Konfigurieren Sie zuerst das Projekt.", "set.up.before.selecting.target": "Richten Sie Ihr CMake-Projekt ein, bevor Sie ein Ziel auswählen.", - "select.active.target.tooltip": "Wählen Sie das Standardziel für Builds aus.", "enter.target.name": "Zielname eingeben", "target.to.build.description": "Ziel für Build", + "select.active.target.tooltip": "Wählen Sie das Standardziel für Builds aus.", "build.failed": "Fehler beim Buildvorgang.", "driver.died.after.build.succeeded": "Der CMake-Treiber wurde unmittelbar nach dem erfolgreichen Buildvorgang beendet.", "driver.died.before.workflow": "Der CMake-Treiber wurde vor dem Starten des Workflows beendet.", @@ -167,6 +168,7 @@ "target.debugging.unsupported": "Das Zieldebuggen wird mit dem Legacytreiber nicht mehr unterstützt.", "learn.more.button": "Weitere Informationen", "failed.to.prepare.target": "Fehler beim Vorbereiten des ausführbaren Ziels namens {0}", + "debug.configuration.from.settings": "Debuggen der Konfiguration über Benutzereinstellungen: {0}", "debug.configuration.from.cache": "Konfiguration aus Cache debuggen: {0}", "problem.getting.debug": "Problem beim Abrufen der Debugkonfiguration aus dem Cache.", "starting.debugger.with": "Der Debugger wird mit der folgenden Konfiguration gestartet.", diff --git a/i18n/deu/src/ctest.i18n.json b/i18n/deu/src/ctest.i18n.json index bfdb6cef9e..5ba380e7b6 100644 --- a/i18n/deu/src/ctest.i18n.json +++ b/i18n/deu/src/ctest.i18n.json @@ -27,6 +27,13 @@ "test.buildingPostRunCoverageTarget": "Das postRunCoverageTarget „{0}“ für das Projekt {1} wird erstellt, nachdem die Tests mit Abdeckung ausgeführt wurden.", "test.postRunCoverageTargetFailure": "Fehler beim Erstellen des PostRunCoverageTarget-Ziels für das Projekt in {0}. Die Verarbeitung von Abdeckungsdaten wird übersprungen.", "test.skip.run.build.failure": "Aufgrund eines Buildfehlers werden keine Tests ausgeführt.", + "debug.without.launch.config": "Debuggen ohne Startkonfiguration", + "choose.debug.method": "Wählen Sie aus, wie der Test debuggt werden soll.", + "yes": "Ja", + "no": "Nein", + "never.debug.with.launch.prompt": "Möchten Sie in diesem Arbeitsbereich Tests immer ohne Startkonfiguration debuggen?", + "no.launch.config": "Keine Startkonfigurationen gefunden.", + "choose.launch.config": "Wählen Sie eine Startkonfiguration aus, mit der der Test gedebuggt werden soll.", "test.skip.debug.build.failure": "Debuggen für Tests kann aufgrund eines Buildfehlers nicht ausgeführt werden.", "build.failed": "Fehler beim Buildvorgang", "run.tests.profile": "Tests ausführen", diff --git a/i18n/deu/src/drivers/cmakeDriver.i18n.json b/i18n/deu/src/drivers/cmakeDriver.i18n.json index 7ce19f5b03..0df27af932 100644 --- a/i18n/deu/src/drivers/cmakeDriver.i18n.json +++ b/i18n/deu/src/drivers/cmakeDriver.i18n.json @@ -5,13 +5,14 @@ // Do not edit this file. It is machine generated. { "no.usable.generator.found": "Es wurde kein verwendbarer Generator gefunden.", - "user.closed.file.compilation.terminal": "Der Benutzer hat ein Dateikompilierungsterminal geschlossen.", "disposing.base.cmakedriver": "Basis-CMakeDriver wird verworfen.", "async.disposing.cmake.driver": "CMake-Treiber wird asynchron verworfen.", "test.with.overrides": "HINWEIS: Sie testen mit voreingestellten {0}, aber es werden einige Außerkraftsetzungen aus Ihren VS Code-Einstellungen angewendet.", "package.with.overrides": "HINWEIS: Sie erstellen ein Paket mit voreingestellten {0}, aber es werden einige Außerkraftsetzungen aus Ihren VS Code-Einstellungen angewendet.", "compile.with.overrides": "HINWEIS: Sie kompilieren mit voreingestellten {0}, aber es werden einige Außerkraftsetzungen aus Ihren VS Code-Einstellungen angewendet.", "file.compilation": "Dateikompilierung", + "compile.finished.with.error": "Die Kompilierung wurde mit Fehlern beendet.", + "compile.finished.successfully": "Die Kompilierung wurde erfolgreich abgeschlossen.", "removing": "{0} wird entfernt", "unlink.failed": "Fehler beim Entfernen der Cachedatei {0}", "switching.to.config.preset": "Wechseln zur Konfigurationsvoreinstellung: {0}", diff --git a/i18n/deu/src/extension.i18n.json b/i18n/deu/src/extension.i18n.json index d5241c37aa..ce2d71f26a 100644 --- a/i18n/deu/src/extension.i18n.json +++ b/i18n/deu/src/extension.i18n.json @@ -11,10 +11,11 @@ "configure.now.button": "Jetzt konfigurieren", "configure.recommended": "Nach dem Upgrade auf eine neue Definition der Kits wird eine Neukonfiguration empfohlen.", "using.cache.to.configure.workspace.on.open": "Es wird versucht, den Cache zum Konfigurieren des Arbeitsbereichs {0} zu verwenden.", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier", + "failed.to.open.cache.file.on.code.model.update": "Failed to open CMake cache file on code model update", "update.code.model.for.cpptools": "Codemodell für cpptools aktualisieren", "update.intellisense.disabled": "Der Konfigurationsanbieter wird nicht aktualisiert. Grund: {0} ist festgelegt auf {1}", "failed.to.get.cpptools.api": "Fehler beim Abrufen der cppTools-API", - "filed.to.open.cache.file.on.code.model.update": "Fehler beim Öffnen der CMake-Cachedatei für das Codemodellupdate.", "opening.text.editor.for": "Text-Editor wird geöffnet für {0}", "no.kits.file.what.to.do": "Es ist keine Kitdatei vorhanden. Wie möchten Sie vorgehen?", "scan.for.kits.button": "Nach Kits suchen", @@ -49,6 +50,7 @@ "cmake.finished.returned.unserializable": "{0} abgeschlossen (nicht serialisierbarer Wert zurückgegeben)", "loading.extension.commands": "Erweiterungsbefehle werden geladen.", "register.command": "Registrieren von CMakeTools-Erweiterungsbefehl {0}", + "bookmark.target.not.resolved": "Lesezeichen „{0}“ konnte nicht in ein Ziel aufgelöst werden. Das Projekt muss möglicherweise neu konfiguriert werden.", "search.project.outline": "Geben Sie einen Suchbegriff ein, um die Projektgliederung zu filtern", "added.to": "hinzugefügt zu", "removed.from": "entfernt aus", diff --git a/i18n/deu/src/proc.i18n.json b/i18n/deu/src/proc.i18n.json index f7ee8d3105..5c8858456b 100644 --- a/i18n/deu/src/proc.i18n.json +++ b/i18n/deu/src/proc.i18n.json @@ -6,11 +6,11 @@ { "executing.command": "Befehl wird ausgeführt: {0}", "execution.environment": " mit Umgebung: {0}", - "process.error": "Der Befehl {0} ist mit dem Fehler {1}, Stack {2} fehlgeschlagen.", - "process.exit.with.signal": "Der Befehl {0} wurde mit dem Code {1} und dem Signal {2}, Stack {3} beendet.", - "process.exit": "Der Befehl {0} wurde mit dem Code {1}, Stack {2} beendet.", - "process.exit.stdout": "Befehlsausgabe bei Standardausgabe {0}, Stack {1}.", - "process.exit.stderr": "Befehlsausgabe bei Standardfehler {0}, Stack {1}.", + "process.error": "Fehler beim Befehl {0}. Fehler: {1}", + "process.exit.with.signal": "Der Befehl: {0} wurde mit dem Code: {1} und dem Signal: {2} beendet.", + "process.exit": "Der Befehl \"{0}\" wurde mit dem Code \"{1}\" beendet.", + "process.exit.stdout": "Befehlsausgabe bei Standardausgabe: {0}", + "process.exit.stderr": "Befehlsausgabe bei Standardfehler: {0}", "processing.data.event.stdout": "Das Ereignis {0} aus \"proc stdout\" wird verarbeitet.", "processing.data.event.stderr": "Das Ereignis {0} aus \"proc stderr\" wird verarbeitet.", "resolving.close.event": "Der Prozess wird beim Ereignis {0} aufgelöst." diff --git a/i18n/deu/src/util.i18n.json b/i18n/deu/src/util.i18n.json index 2e27c7c789..6a95377c1f 100644 --- a/i18n/deu/src/util.i18n.json +++ b/i18n/deu/src/util.i18n.json @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "invalid.value": "Ungültiger Wert zum Konvertieren in CMake-Wert: {0}", "invalid.version.string": "Ungültige Versionszeichenfolge: {0}.", "extension.is.undefined": "Die Erweiterung ist nicht definiert!", "sourcedirectory.not.a.directory": "\"sourceDirectory\" ist kein Verzeichnis." diff --git a/i18n/esn/assets/policies.json.i18n.json b/i18n/esn/assets/policies.json.i18n.json new file mode 100644 index 0000000000..b94a93a828 --- /dev/null +++ b/i18n/esn/assets/policies.json.i18n.json @@ -0,0 +1,212 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "assets/policies.json.CMP0000": "Debe especificarse una versión mínima de CMake necesaria.", + "assets/policies.json.CMP0001": "CMAKE_BACKWARDS_COMPATIBILITY ya no se debe usar.", + "assets/policies.json.CMP0002": "Los nombres de destino lógicos deben ser únicos globalmente.", + "assets/policies.json.CMP0003": "Las bibliotecas vinculadas a través de la ruta de acceso completa ya no generan rutas de búsqueda del enlazador.", + "assets/policies.json.CMP0004": "Es posible que las bibliotecas vinculadas no tengan espacios en blanco iniciales o finales.", + "assets/policies.json.CMP0005": "Los valores de definición de preprocesador ahora se convierten en secuencias de escape automáticamente.", + "assets/policies.json.CMP0006": "La instalación de MACOSX_BUNDLE destinos requiere un DESTINO DE LOTE.", + "assets/policies.json.CMP0007": "el comando list ya no omite los elementos vacíos.", + "assets/policies.json.CMP0008": "Las bibliotecas vinculadas mediante la ruta de acceso completa deben tener un nombre de archivo de biblioteca válido.", + "assets/policies.json.CMP0009": "Las llamadas de GLOB_RECURSE FILE no deben seguir los vínculos simbólicos de manera predeterminada.", + "assets/policies.json.CMP0010": "La sintaxis de referencia de variable incorrecta es un error.", + "assets/policies.json.CMP0011": "Los scripts incluidos realizan automáticamente cmake_policy PUSH y POP.", + "assets/policies.json.CMP0012": "si reconoce números y constantes booleanas.", + "assets/policies.json.CMP0013": "No se permiten directorios binarios duplicados.", + "assets/policies.json.CMP0014": "Los directorios de entrada deben tener CMakeLists.txt.", + "assets/policies.json.CMP0015": "link_directories trata las rutas de acceso relativas al directorio de origen.", + "assets/policies.json.CMP0016": "target_link_libraries notifica un error si su único argumento no es un destino.", + "assets/policies.json.CMP0017": "Preferir los archivos del directorio del módulo de CMake al incluirlos desde allí.", + "assets/policies.json.CMP0018": "Omitir variable CMAKE_SHARED_LIBRARY__FLAGS.", + "assets/policies.json.CMP0019": "No vuelva a expandir las variables en la información de inclusión y vínculo.", + "assets/policies.json.CMP0020": "Vincula automáticamente archivos ejecutables de Qt al destino qtmain en Windows.", + "assets/policies.json.CMP0021": "Error irrecuperable en las rutas de acceso relativas en INCLUDE_DIRECTORIES propiedad de destino.", + "assets/policies.json.CMP0022": "INTERFACE_LINK_LIBRARIES define la interfaz de vínculo.", + "assets/policies.json.CMP0023": "Las firmas de target_link_libraries de palabras clave y sin formato no se pueden mezclar.", + "assets/policies.json.CMP0024": "No permitir el resultado de la exportación de inclusión.", + "assets/policies.json.CMP0025": "El identificador del compilador para Apple Clang ahora es AppleClang.", + "assets/policies.json.CMP0026": "No permitir el uso de la propiedad LOCATION para los destinos de compilación.", + "assets/policies.json.CMP0027": "Destinos importados vinculados condicionalmente con directorios de inclusión que faltan.", + "assets/policies.json.CMP0028": "Dos puntos dobles en el nombre de destino significa alias o destino IMPORTED.", + "assets/policies.json.CMP0029": "No se debe llamar al comando subdir_depends.", + "assets/policies.json.CMP0030": "No se debe llamar al comando use_mangled_mesa.", + "assets/policies.json.CMP0031": "No se debe llamar al comando load_command.", + "assets/policies.json.CMP0032": "No se debe llamar al comando output_required_files.", + "assets/policies.json.CMP0033": "No se debe llamar al comando export_library_dependencies.", + "assets/policies.json.CMP0034": "No se debe llamar al comando utility_source.", + "assets/policies.json.CMP0035": "No se debe llamar al comando variable_requires.", + "assets/policies.json.CMP0036": "No se debe llamar al comando build_name.", + "assets/policies.json.CMP0037": "Los nombres de destino no deben estar reservados y deben coincidir con un patrón de validez.", + "assets/policies.json.CMP0038": "Es posible que los destinos no se vinculen directamente a sí mismos.", + "assets/policies.json.CMP0039": "Es posible que los destinos de la utilidad no tengan dependencias de vínculo.", + "assets/policies.json.CMP0040": "El destino de la firma TARGET de add_custom_command debe existir y debe definirse en el directorio actual.", + "assets/policies.json.CMP0041": "Error en la inclusión relativa con la expresión del generador.", + "assets/policies.json.CMP0042": "MACOSX_RPATH está habilitado de manera predeterminada.", + "assets/policies.json.CMP0043": "Omitir propiedades COMPILE_DEFINITIONS_", + "assets/policies.json.CMP0044": "Expresiones del generador de _COMPILER_ID con distinción entre mayúsculas y minúsculas", + "assets/policies.json.CMP0045": "Error en el destino inexistente en get_target_property.", + "assets/policies.json.CMP0046": "Error en la dependencia inexistente en add_dependencies.", + "assets/policies.json.CMP0047": "Use el identificador del compilador de QCC para los controladores qcc en QNX.", + "assets/policies.json.CMP0048": "El comando del proyecto administra las variables VERSION.", + "assets/policies.json.CMP0049": "No expanda variables en las entradas de origen de destino.", + "assets/policies.json.CMP0050": "No permitir firmas SOURCE add_custom_command.", + "assets/policies.json.CMP0051": "Enumere TARGET_OBJECTS en la propiedad de destino SOURCES.", + "assets/policies.json.CMP0052": "Rechazar directorios de origen y compilación en INTERFACE_INCLUDE_DIRECTORIES instalados.", + "assets/policies.json.CMP0053": "Simplifique la evaluación de la secuencia de escape y la referencia de variables.", + "assets/policies.json.CMP0054": "Interprete solo los argumentos if como variables o palabras clave cuando no se comenten.", + "assets/policies.json.CMP0055": "Comprobación estricta del comando break.", + "assets/policies.json.CMP0056": "Respetar las marcas de vínculo en try_compile firma de archivo de origen.", + "assets/policies.json.CMP0057": "Admite new si IN_LIST operador.", + "assets/policies.json.CMP0058": "Ninja requiere que los subproductos del comando personalizado sean explícitos.", + "assets/policies.json.CMP0059": "No trate DEFINITIONS como una propiedad de directorio integrada.", + "assets/policies.json.CMP0060": "Vincule bibliotecas por ruta de acceso completa incluso en directorios implícitos.", + "assets/policies.json.CMP0061": "CTest no indica de forma predeterminada a Make que omita los errores (-i).", + "assets/policies.json.CMP0062": "No permitir la instalación del resultado de la exportación.", + "assets/policies.json.CMP0063": "Respetar las propiedades de visibilidad de todos los tipos de destino.", + "assets/policies.json.CMP0064": "Reconocer TEST como operador para el comando if.", + "assets/policies.json.CMP0065": "No agregue marcas para exportar símbolos desde ejecutables sin la propiedad de destino ENABLE_EXPORTS.", + "assets/policies.json.CMP0066": "Respetar las marcas por configuración en try_compile firma de archivo de origen.", + "assets/policies.json.CMP0067": "Respetar el estándar de lenguaje en try_compile firma de archivo de origen.", + "assets/policies.json.CMP0068": "La configuración de RPATH en macOS no afecta a install_name.", + "assets/policies.json.CMP0069": "INTERPROCEDURAL_OPTIMIZATION se aplica cuando se habilita.", + "assets/policies.json.CMP0070": "Defina el comportamiento del archivo para las rutas de acceso relativas.", + "assets/policies.json.CMP0071": "Deje que AUTOMOC y AUTOUIC procesen archivos GENERADOS.", + "assets/policies.json.CMP0072": "FindOpenGL prefiere GLVND de forma predeterminada cuando está disponible.", + "assets/policies.json.CMP0073": "No genere entradas de caché de _LIB_DEPENDS heredadas.", + "assets/policies.json.CMP0074": "find_package uses _ROOT variables.", + "assets/policies.json.CMP0075": "Las macros de comprobación de archivos de inclusión respetan CMAKE_REQUIRED_LIBRARIES.", + "assets/policies.json.CMP0076": "El comando target_sources convierte las rutas de acceso relativas en absolutas.", + "assets/policies.json.CMP0077": "la opción respeta las variables normales.", + "assets/policies.json.CMP0078": "UseSWIG genera nombres de destino estándar.", + "assets/policies.json.CMP0079": "target_link_libraries permite el uso con destinos en otros directorios.", + "assets/policies.json.CMP0080": "BundleUtilities no se puede incluir en el momento de la configuración.", + "assets/policies.json.CMP0081": "No se permiten rutas de acceso relativas en LINK_DIRECTORIES propiedad de destino.", + "assets/policies.json.CMP0082": "Las reglas de instalación de add_subdirectory las llamadas se intercalan con las del autor de la llamada.", + "assets/policies.json.CMP0083": "Para controlar la generación del ejecutable independiente de la posición (PIE) o no, se requieren algunas marcas en el momento del vínculo.", + "assets/policies.json.CMP0084": "El módulo FindQt no existe para find_package.", + "assets/policies.json.CMP0085": "$ controla los elementos de lista vacíos.", + "assets/policies.json.CMP0086": "UseSWIG respeta SWIG_MODULE_NAME mediante la marca -module.", + "assets/policies.json.CMP0087": "instalar e instalar expresiones de generador de compatibilidad.", + "assets/policies.json.CMP0088": "FindBISON ejecuta bisonte en CMAKE_CURRENT_BINARY_DIR al ejecutar.", + "assets/policies.json.CMP0089": "El identificador del compilador para los compiladores XL basados en IBM Clang ahora es XLClang.", + "assets/policies.json.CMP0090": "export no rellena el registro de paquetes de forma predeterminada.", + "assets/policies.json.CMP0091": "Las marcas de biblioteca en tiempo de ejecución de MSVC se seleccionan mediante una abstracción.", + "assets/policies.json.CMP0092": "Las marcas de advertencia de MSVC no están en CMAKE__FLAGS de manera predeterminada.", + "assets/policies.json.CMP0093": "Los informes FindBoost Boost_VERSION en formato x.y.z.", + "assets/policies.json.CMP0094": "Los módulos FindPython3, FindPython2 y FindPython usan LOCATION para la estrategia de búsqueda.", + "assets/policies.json.CMP0095": "Las entradas RPATH se convierten correctamente en secuencias de escape en el script intermedio de instalación de CMake.", + "assets/policies.json.CMP0096": "El comando del proyecto conserva los ceros iniciales en los componentes de versión.", + "assets/policies.json.CMP0097": "ExternalProject_Add con GIT_SUBMODULES \"\" no inicializa ningún submódulo.", + "assets/policies.json.CMP0098": "FindFLEX ejecuta flex en el directorio CMAKE_CURRENT_BINARY_DIR al ejecutar.", + "assets/policies.json.CMP0099": "Las propiedades de vínculo son transitivas sobre las dependencias privadas de las bibliotecas estáticas.", + "assets/policies.json.CMP0100": "Deje que AUTOMOC y AUTOUIC procesen los archivos de encabezado que terminan con una extensión .hh.", + "assets/policies.json.CMP0101": "target_compile_options ahora siempre respeta la palabra clave BEFORE.", + "assets/policies.json.CMP0102": "El comando mark_as_advanced ya no crea una entrada de caché si aún no existe una.", + "assets/policies.json.CMP0103": "Ya no se permiten varias llamadas para exportar comandos con el mismo ARCHIVO sin APPEND.", + "assets/policies.json.CMP0104": "Inicialice CMAKE_CUDA_ARCHITECTURES cuando CMAKE_CUDA_COMPILER_ID _COMPILER_ID> sea NVIDIA. Genera un error si CUDA_ARCHITECTURES está vacío.", + "assets/policies.json.CMP0105": "LINK_OPTIONS y INTERFACE_LINK_OPTIONS propiedades de destino ahora se usan para el paso de vínculo de dispositivo.", + "assets/policies.json.CMP0106": "Se quita el módulo de documentación.", + "assets/policies.json.CMP0107": "No se permite crear un destino ALIAS con el mismo nombre que otro destino.", + "assets/policies.json.CMP0108": "No se permite que un destino se vincule a sí mismo incluso a través de un destino ALIAS.", + "assets/policies.json.CMP0109": "find_program requiere permiso para ejecutarse, pero no para leer.", + "assets/policies.json.CMP0110": "add_test admite caracteres arbitrarios en los nombres de prueba.", + "assets/policies.json.CMP0111": "Se produce un error en un destino importado al que le falta su propiedad de ubicación durante la generación.", + "assets/policies.json.CMP0112": "Las expresiones del generador de componentes de archivo de destino no agregan dependencias de destino.", + "assets/policies.json.CMP0113": "Los generadores de Makefile no repiten comandos personalizados de las dependencias de destino.", + "assets/policies.json.CMP0114": "Los destinos del paso ExternalProject adoptan completamente sus pasos.", + "assets/policies.json.CMP0115": "Las extensiones de archivo de origen deben ser explícitas.", + "assets/policies.json.CMP0116": "Los generadores ninja transforman DEPFILE s de add_custom_command.", + "assets/policies.json.CMP0117": "La marca RTTI de MSVC /GR no se agrega a CMAKE_CXX_FLAGS _FLAGS> de forma predeterminada.", + "assets/policies.json.CMP0118": "Los orígenes GENERATED se pueden usar en directorios sin marca manual.", + "assets/policies.json.CMP0119": "La propiedad del archivo de origen LANGUAGE se compila explícitamente como lenguaje especificado.", + "assets/policies.json.CMP0120": "Se quita el módulo WriteCompilerDetectionHeader.", + "assets/policies.json.CMP0121": "El comando list ahora detecta índices no válidos.", + "assets/policies.json.CMP0122": "Use LASWIG para usar convenciones de nombre de biblioteca para el lenguaje CSharp.", + "assets/policies.json.CMP0123": "Las marcas de compilación de cpu/arch de ARMClang y de vínculo se deben establecer explícitamente.", + "assets/policies.json.CMP0124": "Las variables de bucle foreach solo están disponibles en el ámbito del bucle.", + "assets/policies.json.CMP0125": "Los comandos find_file, find_path, find_library y find_program almacenan en caché su resultado en la variable especificada por su primer argumento. Antes de CMake 3.21, si ya existía una variable de caché con ese nombre antes de la llamada pero la variable de caché no tenía ningún tipo, se descartaría cualquier variable que no fuera de caché con el mismo nombre y siempre se usaría la variable de caché (consulte también CMP0126 para ver un comportamiento diferente pero similar). Esto contradiga la convención de que una variable que no es de caché debe tener prioridad sobre una variable de caché con el mismo nombre. Esta situación puede producirse si un usuario establece una variable de caché en la línea de comandos sin especificar un tipo, como cmake -DMYVAR=blah... en lugar de cmake -DMYVAR:FILEPATH=blah.", + "assets/policies.json.CMP0126": "Cuando esta directiva se establece en NEW, el comando set no quita ninguna variable normal del mismo nombre del ámbito actual. El comportamiento OLD quita cualquier variable normal del mismo nombre del ámbito actual en las situaciones siguientes:", + "assets/policies.json.CMP0127": "cmake_dependent_option admite la sintaxis de condición completa.", + "assets/policies.json.CMP0128": "Cuando esta directiva se establece en NUEVO:", + "assets/policies.json.CMP0129": "El identificador del compilador para los compiladores LCC de MCST ahora es LCC, no GNU.", + "assets/policies.json.CMP0130": "mientras diagnostica errores de evaluación de condiciones.", + "assets/policies.json.CMP0131": "LINK_LIBRARIES admite :genx:`$` expresión de generador.", + "assets/policies.json.CMP0132": "No establezca variables de entorno del compilador en la primera ejecución.", + "assets/policies.json.CMP0133": "El módulo CPack desactiva SLA por defecto en el generador DragNDrop de CPack.", + "assets/policies.json.CMP0134": "La vista del Registro predeterminada es TARGET para los comandos find_file, find_path, find_library y find_package y BOTH para el comando find_program.", + "assets/policies.json.CMP0135": "Al usar el método de descarga de dirección URL con los comandos ExternalProject_Add o FetchContent_Declare, CMake 3.23 y versiones anteriores establecen las marcas de tiempo del contenido extraído en el mismo valor que las marcas de tiempo del archivo. Cuando cambia la dirección URL, se descarga y extrae el nuevo archivo, pero es posible que las marcas de tiempo del contenido extraído no sean más recientes que el contenido anterior. Es posible que todo lo que dependa del contenido extraído no se vuelva a generar, aunque el contenido pueda cambiar.", + "assets/policies.json.CMP0136": "Las marcas de la biblioteca en tiempo de ejecución de Watcom se seleccionan mediante una abstracción.", + "assets/policies.json.CMP0137": "try_compile pasa variables de plataforma en modo de proyecto.", + "assets/policies.json.CMP0138": "CheckIPOSupported usa marcas del proyecto de llamada.", + "assets/policies.json.CMP0139": "El comando if admite comparaciones de rutas de acceso mediante PATH_EQUAL operador.", + "assets/policies.json.CMP0140": "El comando return comprueba sus parámetros.", + "assets/policies.json.CMP0141": "Las marcas de formato de información de depuración de MSVC se seleccionan mediante una abstracción.", + "assets/policies.json.CMP0142": "El generador de Xcode no anexa sufijos por configuración a las rutas de acceso de búsqueda de la biblioteca.", + "assets/policies.json.CMP0143": "USE_FOLDERS propiedad global se trata como ON de manera predeterminada.", + "assets/policies.json.CMP0144": "find_package usa variables _ROOT en mayúsculas.", + "assets/policies.json.CMP0145": "Se quitan los módulos Desi y FindDart.", + "assets/policies.json.CMP0146": "Se quita el módulo FindCUDA.", + "assets/policies.json.CMP0147": "los generadores de Visual Studio compilan comandos personalizados en paralelo.", + "assets/policies.json.CMP0148": "Se quitan los módulos FindPythonInterp y FindPythonLibs.", + "assets/policies.json.CMP0149": "Visual Studio Generators selecciona la Windows SDK más reciente de forma predeterminada.", + "assets/policies.json.CMP0150": "los comandos ExternalProject_Add y FetchContent_Declare tratan las rutas de acceso GIT_REPOSITORY relativas como relativas al remoto del proyecto primario.", + "assets/policies.json.CMP0151": "AUTOMOC include directory es un directorio de inclusión del sistema de manera predeterminada.", + "assets/policies.json.CMP0152": "el archivo resuelve los vínculos simbólicos antes de contraer .. / componentes.", + "assets/policies.json.CMP0153": "No se debe llamar al comando exec_program.", + "assets/policies.json.CMP0154": "Los archivos generados son privados de manera predeterminada en destinos que usan conjuntos de archivos.", + "assets/policies.json.CMP0155": "Los orígenes de C++ en destinos con al menos C++20 se examinan en busca de importaciones cuando se admiten.", + "assets/policies.json.CMP0156": "Desduplicar bibliotecas en líneas de vínculo en función de las capacidades del enlazador.", + "assets/policies.json.CMP0157": "El modo de compilación Swift se selecciona mediante una abstracción.", + "assets/policies.json.CMP0158": "add_test respeta CMAKE_CROSSCOMPILING_EMULATOR solo cuando se compilan de forma cruzada.", + "assets/policies.json.CMP0159": "archivo con actualizaciones regex CMAKE_MATCH_.", + "assets/policies.json.CMP0160": "Ahora se produce un error en más propiedades de destino de solo lectura al intentar establecerlas.", + "assets/policies.json.CMP0161": "El valor predeterminado de la variable CPACK_PRODUCTBUILD_DOMAINS es true.", + "assets/policies.json.CMP0162": "los generadores de Visual Studio agregan indicadores UseDebugLibraries de manera predeterminada.", + "assets/policies.json.CMP0163": "La propiedad del archivo de origen GENERATED ahora está visible en todos los directorios.", + "assets/policies.json.CMP0164": "add_library rechaza las bibliotecas SHARED cuando no es compatible con la plataforma.", + "assets/policies.json.CMP0165": "no se debe llamar a enable_language antes del proyecto.", + "assets/policies.json.CMP0166": "TARGET_PROPERTY evalúa las propiedades de vínculo de forma transitiva sobre las dependencias privadas de las bibliotecas estáticas.", + "assets/policies.json.CMP0167": "Se quita el módulo FindBoost.", + "assets/policies.json.CMP0168": "El módulo FetchContent implementa los pasos directamente en lugar de a través de una subconstrucción.", + "assets/policies.json.CMP0169": "La llamada a FetchContent_Populate con un único argumento (el nombre de una dependencia declarada) está en desuso.", + "assets/policies.json.CMP0170": "Cuando FETCHCONTENT_FULLY_DISCONNECTED se establece en true, FetchContent_MakeAvailable y FetchContent_Populate exigir la restricción de que su directorio de origen ya debe rellenarse. El requisito siempre se ha documentado, pero no se comprobó ni se aplicó con CMake 3.29 o una versión anterior. A veces, esto provocaba errores difíciles de realizar cuando un proyecto esperaba que se rellenara una dependencia, pero su rellenado se omitía de forma silenciosa.", + "assets/policies.json.CMP0171": "codegen es un nombre de destino reservado.", + "assets/policies.json.CMP0172": "El módulo CPack habilita la instalación por máquina de manera predeterminada en el generador WIX de CPack.", + "assets/policies.json.CMP0173": "Se quita el módulo CMakeFindFrameworks.", + "assets/policies.json.CMP0174": "cmake_parse_arguments define una variable para una cadena vacía después de una palabra clave de valor único.", + "assets/policies.json.CMP0175": "add_custom_command rejects invalid arguments.", + "assets/policies.json.CMP0176": "execute_process ENCODING es UTF-8 de forma predeterminada.", + "assets/policies.json.CMP0177": "las rutas DESTINATION de instalación se normalizan.", + "assets/policies.json.CMP0178": "Las líneas de comandos de prueba conservan argumentos vacíos.", + "assets/policies.json.CMP0179": "La desduplicación de bibliotecas estáticas en las líneas de vínculo mantiene la primera aparición. Esta directiva solo es relevante cuando la directiva CMP0156 está establecida en NEW.", + "assets/policies.json.CMP0180": "project siempre establece _* como variables normales.", + "assets/policies.json.CMP0181": "Las variables CMAKE_EXE_LINKER_FLAGS, CMAKE_EXE_LINKER_FLAGS_, CMAKE_SHARED_LINKER_FLAGS, CMAKE_SHARED_LINKER_FLAGS_, CMAKE_MODULE_LINKER_FLAGS y CMAKE_MODULE_LINKER_FLAGS_ se analizan, vuelven a citar y admiten el prefijo LINKER:.", + "assets/policies.json.CMP0182": "Cree archivos de biblioteca compartida de forma predeterminada en AIX.", + "assets/policies.json.CMP0183": "add_feature_info admite la sintaxis de condición completa.", + "assets/policies.json.CMP0184": "Las marcas de comprobaciones en tiempo de ejecución de MSVC se seleccionan mediante una abstracción.", + "assets/policies.json.CMP0185": "FindRuby ya no proporciona variables RUBY_* en mayúsculas.", + "assets/policies.json.CMP0186": "Las expresiones regulares coinciden con ^ como máximo una vez en búsquedas repetidas.", + "assets/policies.json.CMP0187": "Incluya el archivo de código fuente sin una extensión después del mismo nombre con una extensión.", + "assets/policies.json.CMP0188": "Se quita el módulo FindGCCXML.", + "assets/policies.json.CMP0189": "TARGET_PROPERTY evalúa LINK_LIBRARIES propiedades de forma transitiva.", + "assets/policies.json.CMP0190": "Los módulos FindPython3, FindPython2 y FindPython aplican la coherencia de los artefactos en modo de compilación cruzada.", + "assets/policies.json.CMP0191": "Se quita el módulo FindCABLE.", + "assets/policies.json.CMP0192": "GNUInstallDirs usa SYSCONFDIR, LOCALSTATEDIR y RUNSTATEDIR absolutos en prefijos especiales.", + "assets/policies.json.CMP0193": "GNUInstallDirs almacena en caché CMAKE_INSTALL_* con usr/ inicial para el prefijo de instalación /.", + "assets/policies.json.CMP0194": "MSVC no es un ensamblador para el lenguaje ASM.", + "assets/policies.json.CMP0195": "Los módulos swift de los árboles de compilación usan la estructura de directorios del módulo Swift.", + "assets/policies.json.CMP0196": "Se quita el módulo CMakeDetermineVSServicePack.", + "assets/policies.json.CMP0197": "La marca MSVC link -machine: no está en CMAKE_*_LINKER_FLAGS.", + "assets/policies.json.CMP0198": "CMAKE_PARENT_LIST_FILE no está definido en CMakeLists.txt.", + "assets/policies.json.CMP0199": ":genx:`$` no coincide con las configuraciones asignadas que no están seleccionadas.", + "assets/policies.json.CMP0200": "La selección de ubicación y configuración para destinos importados es más coherente.", + "assets/policies.json.CMP0201": "Python::NumPy no depende de Python::D evelopment.Module.", + "assets/policies.json.CMP0202": "Los nombres de archivo PDB siempre incluyen POSTFIX por configuración de su destino.", + "assets/policies.json.CMP0203": "_WINDLL se define para las bibliotecas compartidas destinadas a la ABI de MSVC.", + "assets/policies.json.CMP0204": "Siempre se define un juego de caracteres cuando el destino es la ABI de MSVC." +} \ No newline at end of file diff --git a/i18n/esn/package.i18n.json b/i18n/esn/package.i18n.json index 40829d3370..ed1c56da22 100644 --- a/i18n/esn/package.i18n.json +++ b/i18n/esn/package.i18n.json @@ -4,6 +4,8 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "cmake-tools.command.cmake.addFileToCMakeLists.title": "Add File to CMake Lists", + "cmake-tools.command.cmake.removeFileFromCMakeLists.title": "Remove File from CMake Lists", "cmake-tools.command.cmake.openCMakePresets.title": "Apertura de CMakePresets.json", "cmake-tools.command.cmake.addConfigurePreset.title": "Agregar Configurar valores predeterminados", "cmake-tools.command.cmake.addBuildPreset.title": "Agregación de valor preestablecido de compilación", @@ -46,6 +48,9 @@ "cmake-tools.command.cmake.cleanConfigureWithDebugger.title": "Eliminación de caché y reconfiguración con el depurador de CMake", "cmake-tools.command.cmake.cleanConfigureAll.title": "Eliminar la memoria caché y reconfigurar todos los proyectos", "cmake-tools.command.cmake.cleanConfigureAllWithDebugger.title": "Eliminar caché y volver a configurar todos los proyectos con el depurador de CMake", + "cmake-tools.command.cmake.fullCleanConfigure.title": "Eliminar directorio de compilación y volver a configurar", + "cmake-tools.command.cmake.fullCleanConfigureAll.title": "Eliminar directorio de compilación y volver a configurar todos los proyectos", + "cmake-tools.command.cmake.outline.fullCleanConfigureAll.title": "Limpieza completa y reconfiguración de todos los proyectos", "cmake-tools.command.cmake.editCacheUI.title": "Editar la memoria caché de CMake (UI)", "cmake-tools.command.cmake.outline.cleanConfigure.title": "Limpiar reconfiguración", "cmake-tools.command.cmake.outline.cleanConfigureWithDebugger.title": "Limpiar reconfiguración con el depurador de CMake", @@ -58,6 +63,9 @@ "cmake-tools.command.cmake.cleanConfigureAndBuild.title": "Eliminar caché, volver a configurar y compilar", "cmake-tools.command.cmake.cleanConfigureAndBuildAll.title": "Eliminar caché, volver a configurar y compilar todos los proyectos", "cmake-tools.command.cmake.outline.cleanConfigureAndBuildAll.title": "Limpiar reconfiguración y compilar todos los proyectos", + "cmake-tools.command.cmake.fullCleanConfigureAndBuild.title": "Eliminar directorio de compilación, volver a configurar y compilar", + "cmake-tools.command.cmake.fullCleanConfigureAndBuildAll.title": "Eliminar directorio de compilación, volver a configurar y compilar todos los proyectos", + "cmake-tools.command.cmake.outline.fullCleanConfigureAndBuildAll.title": "Limpieza completa y reconfiguración de todos los proyectos", "cmake-tools.command.cmake.ctest.title": "Ejecutar pruebas", "cmake-tools.command.cmake.ctestAll.title": "Ejecutar pruebas para todos los proyectos", "cmake-tools.command.cmake.cpack.title": "Ejecutar CPack", @@ -74,6 +82,7 @@ "cmake-tools.command.cmake.launchTarget.title": "Ejecutar sin depuración", "cmake-tools.command.cmake.launchTargetAll.title": "Ejecutar todos los proyectos sin depuración", "cmake-tools.command.cmake.selectLaunchTarget.title": "Establecer destino de inicio/depuración", + "cmake-tools.command.cmake.selectBuildAndLaunchTarget.title": "Establecer destino de compilación e inicio/depuración", "cmake-tools.command.cmake.stop.title": "Cancelar compilación", "cmake-tools.command.cmake.stopAll.title": "Cancelar la compilación de todos los proyectos", "cmake-tools.command.cmake.resetState.title": "Restablecer el estado de la extensión CMake Tools (para solucionar problemas)", @@ -105,6 +114,7 @@ "cmake-tools.configuration.cmake.generator.description": "El generador de CMake que se va a usar.", "cmake-tools.configuration.cmake.toolset.description": "El conjunto de herramientas de CMake que se va a usar al configurar.", "cmake-tools.configuration.cmake.platform.description": "La plataforma CMake que se va a usar al configurar.", + "cmake-tools.configuration.cmake.shell.description": "Ruta de acceso a un archivo ejecutable de shell que se va a usar al ejecutar comandos de CMake, CTest y CPack (por ejemplo, Git Bash o MSYS2). Cuando se establece, todas las invocaciones de subproceso se enrutan a través de este shell. Útil para cadenas de herramientas incrustadas que requieren traducción de rutas POSIX. Cuando es NULL, se usa el comportamiento predeterminado del shell del sistema.", "cmake-tools.configuration.cmake.configureArgs.description": "Argumentos adicionales que se pasan a CMake al configurar. Al usar valores preestablecidos de CMake, estos argumentos se anexan temporalmente a los argumentos proporcionados por el valor preestablecido de configuración activo.", "cmake-tools.configuration.cmake.buildArgs.description": "Argumentos adicionales que se pasan a CMake al compilar. Al usar valores preestablecidos de CMake, estos argumentos se anexan temporalmente a los argumentos proporcionados por el valor preestablecido de compilación activo.", "cmake-tools.configuration.cmake.buildToolArgs.description": "Argumentos adicionales que se pasan a la herramienta de compilación subyacente al compilar. Al usar valores preestablecidos de CMake, estos argumentos se anexan temporalmente a los argumentos proporcionados por el valor preestablecido de compilación activo para invocar a la herramienta de compilación.", @@ -112,7 +122,7 @@ "cmake-tools.configuration.cmake.ctestPath.description": "Ruta de acceso al ejecutable de CTest. Si es NULL, se inferirá de cmake.cmakePath (se recomienda dejar NULL).", "cmake-tools.configuration.cmake.cpackPath.description": "Ruta de acceso al ejecutable de CPack. Si es NULL, se inferirá de cmake.cmakePath (se recomienda dejar NULL). Se omitirá cuando se usen kits en lugar de valores preestablecidos.", "cmake-tools.configuration.cmake.ctest.parallelJobs.markdownDescription": "Número de trabajos de prueba paralelos. Use cero para usar el valor de `#cmake.parallelJobs#`. Esto solo se aplica cuando `#cmake.ctest.allowParallelJobs#` está establecido en `true`.", - "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "Permite que las pruebas ctest se ejecuten en paralelo, aunque la salida del resultado puede ser confusa y el Explorador de pruebas puede no reflejar con precisión el progreso de la prueba.", + "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "Permite que las pruebas ctests se ejecuten en paralelo, aunque la salida del resultado puede ser confusa y el Explorador de pruebas puede no reflejar con precisión el progreso de la prueba. Cuando se deshabilita, las pruebas se ejecutan secuencialmente en orden alfabético, coincidiendo con el orden de visualización del Explorador de pruebas.", "cmake-tools.configuration.cmake.ctest.testExplorerIntegrationEnabled.description": "Si está habilitada o no la integración con el explorador de pruebas. Esto resulta útil para deshabilitarlo si prefiere usar una extensión diferente para la integración de prueba.", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiter.markdownDescription": "Delimitador opcional que se usa para separar jerárquicamente los nombres de los conjuntos de pruebas y las pruebas de grupo en el Explorador de pruebas. Esta cadena se usa en una expresión regular, por lo que puede necesitar que se escapen algunos delimitadores. Ejemplos: `-` (un delimitador: `-`), `\\.|::` (dos delimitadores: `.` o `::`. Tenga en cuenta que debe escapar `.`).", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiterMaxOccurrence.markdownDescription": "Número máximo de veces que se puede usar el delimitador para dividir el nombre de la prueba. `0` significa que no hay límite.", @@ -124,9 +134,21 @@ "cmake-tools.configuration.cmake.ctest.failurePatterns.actual": "El índice del grupo de coincidencias de la salida real de la prueba. El valor predeterminado es indefinido.", "cmake-tools.configuration.cmake.ctest.failurePatterns.expected": "El índice del grupo de coincidencias del resultado esperado de la prueba. El valor predeterminado es indefinido.", "cmake-tools.configuration.cmake.ctest.debugLaunchTarget.description": "Nombre de destino de launch.json que se va a iniciar al depurar una prueba con CTest. De manera predeterminada y en el caso de un destino no existente, se mostrará un selector con todos los destinos disponibles.", + "cmake-tools.configuration.cmake.ctest.neverDebugTestsWithLaunchConfiguration.description": "Cuando se establece en true, siempre depura las pruebas sin una configuración de inicio, omitiendo el menú de selección rápida. El valor predeterminado es false.", "cmake-tools.configuration.cmake.parseBuildDiagnostics.description": "Analiza la salida del compilador para encontrar advertencias y errores.", "cmake-tools.configuration.cmake.enabledOutputParsers.description": "Analizadores de salida que se van a usar. Se admiten los analizadores `cmake`, `gcc`, `gnuld` para la salida del enlazador de estilo GNULD, `msvc` para Microsoft Visual C++, `ghs` para el compilador Green Hills con --no_wrap_diagnostics --brief_diagnostics, `diab` para el compilador Wind River Diab e `iwyu` para los diagnósticos include-what-you-use.", - "cmake-tools.configuration.cmake.debugConfig.description": "Configuración de depuración que se va a usar al depurar un destino.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.markdownDescription": "Buscadores de coincidencias de problemas adicionales para la salida de compilación. Use esta opción para mostrar los diagnósticos de herramientas como clang-tidy, PCLint Plus, cppcheck o scripts personalizados integrados a través de `add_custom_command`/`add_custom_target` en CMake.\n\nCada entrada define un `name` (que se usa como etiqueta de origen de diagnóstico), un `regexp` y los índices de grupo de captura para `file`, `line`, `column`, `severity`, `message` y `code`.\n\nPor ejemplo, para hacer coincidir la salida de clang-tidy como `/path/file.cpp:10:5: warning: some message [check-name]`:\n```json\n[\n {\n \"name\": \"clang-tidy\",\n \"regexp\": \"^(.+?):(\\\\d+):(\\\\d+):\\\\s+(warning|error|note):\\\\s+(.+?)\\\\s*(?:\\\\[(.+)\\\\])?$\",\n \"file\": 1,\n \"line\": 2,\n \"column\": 3,\n \"severity\": 4,\n \"message\": 5,\n \"code\": 6\n }\n]\n```\n\nLos buscadores de coincidencias personalizados ejecutan **después** de los analizadores integrados (`gcc`, `msvc`, etc.) para no robar líneas de compiladores integrados.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.name": "Un nombre único para este buscador de coincidencias, que se usa como etiqueta de origen de diagnóstico en el panel Problemas.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.regexp": "Expresión regular que se va a comparar con cada línea de salida de compilación.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.file": "Índice del grupo de capturas para la ruta de acceso del archivo. El valor predeterminado es `1`.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.line": "Índice del grupo de capturas para el número de línea. El valor predeterminado es `2`.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.column": "Índice del grupo de capturas para el número de columna. Opcional.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.group": "Índice del grupo de captura para la gravedad (debe capturar \"error\", \"warning\" o \"info\").", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.fixed": "Gravedad fija que se va a aplicar a todas las coincidencias de este patrón.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.message": "Índice del grupo de capturas para el mensaje de diagnóstico. El valor predeterminado es `3`.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.code": "Índice del grupo de capturas para un código de diagnóstico opcional.", + "cmake-tools.configuration.cmake.debugConfig.description": "Configuración de depuración que se va a usar al depurar un destino. Cuando se especifica `type`, se omite la configuración del depurador detectado automáticamente y solo se genera una configuración base mínima (program, cwd, name) desde el destino. Todas las demás propiedades se aplican desde esta configuración, lo que permite el control total sobre la configuración de inicio de depuración para cualquier adaptador de depuración.", + "cmake-tools.configuration.cmake.debugConfig.type.description": "Tipo de adaptador de depuración que se va a usar (por ejemplo, `cppdbg`, `cppvsdbg`, `lldb`, `codelldb`). Cuando se establece, omite la detección automática del depurador de la caché de CMake y usa este tipo directamente. Cualquier propiedad adicional requerida por el adaptador de depuración se puede agregar a `#cmake.debugConfig#`.", "cmake-tools.configuration.cmake.debugConfig.symbolSearchPath.description": "Rutas de acceso de búsqueda de símbolos del depurador de Visual Studio.", "cmake-tools.configuration.cmake.debugConfig.additionalSOLibSearchPath.description": "Rutas de acceso para GDB o LLDB para buscar archivos .so.", "cmake-tools.configuration.cmake.debugConfig.externalConsole.description": "Inicia una consola externa para el programa.", @@ -226,11 +248,13 @@ "cmake-tools.configuration.cmake.automaticReconfigure.description": "Configurar automáticamente los directorios del proyecto de CMake cuando se cambie el kit o el valor preestablecido de configuración.", "cmake-tools.configuration.cmake.pinnedCommands.description": "Lista de comandos de CMake para anclar siempre de forma predeterminada. Aparecerán en la sección \"Comandos anclados\" de la barra lateral de CMake Tools.", "cmake-tools.configuration.cmake.enableAutomaticKitScan.description": "Habilitar el examen automático de kits cuando no se selecciona un kit. Esto solo tendrá efecto cuando no se usen valores preestablecidos de CMake.", + "cmake-tools.configuration.cmake.removeStaleKitsOnScan.description": "Remove compiler-based kits from the user kits file during a full kit scan when they are no longer rediscovered. Set \"keep\": true in a kit entry to preserve it.", "cmake-tools.configuration.cmake.enableLanguageServices.description": "Habilite los servicios de lenguaje para los archivos de CMake. Esto activará el resaltado de sintaxis, la finalización de código y otras funciones.", "cmake-tools.configuration.cmake.preRunCoverageTarget.description": "Destino para compilar antes de ejecutar pruebas con cobertura mediante el explorador de pruebas", "cmake-tools.configuration.cmake.postRunCoverageTarget.description": "Destino para compilar después de ejecutar pruebas con cobertura mediante el explorador de pruebas", "cmake-tools.configuration.cmake.coverageInfoFiles.description": "Archivos de información de cobertura de LCOV que se van a procesar después de ejecutar pruebas con cobertura mediante el explorador de pruebas.", "cmake-tools.configuration.cmake.useFolderPropertyInBuildTargetDropdown.description": "Controla si el desplegable de destino de compilación predeterminado se agrupa por los grupos de carpetas de CMake.", + "cmake-tools.configuration.cmake.setBuildTargetSameAsLaunchTarget.description": "Cuando se habilita, al establecer el destino de inicio/depuración se establece automáticamente el destino de compilación para que coincida. El destino de compilación se puede cambiar de forma independiente.", "cmake-tools.debugger.pipeName.description": "Nombre de la canalización (en Windows) o socket de dominio (en Unix) que se va a usar para la comunicación del depurador.", "cmake-tools.debugger.clean.description": "Limpiar antes de la configuración.", "cmake-tools.debugger.configureAll.description": "Configurar para todos los proyectos.", @@ -262,6 +286,7 @@ "cmake-tools.configuration.cmake.launchBehavior.breakAndReuseTerminal.markdownDescriptions": "La instancia de terminal de inicio se reutiliza y se envía un comando `break` para finalizar cualquier proceso en primer plano activo antes de iniciar el destino.", "cmake-tools.configuration.cmake.launchBehavior.newTerminal.markdownDescriptions": "Se ha creado una nueva instancia de terminal y se ha iniciado el destino en ella. Los terminales existentes no se limpian automáticamente.", "cmake-tools.configuration.cmake.loadCompileCommands.description": "Controla si la extensión lee compile_commands.json para habilitar la compilación de un solo archivo.", + "cmake-tools.configuration.cmake.outlineViewType.description": "Project Outline View`s type. Available options are: \"list\" and \"tree\".", "cmake-tools.command.cmake.projectStatus.update.title": "Actualizar el estado del proyecto", "cmake-tools.command.cmake.pinnedCommands.add.title": "Agregar un comando de CMake para anclar", "cmake-tools.command.cmake.pinnedCommands.remove.title": "Desanclar Comando", @@ -272,5 +297,33 @@ "cmake-tools.debugger.label": "Depurador de CMake", "cmake-tools.command.cmake.appendBuildDirectoryToWorkspace.title": "Anexar el directorio de compilación al área de trabajo actual", "cmake-tools.command.workbench.action.tasks.configureTaskRunner.title": "Configurar tarea", - "cmake-tools.command.workbench.action.tasks.runTask.title": "Ejecutar tarea" + "cmake-tools.command.workbench.action.tasks.runTask.title": "Ejecutar tarea", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.description": "Add source files to CMake lists when they are created.", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.no.description": "Do not automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.yes.description": "Automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.description": "Remove source files from CMake lists when they are deleted.", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.no.description": "Do not automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.yes.description": "Automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.markdownDescription": "How to choose which `set()` or `list(APPEND/PREPEND/INSERT)` command invocation to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.never.description": "Do not look for variable modification command invocations, only look for source command invocations.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askFirstParentDir.description": "Present a Quick Pick with options from the first `CMakeLists.txt` found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askParentDirs.description": "Present a Quick Pick with options from all `CMakeLists.txt` files found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.sourceVariables.markdownDescription": "Variables to add source files to. Variables appearing earlier in this list will be given higher priority. Only used if `#cmake.modifyLists.variableSelection#` is not `never`. Supports glob patterns.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.description": "How to choose which target to add new source files to when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askNearestSourceDir.description": "Present a Quick Pick with targets whose source directories are closest to location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askParentSourceDirs.description": "Present a Quick Pick with targets whose source directories contain the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.description": "How to choose which of a target's source command invocations to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askFirstParentDir.description": "Present a Quick Pick with options from the CMake list file in the parent directory closest to the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askParentDirs.description": "Present a Quick Pick with options from all CMake list files in the parent directories of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSourceCommands.markdownDescription": "Commands to treat as target source commands when adding source files CMake lists. Commands appearing earlier in this list will be given higher priority. Supports glob patterns.\r\n\r\nIf you are using the File API (see `#cmake.cmakeCommunicationMode#`), user-defined functions and macros which call the commands in this list are detected automatically and added to it.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.description": "How to choose which of a target's visibility scopes, file sets, or source keyword parameters to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.ask.description": "Present a Quick Pick with options from the selected target source command invocation.", + "cmake-tools.configuration.cmake.modifyLists.sourceListKeywords.markdownDescription": "Keyword arguments to user-defined functions and macros which introduce lists of source files. If left empty, all arguments consisting of only upper-case letters and underscores will be considered. Supports glob patterns.", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier" } \ No newline at end of file diff --git a/i18n/esn/schemas/kits-schema.json.i18n.json b/i18n/esn/schemas/kits-schema.json.i18n.json index aac3db99e7..a7c76c15ea 100644 --- a/i18n/esn/schemas/kits-schema.json.i18n.json +++ b/i18n/esn/schemas/kits-schema.json.i18n.json @@ -17,9 +17,11 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Ruta de acceso a un archivo de cadena de herramientas", "schemas/kits-schema.json.items.properties.visualStudio": "Id. de instancia del producto de Visual Studio", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Arquitectura de destino", + "schemas/kits-schema.json.items.properties.visualStudioArguments": "Arguments to vcvarsall.bat", "schemas/kits-schema.json.items.properties.environmentSetupScript": "Ruta de acceso absoluta a un script que modifica el entorno del kit", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Valor de la variable de entorno", - "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Valor para la configuración de CMake", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.0": "Valor de la configuración de CMake. Los signos de punto y coma de las cadenas se convierten en caracteres de escape.", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.1": "Valores combinados con punto y coma para formar una lista de CMake sin escape.", "schemas/kits-schema.json.items.properties.preferredGenerator": "Establecer un generador de CMake preferido para el kit", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.name": "Nombre del generador que se va a usar", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.platform": "Plataforma de CMake para el argumento -A", diff --git a/i18n/esn/src/cmakeListsModifier.i18n.json b/i18n/esn/src/cmakeListsModifier.i18n.json new file mode 100644 index 0000000000..a3c9d1d6a2 --- /dev/null +++ b/i18n/esn/src/cmakeListsModifier.i18n.json @@ -0,0 +1,51 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "add.newly.created.files": "Add newly created files to CMakeLists.txt", + "error.processing.add.files": "Error processing added files", + "remove.deleted.file": "Remove a deleted file from CMakeLists.txt", + "error.processing.delete.files": "Error processing deleted files", + "add.file.no.code.model": "Adding a file without a valid code model", + "file.already.in.target": "{0} already in target {1}.", + "no.targets.found": "No targets found. {0} not added to build system.", + "no.source.command.invocations": "No source command invocations found. {0} not added to build system.", + "delete.file.no.code.model": "Deleting a file without a valid code model", + "not.modifying.unsaved.delete": "Not modifying {0} to delete {1} because it has unsaved changes.", + "add.to.which.variable": "CMake: Add {0} to which variable?", + "add.to.which.target": "CMake: Add {0} to which target?", + "add.to.which.invocation": "CMake: Add {0} to which command invocation of {1}?", + "add.to.which.scope.fileset.keyword": "CMake: Add {0} to which Scope, File Set, or Keyword?", + "open.file": "Open File", + "not.modifying.unsaved.files": "Cannot modify {0} because it has unsaved changes.", + "skipping.unsaved.files": "Skipping {0} file(s) with unsaved changes: {1}", + "edit.label.remove.source.file": "CMake: Remove deleted source file", + "edit.label.add.source.file": "CMake: Add new source file", + "edits.applied.successfully": "Successfully applied {0} CMake list edit(s).", + "edits.apply.failed": "Failed to apply CMake list edits: {0}", + "not.local.file.add": "{0} is not a local file. Not adding to CMake lists.", + "no.candidates.found": "No suitable locations found to add {0}.", + "not.modifying.unsaved.add": "Not modifying {0} to add {1} because it has unsaved changes.", + "not.local.file.remove": "{0} is not a local file. Not removing from CMake lists.", + "could.not.open.file": "Could not open file {0}: {1}", + "file.not.found.in.cmake.lists": "{0} not found in CMake lists.", + "file.already.in.destination": "{0} already in {1} at {2}:{3}", + "parse.error.examining.cmake.lists": "Parse error while examining CMakeLists.txt files. Details: {0}", + "could.not.open.cmake.lists": "Could not open {0}: {1}", + "parse.error.finding.invocations": "Parse error while finding command invocations to add to. CMake file modified since last configure? Details: {0}", + "unexpected.command.found": "Found \"{0}\", expected \"{1}\". CMake file modified since last configure? Details: {2}:{3}", + "scope.private.detail": "{0} will be used to build {1}", + "scope.public.detail": "{0} will be used to build both {1} and targets that use {1}", + "scope.interface.detail": "{0} will be used to build targets that use {1}", + "fileset.headers.detail": "{0} will be used via a language's #include mechanism", + "fileset.cxx.modules.detail": "{0} contains C++ interface module or partition units.", + "label.fileset": "{0} File Set", + "label.scope": "{0} Scope", + "fileset.type": "Type: {0}", + "scope.with.fileset.detail": "{0} Scope: {1}", + "keyword.of.command": "Keyword of {0} command", + "command.label": "{0} Command", + "add.to.command.arguments": "Add {0} to the list of arguments to {1} command" +} \ No newline at end of file diff --git a/i18n/esn/src/cmakeProject.i18n.json b/i18n/esn/src/cmakeProject.i18n.json index fdbe8eb456..ccc17fc49b 100644 --- a/i18n/esn/src/cmakeProject.i18n.json +++ b/i18n/esn/src/cmakeProject.i18n.json @@ -9,6 +9,7 @@ "generator.changed.restart.driver": "Reiniciando el controlador de CMake después de un cambio de generador.", "preferredGenerator.changed.restart.driver": "Reiniciando el controlador de CMake después de un cambio de preferredGenerators.", "bad.executable": "Ejecutable de CMake incorrecto: {0}. Compruebe que está instalado o que el valor de la configuración de {1} contiene la ruta de acceso correcta", + "shell.changed.restart.driver": "Reiniciando el controlador de CMake después de un cambio de shell.", "targests.in.preset": "[Destinos predeterminados]", "constructing.cmakeproject": "Creación de una instancia de CMakeProject", "disposing.driver": "Eliminando el controlador de CMake", @@ -142,9 +143,9 @@ "configure.now.button": "Configurar ahora", "cache.load.failed": "No se ha encontrado ningún archivo CMakeCache.txt. Configure el proyecto primero.", "set.up.before.selecting.target": "Configure el proyecto de CMake antes de seleccionar un destino.", - "select.active.target.tooltip": "Seleccionar el destino de compilación predeterminado", "enter.target.name": "Escribir un nombre de destino", "target.to.build.description": "Destino para compilar", + "select.active.target.tooltip": "Seleccionar el destino de compilación predeterminado", "build.failed": "Error de compilación.", "driver.died.after.build.succeeded": "El controlador de CMake finalizó de forma inmediata después de que la compilación se realizara correctamente.", "driver.died.before.workflow": "El controlador de CMake se ha interrumpido antes de iniciar el flujo de trabajo.", @@ -167,6 +168,7 @@ "target.debugging.unsupported": "La depuración de destino ya no se admite con el controlador heredado.", "learn.more.button": "Más información", "failed.to.prepare.target": "No se pudo preparar el destino ejecutable con el nombre {0}.", + "debug.configuration.from.settings": "Configuración de depuración a partir de la configuración de usuario: {0}", "debug.configuration.from.cache": "Configuración de depuración de la memoria caché: {0}", "problem.getting.debug": "Problema al obtener la configuración de depuración de la memoria caché.", "starting.debugger.with": "Iniciando el depurador con la configuración siguiente.", diff --git a/i18n/esn/src/ctest.i18n.json b/i18n/esn/src/ctest.i18n.json index 0eb238870e..b6e6b2fba0 100644 --- a/i18n/esn/src/ctest.i18n.json +++ b/i18n/esn/src/ctest.i18n.json @@ -27,6 +27,13 @@ "test.buildingPostRunCoverageTarget": "Compilar postRunCoverageTarget ''{0}'' para el proyecto {1} después de que las pruebas se hayan ejecutado con cobertura.", "test.postRunCoverageTargetFailure": "Error al compilar el destino postRunCoverageTarget en el proyecto. {0} Omitiendo el control de los datos de cobertura.", "test.skip.run.build.failure": "No se ejecutan pruebas debido a una falla en la compilación.", + "debug.without.launch.config": "Depuración sin configuración de inicio", + "choose.debug.method": "Elija cómo depurar la prueba.", + "yes": "Sí", + "no": "No", + "never.debug.with.launch.prompt": "¿Desea depurar siempre las pruebas sin una configuración de inicio en esta área de trabajo?", + "no.launch.config": "No se encontraron configuraciones de inicio.", + "choose.launch.config": "Elija una configuración de inicio con la que depurar la prueba.", "test.skip.debug.build.failure": "No se ejecutan pruebas de depuración debido a una falla en la compilación.", "build.failed": "Error de compilación", "run.tests.profile": "Ejecutar pruebas", diff --git a/i18n/esn/src/drivers/cmakeDriver.i18n.json b/i18n/esn/src/drivers/cmakeDriver.i18n.json index c804ff23b1..f822c79b5b 100644 --- a/i18n/esn/src/drivers/cmakeDriver.i18n.json +++ b/i18n/esn/src/drivers/cmakeDriver.i18n.json @@ -5,13 +5,14 @@ // Do not edit this file. It is machine generated. { "no.usable.generator.found": "No se encontró ningún generador que se pueda usar.", - "user.closed.file.compilation.terminal": "El usuario cerró un terminal de compilación de archivos.", "disposing.base.cmakedriver": "Desechando el elemento CMakeDriver base", "async.disposing.cmake.driver": "Eliminación asincrónica del controlador de CMake", "test.with.overrides": "NOTA: está probando con el valor preestablecido {0}, pero se están aplicando algunas invalidaciones de la configuración de VS Code.", "package.with.overrides": "NOTA: Va a empaquetar con {0}preestablecidos, pero hay algunas invalidaciones que se aplican desde la configuración de VS Code.", "compile.with.overrides": "NOTA: está compilando con el valor preestablecido {0}, pero se están aplicando algunas invalidaciones de la configuración de VS Code.", "file.compilation": "Compilación de archivos", + "compile.finished.with.error": "La compilación finalizó con errores.", + "compile.finished.successfully": "La compilación finalizó correctamente.", "removing": "Quitando {0}", "unlink.failed": "No se pudo quitar el archivo caché {0}", "switching.to.config.preset": "Cambiando a configuración predeterminada: {0}", diff --git a/i18n/esn/src/extension.i18n.json b/i18n/esn/src/extension.i18n.json index 299a39a000..7a5b183c72 100644 --- a/i18n/esn/src/extension.i18n.json +++ b/i18n/esn/src/extension.i18n.json @@ -11,10 +11,11 @@ "configure.now.button": "Configurar ahora", "configure.recommended": "Se recomienda volver a configurar después de actualizar a una nueva definición de los kits.", "using.cache.to.configure.workspace.on.open": "Intentando usar la memoria caché para configurar el área de trabajo {0}", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier", + "failed.to.open.cache.file.on.code.model.update": "Failed to open CMake cache file on code model update", "update.code.model.for.cpptools": "Actualizar el modelo de código para cpptools", "update.intellisense.disabled": "No se está actualizando el proveedor de configuración porque {0} está establecido en {1}", "failed.to.get.cpptools.api": "No se pudo obtener la API cppTools", - "filed.to.open.cache.file.on.code.model.update": "No se pudo abrir el archivo caché de CMake en la actualización del modelo de código.", "opening.text.editor.for": "Abriendo el editor de texto para {0}", "no.kits.file.what.to.do": "No hay ningún archivo de kits presente. ¿Qué quiere hacer?", "scan.for.kits.button": "Buscar para kits", @@ -49,6 +50,7 @@ "cmake.finished.returned.unserializable": "Finalizó {0} (se devolvió un valor no serializable)", "loading.extension.commands": "Cargando los comandos de la extensión", "register.command": "Registrar el comando de la extensión CMakeTools {0}", + "bookmark.target.not.resolved": "El marcador \"{0}\" no se pudo resolver en un destino. Es posible que sea necesario volver a configurar el proyecto.", "search.project.outline": "Escriba un término de búsqueda para filtrar el esquema del proyecto", "added.to": "agregado a", "removed.from": "quitado de", diff --git a/i18n/esn/src/proc.i18n.json b/i18n/esn/src/proc.i18n.json index 52ea720cf8..f7f4c60c5a 100644 --- a/i18n/esn/src/proc.i18n.json +++ b/i18n/esn/src/proc.i18n.json @@ -6,11 +6,11 @@ { "executing.command": "Ejecutando el comando: {0}", "execution.environment": " con el entorno: {0}", - "process.error": "El comando {0} falló con el error: {1} pila: {2}", - "process.exit.with.signal": "El comando {0} salió con el código: {1} y la señal: {2} pila: {3}", - "process.exit": "El comando {0} salió con el código: {1} pila: {2}", - "process.exit.stdout": "Salida del comando en la salida estándar: {0} pila: {1}", - "process.exit.stderr": "Salida del comando en el error estándar: {0} pila: {1}", + "process.error": "Error en el comando: {0} falló con el error: {1}", + "process.exit.with.signal": "El comando: {0} salió con el código: {1} y la señal: {2}", + "process.exit": "El comando: {0} salió con el código: {1}", + "process.exit.stdout": "Salida del comando en la salida estándar: {0}", + "process.exit.stderr": "Salida del comando en el error estándar: {0}", "processing.data.event.stdout": "Procesando el evento {0} de proc StdOut", "processing.data.event.stderr": "Procesando el evento {0} de proc stderr", "resolving.close.event": "Resolviendo el proceso en el evento {0}" diff --git a/i18n/esn/src/util.i18n.json b/i18n/esn/src/util.i18n.json index 7ae4114e02..44358cef33 100644 --- a/i18n/esn/src/util.i18n.json +++ b/i18n/esn/src/util.i18n.json @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "invalid.value": "Valor no válido para convertir en valor de cmake: {0}", "invalid.version.string": "Cadena de versión {0} no válida", "extension.is.undefined": "La extensión no está definida.", "sourcedirectory.not.a.directory": "\"sourceDirectory\" no es un directorio" diff --git a/i18n/fra/assets/policies.json.i18n.json b/i18n/fra/assets/policies.json.i18n.json new file mode 100644 index 0000000000..cf175296ae --- /dev/null +++ b/i18n/fra/assets/policies.json.i18n.json @@ -0,0 +1,212 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "assets/policies.json.CMP0000": "Une version minimale requise de CMake doit être spécifiée.", + "assets/policies.json.CMP0001": "CMAKE_BACKWARDS_COMPATIBILITY ne doit plus être utilisée.", + "assets/policies.json.CMP0002": "Les noms de cibles logiques doivent être uniques au niveau mondial.", + "assets/policies.json.CMP0003": "Les bibliothèques liées via le chemin complet ne produisent plus de chemins de recherche de l’éditeur de liens.", + "assets/policies.json.CMP0004": "Les bibliothèques liées ne doivent pas comporter d’espaces blancs en début ou en fin.", + "assets/policies.json.CMP0005": "Les valeurs de définition du préprocesseur sont désormais automatiquement échappées.", + "assets/policies.json.CMP0006": "L’installation des cibles MACOSX_BUNDLE nécessite une BUNDLE DESTINATION.", + "assets/policies.json.CMP0007": "La commande list n'ignore plus les éléments vides.", + "assets/policies.json.CMP0008": "Les bibliothèques liées par chemin complet doivent avoir un nom de fichier de bibliothèque valide.", + "assets/policies.json.CMP0009": "Les appels FILE GLOB_RECURSE ne doivent pas suivre les liens symboliques par défaut.", + "assets/policies.json.CMP0010": "Une syntaxe de référence de variable incorrecte est une erreur.", + "assets/policies.json.CMP0011": "Les scripts inclus effectuent automatiquement cmake_policy PUSH et POP.", + "assets/policies.json.CMP0012": "SI reconnaît les nombres et les constantes booléennes.", + "assets/policies.json.CMP0013": "Les répertoires binaires en double ne sont pas autorisés.", + "assets/policies.json.CMP0014": "Les répertoires d’entrée doivent contenir un fichier CMakeLists.txt.", + "assets/policies.json.CMP0015": "link_directories traite les chemins relatifs au répertoire source.", + "assets/policies.json.CMP0016": "target_link_libraries signale une erreur si son seul argument n’est pas une cible.", + "assets/policies.json.CMP0017": "Préférez les fichiers du répertoire du module CMake lors de l'inclusion à partir de celui-ci.", + "assets/policies.json.CMP0018": "Ignorez la variable CMAKE_SHARED_LIBRARY__FLAGS.", + "assets/policies.json.CMP0019": "Ne réétendez pas les variables dans les informations d’inclusion et de lien.", + "assets/policies.json.CMP0020": "Liez automatiquement les exécutables Qt à la cible qtmain sous Windows.", + "assets/policies.json.CMP0021": "Erreur irrécupérable sur les chemins relatifs dans la propriété cible INCLUDE_DIRECTORIES.", + "assets/policies.json.CMP0022": "INTERFACE_LINK_LIBRARIES définit l’interface de lien.", + "assets/policies.json.CMP0023": "Les signatures simples et par mot-clé target_link_libraries ne peuvent pas être mélangées.", + "assets/policies.json.CMP0024": "Interdisez le résultat d’exportation d'inclusion.", + "assets/policies.json.CMP0025": "L’D du compilateur pour Apple Clang est désormais AppleClang.", + "assets/policies.json.CMP0026": "Interdisez l’utilisation de la propriété LOCATION pour les cibles de compilation.", + "assets/policies.json.CMP0027": "Cibles importées liées de manière conditionnelle avec des répertoires d’inclusion manquants.", + "assets/policies.json.CMP0028": "Un double deux-points dans le nom de la cible signifie une cible ALIAS ou IMPORTED.", + "assets/policies.json.CMP0029": "La commande subdir_depends ne doit pas être appelée.", + "assets/policies.json.CMP0030": "La commande use_mangled_mesa ne doit pas être appelée.", + "assets/policies.json.CMP0031": "La commande load_command ne doit pas être appelée.", + "assets/policies.json.CMP0032": "La commande output_required_files ne doit pas être appelée.", + "assets/policies.json.CMP0033": "La commande export_library_dependencies ne doit pas être appelée.", + "assets/policies.json.CMP0034": "La commande utility_source ne doit pas être appelée.", + "assets/policies.json.CMP0035": "La commande variable_requires ne doit pas être appelée.", + "assets/policies.json.CMP0036": "La commande build_name ne doit pas être appelée.", + "assets/policies.json.CMP0037": "Les noms de cibles ne doivent pas être réservés et doivent correspondre à un modèle de validité.", + "assets/policies.json.CMP0038": "Les cibles ne peuvent pas être liées directement à elles-mêmes.", + "assets/policies.json.CMP0039": "Les cibles utilitaires ne peuvent pas avoir de dépendances de lien.", + "assets/policies.json.CMP0040": "La cible dans la signature TARGET de add_custom_command doit exister et être définie dans le répertoire actuel.", + "assets/policies.json.CMP0041": "Erreur sur l'inclusion relative avec l'expression de générateur.", + "assets/policies.json.CMP0042": "MACOSX_RPATH est activé par défaut.", + "assets/policies.json.CMP0043": "Ignorer les propriétés COMPILE_DEFINITIONS_", + "assets/policies.json.CMP0044": "Expressions du générateur _COMPILER_ID sensibles à la casse", + "assets/policies.json.CMP0045": "Erreur sur une cible inexistante dans get_target_property.", + "assets/policies.json.CMP0046": "Erreur sur une dépendance inexistante dans add_dependencies.", + "assets/policies.json.CMP0047": "Utilisez l’ID du compilateur QCC pour les pilotes qcc sur QNX.", + "assets/policies.json.CMP0048": "La commande project gère les variables VERSION.", + "assets/policies.json.CMP0049": "Ne développez pas les variables dans les entrées source cibles.", + "assets/policies.json.CMP0050": "Interdisez les signatures SOURCE add_custom_command.", + "assets/policies.json.CMP0051": "Listez TARGET_OBJECTS dans la propriété cible SOURCES.", + "assets/policies.json.CMP0052": "Rejetez les répertoires source et build dans INTERFACE_INCLUDE_DIRECTORIES installé.", + "assets/policies.json.CMP0053": "Simplifiez la référence aux variables et l’évaluation des séquences d’échappement.", + "assets/policies.json.CMP0054": "Interprétez uniquement si les arguments sont des variables ou des mots-clés lorsqu’ils ne sont pas entre guillemets.", + "assets/policies.json.CMP0055": "Vérification stricte de la commande break.", + "assets/policies.json.CMP0056": "Respectez les indicateurs de lien dans la signature du fichier source try_compile.", + "assets/policies.json.CMP0057": "Prise en charge du nouvel opérateur SI IN_LIST.", + "assets/policies.json.CMP0058": "Ninja exige que les sous-produits des commandes personnalisées soient explicites.", + "assets/policies.json.CMP0059": "Ne traitez pas DEFINITIONS comme une propriété de répertoire intégrée.", + "assets/policies.json.CMP0060": "Liez les bibliothèques par chemin complet, même dans les répertoires implicites.", + "assets/policies.json.CMP0061": "CTest n’indique pas par défaut à make d’ignorer les erreurs (-i).", + "assets/policies.json.CMP0062": "Interdire l’installation du résultat d’exportation.", + "assets/policies.json.CMP0063": "Respectez les propriétés de visibilité pour tous les types de cibles.", + "assets/policies.json.CMP0064": "Reconnaissez TEST comme un opérateur pour la commande SI.", + "assets/policies.json.CMP0065": "N’ajoutez pas de drapeaux pour exporter des symboles à partir d'exécutables sans la propriété de cible ENABLE_EXPORTS.", + "assets/policies.json.CMP0066": "Respectez les indicateurs par configuration dans la signature du fichier source try_compile.", + "assets/policies.json.CMP0067": "Respectez la norme du langage dans la signature du fichier source try_compile.", + "assets/policies.json.CMP0068": "Les paramètres RPATH sur macOS n’affectent pas install_name.", + "assets/policies.json.CMP0069": "INTERPROCEDURAL_OPTIMIZATION est appliquée lorsqu’elle est activée.", + "assets/policies.json.CMP0070": "Définissez le comportement des fichiers pour les chemins relatifs.", + "assets/policies.json.CMP0071": "Permettez à AUTOMOC et AUTOUIC de traiter les fichiers GENERATED.", + "assets/policies.json.CMP0072": "FindOpenGL préfère GLVND par défaut lorsqu’il est disponible.", + "assets/policies.json.CMP0073": "Ne produisez pas d’entrées de cache _LIB_DEPENDS héritées.", + "assets/policies.json.CMP0074": "find_package utilise les variables _ROOT.", + "assets/policies.json.CMP0075": "Les macros de vérification des fichiers inclus respectent CMAKE_REQUIRED_LIBRARIES.", + "assets/policies.json.CMP0076": "La commande target_sources convertit les chemins relatifs en chemins absolus.", + "assets/policies.json.CMP0077": "option respecte les variables normales.", + "assets/policies.json.CMP0078": "UseSWIG génère des noms de cibles standard.", + "assets/policies.json.CMP0079": "target_link_libraries permet l’utilisation avec des cibles dans d’autres répertoires.", + "assets/policies.json.CMP0080": "BundleUtilities ne peut pas être inclus au moment de la configuration.", + "assets/policies.json.CMP0081": "Les chemins relatifs ne sont pas autorisés dans la propriété cible LINK_DIRECTORIES.", + "assets/policies.json.CMP0082": "Les règles d’installation des appels add_subdirectory sont entrelacées avec celles de l’appelant.", + "assets/policies.json.CMP0083": "Pour contrôler la génération ou non d’un exécutable indépendant de la position (PIE), certains indicateurs sont exigés durant l'édition de liens.", + "assets/policies.json.CMP0084": "Le module FindQt n’existe pas pour find_package.", + "assets/policies.json.CMP0085": "$ gère les éléments vides dans les listes.", + "assets/policies.json.CMP0086": "UseSWIG respecte SWIG_MODULE_NAME via le drapeau -module.", + "assets/policies.json.CMP0087": "install et install prennent en charge les expressions de générateur.", + "assets/policies.json.CMP0088": "FindBISON exécute bison dans CMAKE_CURRENT_BINARY_DIR lors de l’exécution.", + "assets/policies.json.CMP0089": "L’ID du compilateur pour les compilateurs XL basés sur IBM Clang est désormais XLClang.", + "assets/policies.json.CMP0090": "export ne remplit pas par défaut le registre des packages.", + "assets/policies.json.CMP0091": "Les indicateurs de bibliothèque d’exécution MSVC sont sélectionnés par une abstraction.", + "assets/policies.json.CMP0092": "Les indicateurs d’avertissement MSVC ne se trouvent pas dans CMAKE__FLAGS par défaut.", + "assets/policies.json.CMP0093": "FindBoost signale Boost_VERSION au format x.y.z.", + "assets/policies.json.CMP0094": "Les modules FindPython3, FindPython2 et FindPython utilisent LOCATION pour la stratégie de recherche.", + "assets/policies.json.CMP0095": "Les entrées RPATH sont correctement échappées dans le script d’installation CMake intermédiaire.", + "assets/policies.json.CMP0096": "La commande project conserve les zéros initiaux dans les composants de version.", + "assets/policies.json.CMP0097": "ExternalProject_Add avec GIT_SUBMODULES \"\" n’initialise aucun sous-module.", + "assets/policies.json.CMP0098": "FindFLEX exécute flex dans le répertoire CMAKE_CURRENT_BINARY_DIR lors de l’exécution.", + "assets/policies.json.CMP0099": "Les propriétés des liens sont transitives sur les dépendances privées des bibliothèques statiques.", + "assets/policies.json.CMP0100": "Permettez à AUTOMOC et AUTOUIC de traiter les fichiers d’en-tête qui se terminent par l’extension .hh.", + "assets/policies.json.CMP0101": "target_compile_options respecte désormais toujours le mot-clé BEFORE.", + "assets/policies.json.CMP0102": "La commande mark_as_advanced ne crée plus d’entrée de cache si elle n’existe pas déjà.", + "assets/policies.json.CMP0103": "Les appels multiples à la commande export avec le même FILE sans APPEND ne sont plus autorisés.", + "assets/policies.json.CMP0104": "Initialisez CMAKE_CUDA_ARCHITECTURES lorsque CMAKE_CUDA_COMPILER_ID _COMPILER_ID> est NVIDIA. Déclenchez une erreur si CUDA_ARCHITECTURES est vide.", + "assets/policies.json.CMP0105": "Les propriétés cibles LINK_OPTIONS et INTERFACE_LINK_OPTIONS sont désormais utilisées pour l’étape de liaison des appareils.", + "assets/policies.json.CMP0106": "Le module Documentation est supprimé.", + "assets/policies.json.CMP0107": "Il n'est pas autorisé de créer une cible ALIAS portant le même nom qu’une autre cible.", + "assets/policies.json.CMP0108": "Une cible n'est pas autorisée à se lier à elle-même, même via une cible ALIAS.", + "assets/policies.json.CMP0109": "find_program requiert l’autorisation d’exécution mais pas celle de lecture.", + "assets/policies.json.CMP0110": "add_test prend en charge les caractères arbitraires dans les noms de test.", + "assets/policies.json.CMP0111": "Une cible importée dont la propriété d’emplacement est manquante échoue lors de la génération.", + "assets/policies.json.CMP0112": "Les expressions de générateur de composants de fichiers cibles n’ajoutent pas de dépendances cibles.", + "assets/policies.json.CMP0113": "Les générateurs Makefile ne répètent pas les commandes personnalisées des dépendances cibles.", + "assets/policies.json.CMP0114": "Les cibles d'étape ExternalProject adoptent entièrement leurs étapes.", + "assets/policies.json.CMP0115": "Les extensions des fichiers sources doivent être explicites.", + "assets/policies.json.CMP0116": "Les générateurs Ninja transforment les DEPFILE à partir de add_custom_command.", + "assets/policies.json.CMP0117": "L’indicateur RTTI MSVC /GR n’est pas ajouté par défaut à CMAKE_CXX_FLAGS _FLAGS>.", + "assets/policies.json.CMP0118": "Les sources GENERATED peuvent être utilisées dans tous les répertoires sans marquage manuel.", + "assets/policies.json.CMP0119": "La propriété du fichier source LANGUAGE compile explicitement dans le langage spécifié.", + "assets/policies.json.CMP0120": "Le module WriteCompilerDetectionHeader est supprimé.", + "assets/policies.json.CMP0121": "La commande list détecte désormais les indices non valides.", + "assets/policies.json.CMP0122": "UseSWIG utilise les conventions de nommage des bibliothèques pour le langage CSharp.", + "assets/policies.json.CMP0123": "Les indicateurs de compilation et de liaison ARMClang unité centrale/architecture doivent être définis explicitement.", + "assets/policies.json.CMP0124": "Les variables de boucle foreach ne sont disponibles que dans l'étendue de la boucle.", + "assets/policies.json.CMP0125": "Les commandes find_file, find_path, find_library et find_program mettent en cache leur résultat dans la variable spécifiée par leur premier argument. Avant CMake 3.21, si une variable de cache de ce nom existait déjà avant l’appel, mais que la variable de cache n'avait pas de type, toute variable non cache du même nom était ignorée et la variable de cache était toujours utilisée (voir également CMP0126 pour un comportement différent mais similaire). Cela contredit la convention selon laquelle une variable non cache doit avoir priorité sur une variable de cache du même nom. Une telle situation peut se produire si un utilisateur définit une variable de cache sur la ligne de commande sans spécifier de type, par exemple cmake -DMYVAR=blah ... au lieu de cmake -DMYVAR:FILEPATH=blah.", + "assets/policies.json.CMP0126": "Lorsque cette politique est définie sur NEW, la commande set ne supprime aucune variable normale du même nom de l'étendue actuelle. Le comportement OLD supprime toute variable normale du même nom de l'étendue actuelle dans les cas suivants :", + "assets/policies.json.CMP0127": "cmake_dependent_option prend en charge la syntaxe complète des conditions.", + "assets/policies.json.CMP0128": "Lorsque cette stratégie est définie sur NEW :", + "assets/policies.json.CMP0129": "L’ID du compilateur pour les compilateurs MCST LCC est désormais LCC, et non GNU.", + "assets/policies.json.CMP0130": "while diagnostique les erreurs d’évaluation des conditions.", + "assets/policies.json.CMP0131": "LINK_LIBRARIES prend en charge l’expression du générateur :genex:`$`.", + "assets/policies.json.CMP0132": "Ne définissez pas les variables d’environnement du compilateur lors de la première exécution.", + "assets/policies.json.CMP0133": "Le module CPack désactive le contrat SLA par défaut dans le générateur CPack DragNDrop.", + "assets/policies.json.CMP0134": "La vue par défaut du registre est TARGET pour les commandes find_file, find_path, find_library et find_package, et BOTH pour la commande find_program.", + "assets/policies.json.CMP0135": "Lorsque vous utilisez la méthode de téléchargement par URL avec les commandes ExternalProject_Add ou FetchContent_Declare, CMake 3.23 et les versions antérieures définissent les horodatages du contenu extrait de manière à ce qu'ils soient identiques à ceux de l’archive. Lorsque l’URL change, la nouvelle archive est téléchargée et extraite, mais les horodatages du contenu extrait peuvent ne pas être plus récents que ceux du contenu précédent. Tout ce qui dépend du contenu extrait peut ne pas être reconstruit, même si le contenu peut changer.", + "assets/policies.json.CMP0136": "Les indicateurs de bibliothèque d’exécution Watcom sont sélectionnés par une abstraction.", + "assets/policies.json.CMP0137": "try_compile transmet les variables de plateforme en mode projet.", + "assets/policies.json.CMP0138": "CheckIPOSupported utilise les indicateurs du projet appelant.", + "assets/policies.json.CMP0139": "La commande SI prend en charge les comparaisons de chemins à l'aide de l’opérateur PATH_EQUAL.", + "assets/policies.json.CMP0140": "La commande return vérifie ses paramètres.", + "assets/policies.json.CMP0141": "Les indicateurs de format d'informations de débogage MSVC sont sélectionnés par une abstraction.", + "assets/policies.json.CMP0142": "Le générateur Xcode n’ajoute pas de suffixes par configuration aux chemins de recherche des bibliothèques.", + "assets/policies.json.CMP0143": "La propriété globale USE_FOLDERS est considérée comme activée par défaut.", + "assets/policies.json.CMP0144": "find_package utilise des variables _ROOT en majuscules.", + "assets/policies.json.CMP0145": "Les modules Dart et FindDart sont supprimés.", + "assets/policies.json.CMP0146": "Le module FindCUDA est supprimé.", + "assets/policies.json.CMP0147": "Les générateurs Visual Studio génèrent des commandes personnalisées en parallèle.", + "assets/policies.json.CMP0148": "Les modules FindPythonInterp et FindPythonLibs sont supprimés.", + "assets/policies.json.CMP0149": "Les générateurs Visual Studio sélectionnent par défaut le SDK Windows le plus récent.", + "assets/policies.json.CMP0150": "Les commandes ExternalProject_Add et FetchContent_Declare traitent les chemins GIT_REPOSITORY relatifs comme étant relatifs au projet parent distant.", + "assets/policies.json.CMP0151": "Le répertoire d’inclusion AUTOMOC est un répertoire d’inclusion système par défaut.", + "assets/policies.json.CMP0152": "file résout les liens symboliques avant de réduire les composants ../.", + "assets/policies.json.CMP0153": "La commande exec_program ne doit pas être appelée.", + "assets/policies.json.CMP0154": "Les fichiers générés sont privés par défaut dans les cibles utilisant des jeux de fichiers.", + "assets/policies.json.CMP0155": "Les sources C++ dans les cibles avec au moins C++20 sont analysées pour les importations lorsqu'elles sont prises en charge.", + "assets/policies.json.CMP0156": "Dédupliquez les bibliothèques sur les lignes de lien en fonction des capacités de l’éditeur de liens.", + "assets/policies.json.CMP0157": "Le mode de compilation Swift est sélectionné par une abstraction.", + "assets/policies.json.CMP0158": "add_test respecte CMAKE_CROSSCOMPILING_EMULATOR uniquement lors de la compilation croisée.", + "assets/policies.json.CMP0159": "Le fichier avec REGEX met à jour CMAKE_MATCH_.", + "assets/policies.json.CMP0160": "Davantage de propriétés cibles en lecture seule génèrent désormais une erreur lorsqu’on tente de les définir.", + "assets/policies.json.CMP0161": "La variable CPACK_PRODUCTBUILD_DOMAINS a pour valeur par défaut true.", + "assets/policies.json.CMP0162": "Les générateurs Visual Studio ajoutent des indicateurs UseDebugLibraries par défaut.", + "assets/policies.json.CMP0163": "La propriété de fichier source GENERATED est désormais visible dans tous les répertoires.", + "assets/policies.json.CMP0164": "add_library rejette les bibliothèques SHARED lorsqu'elles ne sont prises en charge par la plateforme.", + "assets/policies.json.CMP0165": "enable_language ne doit pas être appelé avant le projet.", + "assets/policies.json.CMP0166": "TARGET_PROPERTY évalue les propriétés de lien de manière transitive sur les dépendances privées des bibliothèques statiques.", + "assets/policies.json.CMP0167": "Le module FindBoost est supprimé.", + "assets/policies.json.CMP0168": "Le module FetchContent implémente les étapes directement au lieu de passer par une sous-compilation.", + "assets/policies.json.CMP0169": "L’appel à FetchContent_Populate avec un seul argument (le nom d’une dépendance déclarée) est déconseillé.", + "assets/policies.json.CMP0170": "Lorsque FETCHCONTENT_FULLY_DISCONNECTED est défini sur true, FetchContent_MakeAvailable et FetchContent_Populate imposent la contrainte que leur répertoire source doit déjà être rempli. Cette exigence a toujours été documentée, mais elle n’était ni vérifiée ni appliquée avec CMake 3.29 ou les versions antérieures. Cela entraînait parfois des erreurs difficiles à tracer lorsqu’un projet s’attendait à ce qu’une dépendance soit remplie, mais que son remplissage était ignoré sans notification.", + "assets/policies.json.CMP0171": "codegen est un nom de cible réservé.", + "assets/policies.json.CMP0172": "Le module CPack active l’installation par machine par défaut dans le générateur CPack WIX.", + "assets/policies.json.CMP0173": "Le module CMakeFindFrameworks est supprimé.", + "assets/policies.json.CMP0174": "cmake_parse_arguments définit une variable pour une chaîne vide après un mot-clé à valeur unique.", + "assets/policies.json.CMP0175": "add_custom_command rejette les arguments invalides.", + "assets/policies.json.CMP0176": "execute_process ENCODING est UTF-8 par défaut.", + "assets/policies.json.CMP0177": "Les chemins DESTINATION d’installation sont normalisés.", + "assets/policies.json.CMP0178": "Les lignes de commande de test conservent les arguments vides.", + "assets/policies.json.CMP0179": "La déduplication des bibliothèques statiques sur les lignes de lien conserve la première occurrence. Cette politique est pertinente uniquement lorsque la politique CMP0156 est définie sur NEW.", + "assets/policies.json.CMP0180": "project définit toujours _* comme variables normales.", + "assets/policies.json.CMP0181": "Les variables CMAKE_EXE_LINKER_FLAGS, CMAKE_EXE_LINKER_FLAGS_, CMAKE_SHARED_LINKER_FLAGS, CMAKE_SHARED_LINKER_FLAGS_, CMAKE_MODULE_LINKER_FLAGS et CMAKE_MODULE_LINKER_FLAGS_ sont analysées et réaffichées et prennent en charge le préfixe LINKER:.", + "assets/policies.json.CMP0182": "Créez des archives de bibliothèques partagées par défaut sur AIX.", + "assets/policies.json.CMP0183": "add_feature_info prend en charge la syntaxe complète des conditions.", + "assets/policies.json.CMP0184": "Les indicateurs de vérification d’exécution MSVC sont sélectionnés par une abstraction.", + "assets/policies.json.CMP0185": "FindRuby ne fournit plus de variables RUBY_* en majuscules.", + "assets/policies.json.CMP0186": "Les expressions régulières correspondent à ^ au maximum une fois dans les recherches répétées.", + "assets/policies.json.CMP0187": "Incluez le fichier source sans extension après le même nom avec une extension.", + "assets/policies.json.CMP0188": "Le module FindGCCXML est supprimé.", + "assets/policies.json.CMP0189": "TARGET_PROPERTY évalue les propriétés LINK_LIBRARIES de manière transitive.", + "assets/policies.json.CMP0190": "Les modules FindPython3, FindPython2 et FindPython garantissent la cohérence des artefacts en mode de compilation croisée.", + "assets/policies.json.CMP0191": "Le module FindCABLE est supprimé.", + "assets/policies.json.CMP0192": "GNUInstallDirs utilise SYSCONFDIR, LOCALSTATEDIR et RUNSTATEDIR absolus dans des préfixes spéciaux.", + "assets/policies.json.CMP0193": "GNUInstallDirs met en cache CMAKE_INSTALL_* avec usr/ en tête pour le préfixe d'installation /.", + "assets/policies.json.CMP0194": "MSVC n’est pas un assembleur pour le langage ASM.", + "assets/policies.json.CMP0195": "Les modules Swift dans les arborescences de compilation utilisent la structure de répertoires des modules Swift.", + "assets/policies.json.CMP0196": "Le module CMakeDetermineVSServicePack est supprimé.", + "assets/policies.json.CMP0197": "L’indicateur MSVC link -machine: n’est pas dans CMAKE_*_LINKER_FLAGS.", + "assets/policies.json.CMP0198": "CMAKE_PARENT_LIST_FILE n’est pas défini dans CMakeLists.txt.", + "assets/policies.json.CMP0199": ":genex:`$` ne correspond pas aux configurations mappées qui ne sont pas sélectionnées.", + "assets/policies.json.CMP0200": "La sélection de l’emplacement et de la configuration pour les cibles importées est plus cohérente.", + "assets/policies.json.CMP0201": "Python::NumPy ne dépend pas de Python::Development.Module.", + "assets/policies.json.CMP0202": "Les noms de fichiers PDB incluent toujours le POSTFIX par configuration de leur cible.", + "assets/policies.json.CMP0203": "_WINDLL est défini pour les bibliothèques partagées ciblant l’ABI MSVC.", + "assets/policies.json.CMP0204": "Un jeu de caractères est toujours défini lorsque l’ABI MSVC est ciblé." +} \ No newline at end of file diff --git a/i18n/fra/package.i18n.json b/i18n/fra/package.i18n.json index b56e6c15ca..ec12ca24ee 100644 --- a/i18n/fra/package.i18n.json +++ b/i18n/fra/package.i18n.json @@ -4,6 +4,8 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "cmake-tools.command.cmake.addFileToCMakeLists.title": "Add File to CMake Lists", + "cmake-tools.command.cmake.removeFileFromCMakeLists.title": "Remove File from CMake Lists", "cmake-tools.command.cmake.openCMakePresets.title": "Ouvrir CMakePresets.json", "cmake-tools.command.cmake.addConfigurePreset.title": "Ajoutez Configurer la présélection", "cmake-tools.command.cmake.addBuildPreset.title": "Ajouter une présélection de génération", @@ -46,6 +48,9 @@ "cmake-tools.command.cmake.cleanConfigureWithDebugger.title": "Supprimer le cache et reconfigurer avec le débogueur CMake", "cmake-tools.command.cmake.cleanConfigureAll.title": "Supprimer le cache et la reconfiguration de tous les projets", "cmake-tools.command.cmake.cleanConfigureAllWithDebugger.title": "Supprimer le cache et reconfigurer tous les projets avec le débogueur CMake", + "cmake-tools.command.cmake.fullCleanConfigure.title": "Supprimer un répertoire de version et reconfigurer", + "cmake-tools.command.cmake.fullCleanConfigureAll.title": "Supprimer un répertoire de version et reconfigurer tous les projets", + "cmake-tools.command.cmake.outline.fullCleanConfigureAll.title": "Nettoyer et reconfigurer complètement tous les projets", "cmake-tools.command.cmake.editCacheUI.title": "Modifier le cache de CMake (IU)", "cmake-tools.command.cmake.outline.cleanConfigure.title": "Nouvelle reconfiguration", "cmake-tools.command.cmake.outline.cleanConfigureWithDebugger.title": "Nettoyer la reconfiguration avec le débogueur CMake", @@ -58,6 +63,9 @@ "cmake-tools.command.cmake.cleanConfigureAndBuild.title": "Supprimer le cache, reconfigurer et compiler", "cmake-tools.command.cmake.cleanConfigureAndBuildAll.title": "Supprimer le cache, reconfigurer et compiler tous les projets", "cmake-tools.command.cmake.outline.cleanConfigureAndBuildAll.title": "Nettoyer, reconfigurer et compiler tous les projets", + "cmake-tools.command.cmake.fullCleanConfigureAndBuild.title": "Supprimer un répertoire de version, reconfigurer et générer", + "cmake-tools.command.cmake.fullCleanConfigureAndBuildAll.title": "Supprimer un répertoire de version, reconfigurer et générer tous les projets", + "cmake-tools.command.cmake.outline.fullCleanConfigureAndBuildAll.title": "Nettoyer, reconfigurer et générer complètement tous les projets", "cmake-tools.command.cmake.ctest.title": "Exécuter les tests", "cmake-tools.command.cmake.ctestAll.title": "Exécuter les tests pour tous les projets", "cmake-tools.command.cmake.cpack.title": "Exécuter CPack", @@ -74,6 +82,7 @@ "cmake-tools.command.cmake.launchTarget.title": "Exécuter sans débogage", "cmake-tools.command.cmake.launchTargetAll.title": "Exécuter tous les projets sans débogage", "cmake-tools.command.cmake.selectLaunchTarget.title": "Définir une cible de débogage/lancement", + "cmake-tools.command.cmake.selectBuildAndLaunchTarget.title": "Définir la cible de lancement/débogage et génération", "cmake-tools.command.cmake.stop.title": "Annuler la génération", "cmake-tools.command.cmake.stopAll.title": "Annuler la génération de tous les projets", "cmake-tools.command.cmake.resetState.title": "Réinitialiser l'état de l'extension CMake Tools (pour la résolution des problèmes)", @@ -105,6 +114,7 @@ "cmake-tools.configuration.cmake.generator.description": "Générateur CMake à utiliser.", "cmake-tools.configuration.cmake.toolset.description": "Ensemble d'outils CMake à utiliser au moment de la configuration.", "cmake-tools.configuration.cmake.platform.description": "Plateforme CMake à utiliser au moment de la configuration.", + "cmake-tools.configuration.cmake.shell.description": "Chemin d’accès vers un exécutable d’interpréteur de commandes à utiliser lors de l’exécution des commandes CMake, CTest et CPack (par exemple, Git Bash ou MSYS2). Lorsqu’il est défini, toutes les invocations de sous-processus s’acheminent via cet interpréteur de commandes. Utile pour les chaînes d’outils intégrées nécessitant une traduction de chemin d’accès POSIX. Lorsqu’il est nul, le comportement par défaut de l’interpréteur de commandes système est utilisé.", "cmake-tools.configuration.cmake.configureArgs.description": "Arguments supplémentaires à passer à CMake au moment de la configuration. Quand vous utilisez des présélections CMake, ces arguments sont temporairement ajoutés aux arguments fournis par la présélection de configuration active.", "cmake-tools.configuration.cmake.buildArgs.description": "Arguments supplémentaires à passer à CMake au moment de la génération. Quand vous utilisez des présélections CMake, ces arguments sont temporairement ajoutés aux arguments fournis par la présélection de build active.", "cmake-tools.configuration.cmake.buildToolArgs.description": "Arguments supplémentaires à passer à l’outil de génération sous-jacent au moment de la génération. Quand vous utilisez des présélections CMake, ces arguments sont temporairement ajoutés aux arguments fournis par la présélection de build active pour appeler l’outil de génération.", @@ -112,7 +122,7 @@ "cmake-tools.configuration.cmake.ctestPath.description": "Chemin de l'exécutable CTest. Si la valeur est null, le chemin est déduit à partir de cmake.cmakePath (il est recommandé de laisser une valeur null).", "cmake-tools.configuration.cmake.cpackPath.description": "Chemin vers l’exécutable CPack. Si la valeur est nul, il sera déduit à partir de cmake.cmakePath (recommandé de laisser nul). Sera ignoré lorsque des kits sont utilisés au lieu de présélections.", "cmake-tools.configuration.cmake.ctest.parallelJobs.markdownDescription": "Nombre de travaux de test parallèles. Utilisez zéro pour utiliser la valeur de `#cmake.parallelJobs#`. Cela s’applique uniquement lorsque `#cmake.ctest.allowParallelJobs#` a la valeur `true`.", - "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "Permet l’exécution de ctests en parallèle, mais la sortie du résultat peut être tronquée et l’Explorateur de tests peut ne pas refléter précisément la progression du test.", + "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "Permet l’exécution de ctests en parallèle, mais la sortie du résultat peut être tronquée et l’Explorateur de tests peut ne pas refléter précisément la progression du test. Une fois désactivée, les tests s’exécutent séquentiellement dans l’ordre alphabétique, correspondant à l’ordre d’affichage dans l’Explorateur de tests.", "cmake-tools.configuration.cmake.ctest.testExplorerIntegrationEnabled.description": "Indique si l’intégration avec l’Explorateur de tests est activée. Cette option est utile pour la désactivation si vous préférez utiliser une autre extension pour l’intégration de test.", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiter.markdownDescription": "Délimiteur facultatif utilisé pour séparer les noms de suite de tests et les tests de groupe hiérarchiquement dans l’Explorateur de tests. Cette chaîne est utilisée dans une expression régulière, de sorte que certains délimiteurs peuvent nécessiter une séquence d’échappement. Exemples : `-` ( Un délimiteur : `-`), `\\.|::` (deux délimiteurs : `.` ou `::`. Notez que `.` doit être placé dans une séquence d’échappement.)", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiterMaxOccurrence.markdownDescription": "Nombre maximum de fois que le délimiteur peut être utilisé pour fractionner le nom du test. `0` signifie qu’il n’y a pas de limite.", @@ -124,9 +134,21 @@ "cmake-tools.configuration.cmake.ctest.failurePatterns.actual": "L'index du groupe de correspondance de la sortie de test réelle. La valeur par défaut est indéfinie.", "cmake-tools.configuration.cmake.ctest.failurePatterns.expected": "L'index du groupe de correspondance de la sortie de test attendue. La valeur par défaut est indéfinie.", "cmake-tools.configuration.cmake.ctest.debugLaunchTarget.description": "Nom de la cible dans launch.json à démarrer lors du débogage d’un test avec CTest. Par défaut, en cas de cible inexistante, un sélecteur s’affiche avec toutes les cibles disponibles.", + "cmake-tools.configuration.cmake.ctest.neverDebugTestsWithLaunchConfiguration.description": "Quand cette option définie sur true, déboguez toujours les tests sans configuration de lancement, en contournant le menu de sélection rapide. La valeur par défaut est false.", "cmake-tools.configuration.cmake.parseBuildDiagnostics.description": "Analyse la sortie du compilateur à la recherche d'avertissements et d'erreurs.", "cmake-tools.configuration.cmake.enabledOutputParsers.description": "Analyseurs de sortie à utiliser. Analyseurs pris en charge : `cmake`, `gcc`, `gnuld` pour la sortie du lieur de type GNULD, `msvc` pour Microsoft Visual C++, `ghs` pour le compilateur Green Hills avec --no_wrap_diagnostics --brief_diagnostics, `diab` pour le compilateur Wind River Diab et `iwyu` pour les diagnostics « include-what-you-use » (inclure ce que vous utilisez).", - "cmake-tools.configuration.cmake.debugConfig.description": "Configuration Debug à utiliser au moment du débogage d'une cible.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.markdownDescription": "Détecteurs de problèmes supplémentaires pour la sortie de génération. Utilisez ceci pour afficher les diagnostics d’outils comme clang-tidy, PCLint Plus, cppcheck ou des scripts personnalisés intégrés via `add_custom_command`/`add_custom_target` dans CMake.\n\nChaque entrée définit un `name` (utilisé comme étiquette source de diagnostic), un `regexp` et les indices des groupes de captures pour `file`, `line`, `column`, `severity`, `message` et `code`.\n\nPar exemple, pour correspondre à une sortie clang-tidy comme que `/path/file.cpp:10:5: warning: some message [check-name]` :\n```json\n[\n {\n \"name\": \"clang-tidy\",\n \"regexp\": \"^(.+?):(\\\\d+):(\\\\d+):\\\\s+(warning|error|note):\\\\s+(.+?)\\\\s*(?:\\\\[(.+)\\\\])?$\",\n \"file\": 1,\n \"line\": 2,\n \"column\": 3,\n \"severity\": 4,\n \"message\": 5,\n \"code\": 6\n }\n]\n```\n\nLes détecteurs personnalisés s’exécutent **après** les analyseurs intégrés (`gcc`, `msvc`, etc.) afin de ne pas intercepter les lignes des compilateurs intégrés.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.name": "Nom unique de ce détecteur, utilisé comme étiquette source de diagnostic dans le volet Problèmes.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.regexp": "Expression régulière à faire correspondre à chaque ligne de sortie de génération.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.file": "Index du groupe de captures pour le chemin d’accès du fichier. La valeur par défaut est `1`.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.line": "Index du groupe de captures pour le numéro de ligne. La valeur par défaut est `2`.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.column": "Index du groupe de captures pour le numéro de colonne. Facultatif.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.group": "Index du groupe de captures pour la gravité (doit capturer « error », « warning » ou « info »).", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.fixed": "Gravité fixe à appliquer à toutes les correspondances de ce modèle.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.message": "Index du groupe de captures pour le message de diagnostic. La valeur par défaut est `3`.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.code": "Index du groupe de captures pour un code de diagnostic facultatif.", + "cmake-tools.configuration.cmake.debugConfig.description": "Configuration Debug à utiliser au moment du débogage d’une cible. Lorsque le paramètre `type` est spécifié, la configuration du débogueur détectée automatiquement est ignorée et seule une configuration de base minimale (programme, cwd, nom) est générée à partir de la cible. Toutes les autres propriétés sont appliquées à partir de ce paramètre, ce qui permet un contrôle total de la configuration de lancement du débogage pour n’importe quel adaptateur de débogage.", + "cmake-tools.configuration.cmake.debugConfig.type.description": "Type d’adaptateur de débogage à utiliser (par exemple, `cppdbg`, `cppvsdbg`, `lldb`, `codelldb`). Lorsqu’il est défini, il ignore la détection automatique du débogueur depuis le cache CMake et utilise directement ce type. Toutes les propriétés supplémentaires requises par l’adaptateur de débogage peuvent être ajoutées à `#cmake.debugConfig#`.", "cmake-tools.configuration.cmake.debugConfig.symbolSearchPath.description": "Chemins de recherche des symboles du débogueur Visual Studio.", "cmake-tools.configuration.cmake.debugConfig.additionalSOLibSearchPath.description": "Chemins de GDB ou LLDB pour la recherche de fichiers .so.", "cmake-tools.configuration.cmake.debugConfig.externalConsole.description": "Lance une console externe pour le programme.", @@ -226,11 +248,13 @@ "cmake-tools.configuration.cmake.automaticReconfigure.description": "Permet de configurer automatiquement les répertoires de projet CMake lorsque la trousse ou la présélection de configuration sont modifiées.", "cmake-tools.configuration.cmake.pinnedCommands.description": "Liste des commandes CMake à toujours épingler par défaut. Ceux-ci apparaîtront dans la section « Commandes épinglées » de la barre latérale des CMake Tools.", "cmake-tools.configuration.cmake.enableAutomaticKitScan.description": "Activez l’analyse automatique des kits lorsqu’un kit n’est pas sélectionné. Cela n’aura d’incidence que lorsque les préréglages CMake ne sont pas utilisés.", + "cmake-tools.configuration.cmake.removeStaleKitsOnScan.description": "Remove compiler-based kits from the user kits file during a full kit scan when they are no longer rediscovered. Set \"keep\": true in a kit entry to preserve it.", "cmake-tools.configuration.cmake.enableLanguageServices.description": "Activer les services linguistiques pour les fichiers CMake. Cela activera la coloration syntaxique, la complétion de code et d'autres fonctionnalités.", "cmake-tools.configuration.cmake.preRunCoverageTarget.description": "Cible à générer avant d'exécuter les tests de couverture à l'aide de l'explorateur de tests", "cmake-tools.configuration.cmake.postRunCoverageTarget.description": "Cible à générer après l’exécution des tests avec couverture à l’aide de l’explorateur de tests", "cmake-tools.configuration.cmake.coverageInfoFiles.description": "Fichiers d’informations de couverture LCOV à traiter après l’exécution des tests avec couverture à l’aide de l’explorateur de tests.", "cmake-tools.configuration.cmake.useFolderPropertyInBuildTargetDropdown.description": "Permet de contrôler si la liste déroulante de la cible de build par défaut est regroupée par les groupes de dossiers CMake.", + "cmake-tools.configuration.cmake.setBuildTargetSameAsLaunchTarget.description": "Quand cette option est activée, la définition de la cible de lancement/débogage définit automatiquement la cible de génération correspondante. La cible de génération peut toujours être modifiée indépendamment.", "cmake-tools.debugger.pipeName.description": "Nom du canal (sur Windows) ou du socket de domaine (sur Unix) à utiliser pour la communication du débogueur.", "cmake-tools.debugger.clean.description": "Nettoyer avant la configuration.", "cmake-tools.debugger.configureAll.description": "Configurer pour tous les projets.", @@ -262,6 +286,7 @@ "cmake-tools.configuration.cmake.launchBehavior.breakAndReuseTerminal.markdownDescriptions": "L’instance de terminal de lancement est réutilisée et une commande `break` est envoyée pour arrêter tout processus de premier plan actif avant le lancement de la cible.", "cmake-tools.configuration.cmake.launchBehavior.newTerminal.markdownDescriptions": "Une instance de terminal est créée et la cible y est lancée. Les terminaux existants ne sont pas nettoyés automatiquement.", "cmake-tools.configuration.cmake.loadCompileCommands.description": "Contrôle si l’extension lit compile_commands.json pour activer la compilation de fichiers uniques.", + "cmake-tools.configuration.cmake.outlineViewType.description": "Project Outline View`s type. Available options are: \"list\" and \"tree\".", "cmake-tools.command.cmake.projectStatus.update.title": "Actualiser le statut du projet", "cmake-tools.command.cmake.pinnedCommands.add.title": "Ajouter une commande CMake à épingler", "cmake-tools.command.cmake.pinnedCommands.remove.title": "Détacher la commande", @@ -272,5 +297,33 @@ "cmake-tools.debugger.label": "Débogueur CMake", "cmake-tools.command.cmake.appendBuildDirectoryToWorkspace.title": "Ajouter le répertoire de génération à l’espace de travail actuel", "cmake-tools.command.workbench.action.tasks.configureTaskRunner.title": "Configurer une tâche", - "cmake-tools.command.workbench.action.tasks.runTask.title": "Exécuter la tâche" + "cmake-tools.command.workbench.action.tasks.runTask.title": "Exécuter la tâche", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.description": "Add source files to CMake lists when they are created.", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.no.description": "Do not automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.yes.description": "Automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.description": "Remove source files from CMake lists when they are deleted.", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.no.description": "Do not automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.yes.description": "Automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.markdownDescription": "How to choose which `set()` or `list(APPEND/PREPEND/INSERT)` command invocation to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.never.description": "Do not look for variable modification command invocations, only look for source command invocations.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askFirstParentDir.description": "Present a Quick Pick with options from the first `CMakeLists.txt` found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askParentDirs.description": "Present a Quick Pick with options from all `CMakeLists.txt` files found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.sourceVariables.markdownDescription": "Variables to add source files to. Variables appearing earlier in this list will be given higher priority. Only used if `#cmake.modifyLists.variableSelection#` is not `never`. Supports glob patterns.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.description": "How to choose which target to add new source files to when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askNearestSourceDir.description": "Present a Quick Pick with targets whose source directories are closest to location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askParentSourceDirs.description": "Present a Quick Pick with targets whose source directories contain the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.description": "How to choose which of a target's source command invocations to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askFirstParentDir.description": "Present a Quick Pick with options from the CMake list file in the parent directory closest to the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askParentDirs.description": "Present a Quick Pick with options from all CMake list files in the parent directories of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSourceCommands.markdownDescription": "Commands to treat as target source commands when adding source files CMake lists. Commands appearing earlier in this list will be given higher priority. Supports glob patterns.\r\n\r\nIf you are using the File API (see `#cmake.cmakeCommunicationMode#`), user-defined functions and macros which call the commands in this list are detected automatically and added to it.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.description": "How to choose which of a target's visibility scopes, file sets, or source keyword parameters to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.ask.description": "Present a Quick Pick with options from the selected target source command invocation.", + "cmake-tools.configuration.cmake.modifyLists.sourceListKeywords.markdownDescription": "Keyword arguments to user-defined functions and macros which introduce lists of source files. If left empty, all arguments consisting of only upper-case letters and underscores will be considered. Supports glob patterns.", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier" } \ No newline at end of file diff --git a/i18n/fra/schemas/kits-schema.json.i18n.json b/i18n/fra/schemas/kits-schema.json.i18n.json index 7faa220ad2..30164bb444 100644 --- a/i18n/fra/schemas/kits-schema.json.i18n.json +++ b/i18n/fra/schemas/kits-schema.json.i18n.json @@ -17,9 +17,11 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Chemin d'un fichier de chaîne d'outils", "schemas/kits-schema.json.items.properties.visualStudio": "ID d’instance du produit Visual Studio", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Architecture à cibler", + "schemas/kits-schema.json.items.properties.visualStudioArguments": "Arguments to vcvarsall.bat", "schemas/kits-schema.json.items.properties.environmentSetupScript": "Chemin absolu d'un script qui modifie l'environnement pour le kit", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Valeur de la variable d'environnement", - "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Valeur du paramètre CMake", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.0": "Valeur du paramètre CMake. Les points-virgules dans les chaînes sont placés dans une séquence d’échappement.", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.1": "Valeurs jointes par des points-virgules pour former une liste CMake sans aucun échappement.", "schemas/kits-schema.json.items.properties.preferredGenerator": "Définir un générateur CMake par défaut pour ce kit", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.name": "Nom du générateur à utiliser", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.platform": "Plateforme CMake pour l'argument -A", diff --git a/i18n/fra/src/cmakeListsModifier.i18n.json b/i18n/fra/src/cmakeListsModifier.i18n.json new file mode 100644 index 0000000000..a3c9d1d6a2 --- /dev/null +++ b/i18n/fra/src/cmakeListsModifier.i18n.json @@ -0,0 +1,51 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "add.newly.created.files": "Add newly created files to CMakeLists.txt", + "error.processing.add.files": "Error processing added files", + "remove.deleted.file": "Remove a deleted file from CMakeLists.txt", + "error.processing.delete.files": "Error processing deleted files", + "add.file.no.code.model": "Adding a file without a valid code model", + "file.already.in.target": "{0} already in target {1}.", + "no.targets.found": "No targets found. {0} not added to build system.", + "no.source.command.invocations": "No source command invocations found. {0} not added to build system.", + "delete.file.no.code.model": "Deleting a file without a valid code model", + "not.modifying.unsaved.delete": "Not modifying {0} to delete {1} because it has unsaved changes.", + "add.to.which.variable": "CMake: Add {0} to which variable?", + "add.to.which.target": "CMake: Add {0} to which target?", + "add.to.which.invocation": "CMake: Add {0} to which command invocation of {1}?", + "add.to.which.scope.fileset.keyword": "CMake: Add {0} to which Scope, File Set, or Keyword?", + "open.file": "Open File", + "not.modifying.unsaved.files": "Cannot modify {0} because it has unsaved changes.", + "skipping.unsaved.files": "Skipping {0} file(s) with unsaved changes: {1}", + "edit.label.remove.source.file": "CMake: Remove deleted source file", + "edit.label.add.source.file": "CMake: Add new source file", + "edits.applied.successfully": "Successfully applied {0} CMake list edit(s).", + "edits.apply.failed": "Failed to apply CMake list edits: {0}", + "not.local.file.add": "{0} is not a local file. Not adding to CMake lists.", + "no.candidates.found": "No suitable locations found to add {0}.", + "not.modifying.unsaved.add": "Not modifying {0} to add {1} because it has unsaved changes.", + "not.local.file.remove": "{0} is not a local file. Not removing from CMake lists.", + "could.not.open.file": "Could not open file {0}: {1}", + "file.not.found.in.cmake.lists": "{0} not found in CMake lists.", + "file.already.in.destination": "{0} already in {1} at {2}:{3}", + "parse.error.examining.cmake.lists": "Parse error while examining CMakeLists.txt files. Details: {0}", + "could.not.open.cmake.lists": "Could not open {0}: {1}", + "parse.error.finding.invocations": "Parse error while finding command invocations to add to. CMake file modified since last configure? Details: {0}", + "unexpected.command.found": "Found \"{0}\", expected \"{1}\". CMake file modified since last configure? Details: {2}:{3}", + "scope.private.detail": "{0} will be used to build {1}", + "scope.public.detail": "{0} will be used to build both {1} and targets that use {1}", + "scope.interface.detail": "{0} will be used to build targets that use {1}", + "fileset.headers.detail": "{0} will be used via a language's #include mechanism", + "fileset.cxx.modules.detail": "{0} contains C++ interface module or partition units.", + "label.fileset": "{0} File Set", + "label.scope": "{0} Scope", + "fileset.type": "Type: {0}", + "scope.with.fileset.detail": "{0} Scope: {1}", + "keyword.of.command": "Keyword of {0} command", + "command.label": "{0} Command", + "add.to.command.arguments": "Add {0} to the list of arguments to {1} command" +} \ No newline at end of file diff --git a/i18n/fra/src/cmakeProject.i18n.json b/i18n/fra/src/cmakeProject.i18n.json index 62f2926104..5eafad7f15 100644 --- a/i18n/fra/src/cmakeProject.i18n.json +++ b/i18n/fra/src/cmakeProject.i18n.json @@ -9,6 +9,7 @@ "generator.changed.restart.driver": "Redémarrage du pilote de CMake après un changement de générateur.", "preferredGenerator.changed.restart.driver": "Redémarrage du pilote de CMake après un changement de preferredGenerators.", "bad.executable": "Exécutable CMake incorrect : {0}. Vérifiez qu’il est installé ou que la valeur du paramètre {1} contient le chemin d’accès approprié", + "shell.changed.restart.driver": "Redémarrage du pilote CMake après un changement d’interpréteur de commandes.", "targests.in.preset": "[Cibles dans la présélection]", "constructing.cmakeproject": "Construction d'une instance de CMakeProject", "disposing.driver": "Suppression du pilote CMake", @@ -142,9 +143,9 @@ "configure.now.button": "Configurer", "cache.load.failed": "Non, le fichier CMakeCache.txt a été trouvé. Configurez d'abord le projet !", "set.up.before.selecting.target": "Configurez votre projet CMake avant de sélectionner une cible.", - "select.active.target.tooltip": "Sélectionner la cible de build par défaut", "enter.target.name": "Entrer un nom de cible", "target.to.build.description": "Cible à générer", + "select.active.target.tooltip": "Sélectionner la cible de build par défaut", "build.failed": "Échec de la génération.", "driver.died.after.build.succeeded": "Le pilote CMake a cessé de fonctionner juste après la réussite de la build.", "driver.died.before.workflow": "Le pilote CMake est mort avant de démarrer le flux de travail.", @@ -167,6 +168,7 @@ "target.debugging.unsupported": "Le débogage cible n'est plus pris en charge avec le pilote hérité", "learn.more.button": "En savoir plus", "failed.to.prepare.target": "Échec de la préparation de la cible exécutable nommée {0}", + "debug.configuration.from.settings": "Configuration de débogage depuis les paramètres utilisateur : {0}", "debug.configuration.from.cache": "Configuration Debug du cache : {0}", "problem.getting.debug": "Problème durant l'obtention de la configuration Debug à partir du cache.", "starting.debugger.with": "Démarrage du débogueur avec la configuration suivante.", diff --git a/i18n/fra/src/ctest.i18n.json b/i18n/fra/src/ctest.i18n.json index dcbcf8476a..4035d14349 100644 --- a/i18n/fra/src/ctest.i18n.json +++ b/i18n/fra/src/ctest.i18n.json @@ -27,6 +27,13 @@ "test.buildingPostRunCoverageTarget": "Génération de postRunCoverageTarget « {0} » pour le projet {1} une fois que les tests ont été exécutés avec la couverture.", "test.postRunCoverageTargetFailure": "Échec de la génération de postRunCoverageTarget cible sur le projet dans {0}. Gestion des données de couverture ignorée.", "test.skip.run.build.failure": "Tests non exécutés en raison d’un échec de build.", + "debug.without.launch.config": "Déboguer sans configuration de lancement", + "choose.debug.method": "Choisissez la façon de déboguer le test.", + "yes": "Oui", + "no": "Non", + "never.debug.with.launch.prompt": "Souhaitez-vous toujours déboguer les tests sans configuration de lancement dans cet espace de travail ?", + "no.launch.config": "Configurations de lancement introuvables.", + "choose.launch.config": "Choisissez une configuration de lancement avec qui déboguer le test.", "test.skip.debug.build.failure": "Tests non débogués en raison d’un échec de build.", "build.failed": "Échec de la build", "run.tests.profile": "Exécuter les tests", diff --git a/i18n/fra/src/drivers/cmakeDriver.i18n.json b/i18n/fra/src/drivers/cmakeDriver.i18n.json index 986f4dbc5f..8f236860d6 100644 --- a/i18n/fra/src/drivers/cmakeDriver.i18n.json +++ b/i18n/fra/src/drivers/cmakeDriver.i18n.json @@ -5,13 +5,14 @@ // Do not edit this file. It is machine generated. { "no.usable.generator.found": "Aucun générateur utilisable n'a été trouvé.", - "user.closed.file.compilation.terminal": "L'utilisateur a fermé un terminal de compilation de fichiers", "disposing.base.cmakedriver": "Suppression du CMakeDriver de base", "async.disposing.cmake.driver": "Pilote CMake de suppression asynchrone", "test.with.overrides": "REMARQUE : vous effectuez des tests avec une présélection {0}, mais des remplacements sont appliqués à partir de vos paramètres de VS Code.", "package.with.overrides": "REMARQUE : vous créées des packages avec la présélection {0}, mais des remplacements sont appliqués à partir de vos paramètres de VS Code.", "compile.with.overrides": "REMARQUE : vous effectuez une compilation avec une présélection {0}, mais des remplacements sont appliqués à partir de vos paramètres de VS Code.", "file.compilation": "Compilation de fichiers", + "compile.finished.with.error": "La compilation est terminée avec une ou des erreurs.", + "compile.finished.successfully": "La compilation est correctement terminée.", "removing": "Suppression de {0}", "unlink.failed": "Échec de la suppression du fichier cache {0}", "switching.to.config.preset": "Basculement vers la présélection de configuration : {0}", diff --git a/i18n/fra/src/extension.i18n.json b/i18n/fra/src/extension.i18n.json index fdabf1a0fc..5f411bdbe3 100644 --- a/i18n/fra/src/extension.i18n.json +++ b/i18n/fra/src/extension.i18n.json @@ -11,10 +11,11 @@ "configure.now.button": "Configurer maintenant", "configure.recommended": "Nous vous recommandons d'effectuer une reconfiguration après avoir mis à niveau la définition des kits.", "using.cache.to.configure.workspace.on.open": "Tentative d’utilisation du cache pour configurer l’espace de travail {0}", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier", + "failed.to.open.cache.file.on.code.model.update": "Failed to open CMake cache file on code model update", "update.code.model.for.cpptools": "Mettre à jour le modèle de code pour cpptools", "update.intellisense.disabled": "Impossible de mettre à jour le fournisseur de configuration, car {0} est défini sur {1}.", "failed.to.get.cpptools.api": "Échec de l’obtention de l’API cppTools", - "filed.to.open.cache.file.on.code.model.update": "Échec de l'ouverture du fichier cache CMake au moment de la mise à jour du modèle de code", "opening.text.editor.for": "Ouverture de l'éditeur de texte pour {0}", "no.kits.file.what.to.do": "Aucun fichier de kits n'est présent. Que voulez-vous faire ?", "scan.for.kits.button": "Rechercher des kits", @@ -49,6 +50,7 @@ "cmake.finished.returned.unserializable": "{0} a pris fin (valeur non sérialisable retournée)", "loading.extension.commands": "Chargement des commandes d'extension", "register.command": "Inscrire la commande d'extension CMakeTools {0}", + "bookmark.target.not.resolved": "Nous n’avons pas pu résoudre le signet « {0} » en une cible. Vous devez peut-être reconfigurer le projet.", "search.project.outline": "Entrez un terme de recherche pour filtrer le plan du projet", "added.to": "ajouté à", "removed.from": "retiré de", diff --git a/i18n/fra/src/proc.i18n.json b/i18n/fra/src/proc.i18n.json index 9ba18df146..1805e36ece 100644 --- a/i18n/fra/src/proc.i18n.json +++ b/i18n/fra/src/proc.i18n.json @@ -6,11 +6,11 @@ { "executing.command": "Exécution de la commande : {0}", "execution.environment": " avec l’environnement : {0}", - "process.error": "La commande « {0} » a échoué avec l’erreur : {1} pile : {2}", - "process.exit.with.signal": "La commande « {0} » s’est arrêtée avec le code : {1} et signal : {2} pile : {3}", - "process.exit": "La commande « {0} » s’est arrêtée avec le code : {1} pile : {2}", - "process.exit.stdout": "Sortie de commande sur sortie standard : {0} pile : {1}", - "process.exit.stderr": "Sortie de commande sur l’erreur standard : {0} pile : {1}", + "process.error": "La commande : {0} a échoué avec l’erreur : {1}", + "process.exit.with.signal": "La commande : {0} s’est arrêtée avec le code suivant : {1} et signal : {2}", + "process.exit": "La commande « {0} » s’est arrêtée avec le code {1}.", + "process.exit.stdout": "Sortie de commande sur sortie standard : {0}", + "process.exit.stderr": "Sortie de commande en cas d’erreur standard : {0}", "processing.data.event.stdout": "Traitement de l’événement {0} à partir de proc stdout", "processing.data.event.stderr": "Traitement {0} événement à partir de proc stderr", "resolving.close.event": "Résolution du processus sur {0} événement" diff --git a/i18n/fra/src/util.i18n.json b/i18n/fra/src/util.i18n.json index 1695387250..0f5ba25afb 100644 --- a/i18n/fra/src/util.i18n.json +++ b/i18n/fra/src/util.i18n.json @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "invalid.value": "Valeur non valide à convertir en valeur cmake : {0}", "invalid.version.string": "Chaîne de version non valide {0}", "extension.is.undefined": "L’extension n’est pas définie,", "sourcedirectory.not.a.directory": "\"sourceDirectory\" n'est pas un répertoire" diff --git a/i18n/ita/assets/policies.json.i18n.json b/i18n/ita/assets/policies.json.i18n.json new file mode 100644 index 0000000000..cf0fe59d8e --- /dev/null +++ b/i18n/ita/assets/policies.json.i18n.json @@ -0,0 +1,212 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "assets/policies.json.CMP0000": "È necessario specificare una versione minima richiesta di CMake.", + "assets/policies.json.CMP0001": "CMAKE_BACKWARDS_COMPATIBILITY non deve più essere usato.", + "assets/policies.json.CMP0002": "I nomi delle destinazioni logiche devono essere unici a livello globale.", + "assets/policies.json.CMP0003": "Le librerie collegate tramite percorso completo non generano più percorsi di ricerca del linker.", + "assets/policies.json.CMP0004": "Le librerie collegate non possono contenere spazi vuoti iniziali o finali.", + "assets/policies.json.CMP0005": "I valori delle definizioni del preprocessore ora vengono automaticamente preceduti da caratteri di escape.", + "assets/policies.json.CMP0006": "L'installazione delle destinazioni MACOSX_BUNDLE richiede una destinazione BUNDLE.", + "assets/policies.json.CMP0007": "Il comando list non ignora più gli elementi vuoti.", + "assets/policies.json.CMP0008": "Le librerie collegate tramite percorso completo devono avere un nome file di libreria valido.", + "assets/policies.json.CMP0009": "Le chiamate FILE GLOB_RECURSE non devono seguire i collegamenti simbolici per impostazione predefinita.", + "assets/policies.json.CMP0010": "La sintassi errata di riferimento a variabili è un errore.", + "assets/policies.json.CMP0011": "Gli script inclusi eseguono automaticamente cmake_policy PUSH e POP.", + "assets/policies.json.CMP0012": "if riconosce i numeri e le costanti booleane.", + "assets/policies.json.CMP0013": "Non sono consentite directory binarie duplicate.", + "assets/policies.json.CMP0014": "Le directory di input devono contenere CMakeLists.txt.", + "assets/policies.json.CMP0015": "link_directories tratta i percorsi come relativi alla directory di origine.", + "assets/policies.json.CMP0016": "target_link_libraries segnala errore se l'unico argomento non è una destinazione.", + "assets/policies.json.CMP0017": "Preferisci i file dalla directory del modulo CMake quando inclusi da lì.", + "assets/policies.json.CMP0018": "Ignorare la variabile CMAKE_SHARED_LIBRARY__FLAGS.", + "assets/policies.json.CMP0019": "Non espandere nuovamente le variabili nelle informazioni di inclusione e collegamento.", + "assets/policies.json.CMP0020": "Collega automaticamente gli eseguibili Qt alla destinazione qtmain su Windows.", + "assets/policies.json.CMP0021": "Errore irreversibile sui percorsi relativi nella proprietà di destinazione INCLUDE_DIRECTORIES.", + "assets/policies.json.CMP0022": "INTERFACE_LINK_LIBRARIES definisce l'interfaccia di collegamento.", + "assets/policies.json.CMP0023": "Non è possibile combinare le firme target_link_libraries semplici e con parole chiave.", + "assets/policies.json.CMP0024": "Non consentire l'inclusione del risultato dell'esportazione.", + "assets/policies.json.CMP0025": "L'ID del compilatore per Clang di Apple è ora AppleClang.", + "assets/policies.json.CMP0026": "Non consentire l'uso della proprietà LOCATION per le destinazioni di compilazione.", + "assets/policies.json.CMP0027": "Destinazioni importate collegate condizionatamente con directory di inclusione mancanti.", + "assets/policies.json.CMP0028": "I due punti doppi nel nome della destinazione indicano un alias o una destinazione IMPORTED.", + "assets/policies.json.CMP0029": "Il comando subdir_depends non deve essere chiamato.", + "assets/policies.json.CMP0030": "Il comando use_mangled_mesa non deve essere chiamato.", + "assets/policies.json.CMP0031": "Il comando load_command non deve essere chiamato.", + "assets/policies.json.CMP0032": "Il comando output_required_files non deve essere chiamato.", + "assets/policies.json.CMP0033": "Il comando export_library_dependencies non deve essere chiamato.", + "assets/policies.json.CMP0034": "Il comando utility_source non deve essere chiamato.", + "assets/policies.json.CMP0035": "Il comando variable_requires non deve essere chiamato.", + "assets/policies.json.CMP0036": "Il comando build_name non deve essere chiamato.", + "assets/policies.json.CMP0037": "I nomi delle destinazioni non devono essere riservati e devono rispettare un criterio di validità.", + "assets/policies.json.CMP0038": "Le destinazioni non possono collegarsi direttamente a se stesse.", + "assets/policies.json.CMP0039": "Le destinazioni di utilità non possono avere dipendenze di collegamento.", + "assets/policies.json.CMP0040": "La destinazione nella firma TARGET di add_custom_command deve esistere ed essere definita nella directory corrente.", + "assets/policies.json.CMP0041": "Errore su inclusione relativa con espressione generatore.", + "assets/policies.json.CMP0042": "MACOSX_RPATH è abilitato per impostazione predefinita.", + "assets/policies.json.CMP0043": "Ignorare le proprietà COMPILE_DEFINITIONS_", + "assets/policies.json.CMP0044": "Espressioni del generatore _COMPILER_ID con distinzione tra maiuscole e minuscole", + "assets/policies.json.CMP0045": "Errore su destinazione inesistente in get_target_property.", + "assets/policies.json.CMP0046": "Errore su dipendenza inesistente in add_dependencies.", + "assets/policies.json.CMP0047": "Usa l'ID del compilatore QCC per i driver qcc su QNX.", + "assets/policies.json.CMP0048": "Il comando project gestisce le variabili VERSION.", + "assets/policies.json.CMP0049": "Non espandere le variabili nelle voci di origine della destinazione.", + "assets/policies.json.CMP0050": "Non consentire firme SOURCE per add_custom_command.", + "assets/policies.json.CMP0051": "Elenca TARGET_OBJECTS nella proprietà di destinazione SOURCES.", + "assets/policies.json.CMP0052": "Rifiuta le directory di origine e di compilazione nelle directory INTERFACE_INCLUDE_DIRECTORIES installate.", + "assets/policies.json.CMP0053": "Semplifica la valutazione delle sequenze di escape e dei riferimenti alle variabili.", + "assets/policies.json.CMP0054": "Interpreta solo gli argomenti come variabili o parole chiave se non racchiusi tra virgolette.", + "assets/policies.json.CMP0055": "Controllo rigoroso per il comando di interruzione.", + "assets/policies.json.CMP0056": "Rispetta i flag di collegamento nella firma del file di origine try_compile.", + "assets/policies.json.CMP0057": "Supporta il nuovo operatore if IN_LIST.", + "assets/policies.json.CMP0058": "Ninja richiede che gli effetti secondari dei comandi personalizzati siano espliciti.", + "assets/policies.json.CMP0059": "Non considerare DEFINITIONS come proprietà di directory predefinita.", + "assets/policies.json.CMP0060": "Collega le librerie tramite percorso completo anche nelle directory implicite.", + "assets/policies.json.CMP0061": "CTest non indica per impostazione predefinita a make di ignorare gli errori (-i).", + "assets/policies.json.CMP0062": "Non consentire l'installazione del risultato dell'esportazione.", + "assets/policies.json.CMP0063": "Rispetta le proprietà di visibilità per tutti i tipi di destinazione.", + "assets/policies.json.CMP0064": "Riconosci TEST come operatore per il comando if.", + "assets/policies.json.CMP0065": "Non aggiungere flag per esportare simboli da eseguibili senza la proprietà di destinazione ENABLE_EXPORTS.", + "assets/policies.json.CMP0066": "Rispetta i flag di per-config nella firma del file di origine try_compile.", + "assets/policies.json.CMP0067": "Rispetta lo standard del linguaggio nella firma del file di origine try_compile.", + "assets/policies.json.CMP0068": "Le impostazioni RPATH in macOS non influenzano install_name.", + "assets/policies.json.CMP0069": "INTERPROCEDURAL_OPTIMIZATION viene applicato se abilitato.", + "assets/policies.json.CMP0070": "Definisci il comportamento dei file per i percorsi relativi.", + "assets/policies.json.CMP0071": "Consenti a AUTOMOC e AUTOUIC di elaborare i file GENERATED.", + "assets/policies.json.CMP0072": "FindOpenGL preferisce GLVND per impostazione predefinita, se disponibile.", + "assets/policies.json.CMP0073": "Non produrre voci della cache _LIB_DEPENDS di legacy.", + "assets/policies.json.CMP0074": "find_package utilizza le variabili _ROOT.", + "assets/policies.json.CMP0075": "Le macro di controllo dei file di inclusione rispettano CMAKE_REQUIRED_LIBRARIES.", + "assets/policies.json.CMP0076": "Il comando target_sources converte i percorsi relativi in percorsi assoluti.", + "assets/policies.json.CMP0077": "option rispetta le variabili normali.", + "assets/policies.json.CMP0078": "UseSWIG genera nomi di destinazione standard.", + "assets/policies.json.CMP0079": "target_link_libraries consente l'uso con destinazioni in altre directory.", + "assets/policies.json.CMP0080": "BundleUtilities non può essere incluso in fase di configurazione.", + "assets/policies.json.CMP0081": "Percorsi relativi non consentiti nella proprietà di destinazione LINK_DIRECTORIES.", + "assets/policies.json.CMP0082": "Le regole di installazione da add_subdirectory sono interlacciate con quelle del chiamante.", + "assets/policies.json.CMP0083": "Per controllare la generazione di Position Independent Executable (PIE) o meno, sono necessari alcuni flag nella fase di collegamento.", + "assets/policies.json.CMP0084": "Il modulo FindQt non esiste per find_package.", + "assets/policies.json.CMP0085": "$ gestisce voci di elenco vuote.", + "assets/policies.json.CMP0086": "UseSWIG rispetta SWIG_MODULE_NAME tramite il flag -module.", + "assets/policies.json.CMP0087": "Espressioni per il generatore install e install support.", + "assets/policies.json.CMP0088": "FindBISON esegue bison in CMAKE_CURRENT_BINARY_DIR durante l'esecuzione.", + "assets/policies.json.CMP0089": "L'ID del compilatore per i compilatori XL basati su Clang di IBM è ora XLClang.", + "assets/policies.json.CMP0090": "export non popola il registro pacchetti per impostazione predefinita.", + "assets/policies.json.CMP0091": "I flag della libreria runtime MSVC sono selezionati tramite un'astrazione.", + "assets/policies.json.CMP0092": "I flag di avviso MSVC non sono presenti in CMAKE__FLAGS per impostazione predefinita.", + "assets/policies.json.CMP0093": "FindBoost riporta Boost_VERSION nel formato x.y.z.", + "assets/policies.json.CMP0094": "I moduli FindPython3, FindPython2 e FindPython usano LOCATION come strategia di ricerca.", + "assets/policies.json.CMP0095": "Le voci RPATH sono correttamente precedute da caratteri di escape nello script di installazione intermedio di CMake.", + "assets/policies.json.CMP0096": "Il comando project mantiene gli zeri iniziali nei componenti della versione.", + "assets/policies.json.CMP0097": "ExternalProject_Add con GIT_SUBMODULES \"\" non inizializza alcun modulo secondario.", + "assets/policies.json.CMP0098": "FindFLEX esegue flex nella directory CMAKE_CURRENT_BINARY_DIR durante l'esecuzione.", + "assets/policies.json.CMP0099": "Le proprietà di collegamento sono transitive sulle dipendenze private delle librerie statiche.", + "assets/policies.json.CMP0100": "Permettere a AUTOMOC e AUTOUIC di elaborare i file header con estensione .hh.", + "assets/policies.json.CMP0101": "target_compile_options ora rispetta sempre la parola chiave BEFORE.", + "assets/policies.json.CMP0102": "Il comando mark_as_advanced non crea più una voce nella cache se non esiste già.", + "assets/policies.json.CMP0103": "Non sono più consentite chiamate multiple al comando export con lo stesso FILE senza APPEND.", + "assets/policies.json.CMP0104": "Inizializza CMAKE_CUDA_ARCHITECTURES quando CMAKE_CUDA_COMPILER_ID _COMPILER_ID> è NVIDIA. Genera un errore se CUDA_ARCHITECTURES è vuoto.", + "assets/policies.json.CMP0105": "Le proprietà di destinazione LINK_OPTIONS e INTERFACE_LINK_OPTIONS sono ora usate per la fase di collegamento del dispositivo.", + "assets/policies.json.CMP0106": "Il modulo Documentation è stato rimosso.", + "assets/policies.json.CMP0107": "Non è consentito creare una destinazione ALIAS con lo stesso nome di un'altra destinazione.", + "assets/policies.json.CMP0108": "Una destinazione non può collegarsi a se stessa, nemmeno tramite una destinazione ALIAS.", + "assets/policies.json.CMP0109": "find_program richiede l'autorizzazione di esecuzione ma non quello di lettura.", + "assets/policies.json.CMP0110": "add_test supporta caratteri arbitrari nei nomi dei test.", + "assets/policies.json.CMP0111": "Una destinazione importata senza la proprietà location fallisce durante la generazione.", + "assets/policies.json.CMP0112": "Le espressioni generatore per componenti di file di destinazione non aggiungono dipendenze di destinazione.", + "assets/policies.json.CMP0113": "I generatori Makefile non ripetono comandi personalizzati dalle dipendenze di destinazione.", + "assets/policies.json.CMP0114": "I passaggi di ExternalProject adottano completamente i loro passaggi.", + "assets/policies.json.CMP0115": "Le estensioni dei file di origine devono essere esplicite.", + "assets/policies.json.CMP0116": "I generatori Ninja trasformano i DEPFILE provenienti da add_custom_command.", + "assets/policies.json.CMP0117": "Il flag RTTI /GR di MSVC non viene aggiunto per impostazione predefinita a CMAKE_CXX_FLAGS _FLAGS>.", + "assets/policies.json.CMP0118": "Le origini GENERATED possono essere usate tra directory senza necessità di marcatura manuale.", + "assets/policies.json.CMP0119": "La proprietà LANGUAGE del file di origine compila esplicitamente come la lingua specificata.", + "assets/policies.json.CMP0120": "Il modulo WriteCompilerDetectionHeader è stato rimosso.", + "assets/policies.json.CMP0121": "Il comando list ora rileva indici non validi.", + "assets/policies.json.CMP0122": "UseSWIG usa le convenzioni dei nomi delle librerie per il linguaggio CSharp.", + "assets/policies.json.CMP0123": "I flag di compilazione e collegamento ARMClang per cpu/arch devono essere impostati esplicitamente.", + "assets/policies.json.CMP0124": "Le variabili del ciclo foreach sono disponibili solo nell'ambito del ciclo.", + "assets/policies.json.CMP0125": "I comandi find_file, find_path, find_library e find_program memorizzano il risultato nella variabile di cache specificata dal primo argomento. Prima di CMake 3.21, se una variabile di cache con quel nome esisteva già ma senza tipo, qualsiasi variabile non di cache con lo stesso nome veniva scartata e veniva sempre usata la variabile di cache (vedi anche CMP0126 per un comportamento simile ma differente). Questo contraddice la regola secondo cui una variabile non di cache dovrebbe avere la precedenza su una variabile di cache con lo stesso nome. Questa situazione può verificarsi se un utente imposta una variabile di cache da riga di comando senza specificarne il tipo, ad esempio cmake -DMYVAR=blah invece di cmake -DMYVAR:FILEPATH=blah.", + "assets/policies.json.CMP0126": "Quando questo criterio è impostato su NEW, il comando set non rimuove variabili normali con lo stesso nome dall'ambito corrente. Il comportamento OLD rimuove qualsiasi variabile normale con lo stesso nome dall'ambito corrente nelle seguenti situazioni:", + "assets/policies.json.CMP0127": "cmake_dependent_option supporta la sintassi completa delle condizioni.", + "assets/policies.json.CMP0128": "Se questo criterio è impostato su abilitato NEW:", + "assets/policies.json.CMP0129": "L'identificativo del compilatore per i compilatori MCST LCC è ora LCC, non GNU.", + "assets/policies.json.CMP0130": "Durante la diagnosi degli errori di valutazione delle condizioni.", + "assets/policies.json.CMP0131": "LINK_LIBRARIES supporta l'espressione generatore :genex:`$`.", + "assets/policies.json.CMP0132": "Non impostare variabili d'ambiente del compilatore alla prima esecuzione.", + "assets/policies.json.CMP0133": "Il modulo CPack disabilita per impostazione predefinita il contratto di servizio nel generatore DragNDrop di CPack.", + "assets/policies.json.CMP0134": "La visualizzazione predefinita del registro è TARGET per i comandi find_file, find_path, find_library e find_package, e BOTH per il comando find_program.", + "assets/policies.json.CMP0135": "Quando si utilizza il metodo di download URL con i comandi ExternalProject_Add o FetchContent_Declare, CMake 3.23 e versioni precedenti impostano i timestamp dei contenuti estratti in modo che siano uguali ai timestamp presenti nell'archivio. Quando l'URL cambia, il nuovo archivio viene scaricato ed estratto, ma i timestamp dei contenuti estratti potrebbero non essere più recenti rispetto a quelli precedenti. Qualsiasi elemento dipendente dai contenuti estratti potrebbe non essere ricostruito, anche se i contenuti sono cambiati.", + "assets/policies.json.CMP0136": "I flag della libreria runtime Watcom sono selezionati tramite un'astrazione.", + "assets/policies.json.CMP0137": "try_compile passa le variabili di piattaforma in modalità progetto.", + "assets/policies.json.CMP0138": "CheckIPOSupported utilizza i flag del progetto chiamante.", + "assets/policies.json.CMP0139": "Il comando if supporta il confronto di percorsi usando l'operatore PATH_EQUAL.", + "assets/policies.json.CMP0140": "Il comando return verifica i parametri.", + "assets/policies.json.CMP0141": "I flag di formato delle informazioni di debug MSVC sono selezionati tramite un'astrazione.", + "assets/policies.json.CMP0142": "Il generatore Xcode non aggiunge suffissi per configurazione ai percorsi di ricerca delle librerie.", + "assets/policies.json.CMP0143": "La proprietà globale USE_FOLDERS è considerata ON per impostazione predefinita.", + "assets/policies.json.CMP0144": "find_package usa le variabili _ROOT.", + "assets/policies.json.CMP0145": "I moduli Dart e FindDart sono stati rimossi.", + "assets/policies.json.CMP0146": "Il modulo FindCUDA è stato rimosso.", + "assets/policies.json.CMP0147": "I generatori di Visual Studio compilano in parallelo i comandi personalizzati.", + "assets/policies.json.CMP0148": "I moduli FindPythonInterp e FindPythonLibs sono stati rimossi.", + "assets/policies.json.CMP0149": "I generatori di Visual Studio selezionano per impostazione predefinita l'ultima versione di Windows SDK.", + "assets/policies.json.CMP0150": "I comandi ExternalProject_Add e FetchContent_Declare trattano i percorsi GIT_REPOSITORY relativi come se fossero relativi al progetto remoto del progetto padre.", + "assets/policies.json.CMP0151": "La directory di inclusione AUTOMOC è una directory di sistema per impostazione predefinita.", + "assets/policies.json.CMP0152": "file risolve i collegamenti simbolici prima di semplificare i componenti ../.", + "assets/policies.json.CMP0153": "Il comando exec_program non deve essere chiamato.", + "assets/policies.json.CMP0154": "I file generati sono privati per impostazione predefinita nelle destinazioni che usano set di file.", + "assets/policies.json.CMP0155": "Le origini C++ nelle destinazioni con almeno C++20 vengono analizzate per le importazioni, se supportato.", + "assets/policies.json.CMP0156": "Deduplica le librerie nelle linee di collegamento in base alle capacità del linker.", + "assets/policies.json.CMP0157": "La modalità di compilazione Swift è selezionata tramite un'astrazione.", + "assets/policies.json.CMP0158": "add_test rispetta CMAKE_CROSSCOMPILING_EMULATOR solo durante la compilazione incrociata.", + "assets/policies.json.CMP0159": "file con aggiornamenti REGEX per CMAKE_MATCH_.", + "assets/policies.json.CMP0160": "Ora si verifica un errore quando si tenta di impostare altre proprietà di destinazione di sola lettura.", + "assets/policies.json.CMP0161": "La variabile CPACK_PRODUCTBUILD_DOMAINS ha come valore predefinito true.", + "assets/policies.json.CMP0162": "I generatori di Visual Studio aggiungono per impostazione predefinita gli indicatori UseDebugLibraries.", + "assets/policies.json.CMP0163": "La proprietà GENERATED del file di origine è ora visibile in tutte le directory.", + "assets/policies.json.CMP0164": "add_library rifiuta le librerie SHARED quando non supportate dalla piattaforma.", + "assets/policies.json.CMP0165": "enable_language non deve essere chiamato prima del progetto.", + "assets/policies.json.CMP0166": "TARGET_PROPERTY valuta in modo transitivo le proprietà di collegamento sulle dipendenze private delle librerie statiche.", + "assets/policies.json.CMP0167": "Il modulo FindBoost è stato rimosso.", + "assets/policies.json.CMP0168": "Il modulo FetchContent implementa i passaggi direttamente invece che tramite una build secondaria.", + "assets/policies.json.CMP0169": "L'uso di FetchContent_Populate con un solo argomento (il nome di una dipendenza dichiarata) è deprecato.", + "assets/policies.json.CMP0170": "Se FETCHCONTENT_FULLY_DISCONNECTED è impostato su true, FetchContent_MakeAvailable e FetchContent_Populate applicano il vincolo che la directory di origine deve essere già popolata. Questo requisito è sempre stato documentato, ma non veniva controllato o applicato con CMake 3.29 o versioni precedenti. Ciò a volte portava a errori difficili da rintracciare quando un progetto si aspettava che una dipendenza fosse stata popolata, ma la sua compilazione veniva silenziosamente ignorata.", + "assets/policies.json.CMP0171": "codegen è un nome di destinazione riservato.", + "assets/policies.json.CMP0172": "Il modulo CPack abilita per impostazione predefinita l'installazione per singola macchina nel generatore WIX di CPack.", + "assets/policies.json.CMP0173": "Il modulo CMakeFindFrameworks è stato rimosso.", + "assets/policies.json.CMP0174": "cmake_parse_arguments definisce una variabile con stringa vuota dopo una parola chiave a valore singolo.", + "assets/policies.json.CMP0175": "add_custom_command rifiuta argomenti non validi.", + "assets/policies.json.CMP0176": "La codifica di execute_process è UTF-8 per impostazione predefinita.", + "assets/policies.json.CMP0177": "I percorsi di install DESTINATION sono normalizzati.", + "assets/policies.json.CMP0178": "Le righe di comando di test mantengono gli argomenti vuoti.", + "assets/policies.json.CMP0179": "La deduplicazione delle librerie statiche nelle linee di collegamento mantiene la prima occorrenza. Questo criterio è rilevante solo quando CMP0156 è impostata su NEW.", + "assets/policies.json.CMP0180": "project imposta sempre _* come variabili normali.", + "assets/policies.json.CMP0181": "Le variabili CMAKE_EXE_LINKER_FLAGS, CMAKE_EXE_LINKER_FLAGS_, CMAKE_SHARED_LINKER_FLAGS, CMAKE_SHARED_LINKER_FLAGS_, CMAKE_MODULE_LINKER_FLAGS e CMAKE_MODULE_LINKER_FLAGS_ vengono analizzate, riquotate e supportano il prefisso LINKER:.", + "assets/policies.json.CMP0182": "Crea archivi di libreria condivisa per impostazione predefinita su AIX.", + "assets/policies.json.CMP0183": "add_feature_info supporta la sintassi completa delle condizioni.", + "assets/policies.json.CMP0184": "I flag di controllo del runtime MSVC vengono selezionati da un'astrazione.", + "assets/policies.json.CMP0185": "FindRuby non fornisce più variabili RUBY_* in maiuscolo.", + "assets/policies.json.CMP0186": "Le espressioni regolari corrispondono a ^ al massimo una volta nelle ricerche ripetute.", + "assets/policies.json.CMP0187": "Includi il file di origine senza estensione dopo quello con la stessa estensione.", + "assets/policies.json.CMP0188": "Il modulo FindGCCXML è stato rimosso.", + "assets/policies.json.CMP0189": "TARGET_PROPERTY valuta in modo transitivo le proprietà LINK_LIBRARIES.", + "assets/policies.json.CMP0190": "I moduli FindPython3, FindPython2 e FindPython garantiscono la coerenza degli artefatti in modalità cross-compiling.", + "assets/policies.json.CMP0191": "Il modulo FindCABLE è stato rimosso.", + "assets/policies.json.CMP0192": "GNUInstallDirs utilizza SYSCONFDIR, LOCALSTATEDIR e RUNSTATEDIR assoluti nei prefissi speciali.", + "assets/policies.json.CMP0193": "GNUInstallDirs memorizza nella cache CMAKE_INSTALL_* con prefisso usr/ per il prefisso di installazione /.", + "assets/policies.json.CMP0194": "MSVC non è un assembler per il linguaggio ASM.", + "assets/policies.json.CMP0195": "I moduli Swift nelle strutture di compilazione usano la struttura di directory dei moduli Swift.", + "assets/policies.json.CMP0196": "Il modulo CMakeDetermineVSServicePack è stato rimosso.", + "assets/policies.json.CMP0197": "Il flag -machine: del linker MSVC non è presente in CMAKE_*_LINKER_FLAGS.", + "assets/policies.json.CMP0198": "CMAKE_PARENT_LIST_FILE non è definito in CMakeLists.txt.", + "assets/policies.json.CMP0199": ":genex:`$` non corrisponde alle configurazioni mappate non selezionate.", + "assets/policies.json.CMP0200": "La selezione di posizione e configurazione per le destinazioni importate è più coerente.", + "assets/policies.json.CMP0201": "Python::NumPy non dipende da Python::Development.Module.", + "assets/policies.json.CMP0202": "I nomi dei file PDB includono sempre il POSTFIX per configurazione della destinazione.", + "assets/policies.json.CMP0203": "_WINDLL è definito per le librerie condivise destinate ad ABI MSVC.", + "assets/policies.json.CMP0204": "Un set di caratteri è sempre definito quando la destinazione è ABI MSVC." +} \ No newline at end of file diff --git a/i18n/ita/package.i18n.json b/i18n/ita/package.i18n.json index b3cde8e1d2..b1cb5993cd 100644 --- a/i18n/ita/package.i18n.json +++ b/i18n/ita/package.i18n.json @@ -4,6 +4,8 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "cmake-tools.command.cmake.addFileToCMakeLists.title": "Add File to CMake Lists", + "cmake-tools.command.cmake.removeFileFromCMakeLists.title": "Remove File from CMake Lists", "cmake-tools.command.cmake.openCMakePresets.title": "Aprire CMakePresets.json", "cmake-tools.command.cmake.addConfigurePreset.title": "Aggiungere Set di impostazioni di configurazione", "cmake-tools.command.cmake.addBuildPreset.title": "Aggiungere set di impostazioni di compilazione", @@ -46,6 +48,9 @@ "cmake-tools.command.cmake.cleanConfigureWithDebugger.title": "Elimina la cache e riconfigura con CMake Debugger", "cmake-tools.command.cmake.cleanConfigureAll.title": "Elimina la cache e riconfigura tutti i progetti", "cmake-tools.command.cmake.cleanConfigureAllWithDebugger.title": "Elimina la cache e riconfigura tutti i progetti con CMake Debugger", + "cmake-tools.command.cmake.fullCleanConfigure.title": "Eliminare la directory di compilazione e riconfigurare", + "cmake-tools.command.cmake.fullCleanConfigureAll.title": "Eliminare la directory di compilazione e riconfigurare tutti i progetti", + "cmake-tools.command.cmake.outline.fullCleanConfigureAll.title": "Eseguire una riconfigurazione pulita di tutti i progetti", "cmake-tools.command.cmake.editCacheUI.title": "Modifica la cache di CMake (interfaccia utente)", "cmake-tools.command.cmake.outline.cleanConfigure.title": "Riconfigurazione pulita", "cmake-tools.command.cmake.outline.cleanConfigureWithDebugger.title": "Esegui la riconfigurazione pulita con CMake Debugger", @@ -58,6 +63,9 @@ "cmake-tools.command.cmake.cleanConfigureAndBuild.title": "Elimina la cache, riconfigura e compila", "cmake-tools.command.cmake.cleanConfigureAndBuildAll.title": "Elimina la cache, riconfigura e compila tutti i progetti", "cmake-tools.command.cmake.outline.cleanConfigureAndBuildAll.title": "Pulisci, riconfigura e compila tutti i progetti", + "cmake-tools.command.cmake.fullCleanConfigureAndBuild.title": "Eliminare directory di compilazione, riconfigurare e compilare", + "cmake-tools.command.cmake.fullCleanConfigureAndBuildAll.title": "Eliminare directory di compilazione, riconfigurare e compilare tutti i progetti", + "cmake-tools.command.cmake.outline.fullCleanConfigureAndBuildAll.title": "Eseguire una riconfigurazione totale pulita e compilare tutti i progetti", "cmake-tools.command.cmake.ctest.title": "Esegui test", "cmake-tools.command.cmake.ctestAll.title": "Esegui test per tutti i progetti", "cmake-tools.command.cmake.cpack.title": "Esegui CPack", @@ -74,6 +82,7 @@ "cmake-tools.command.cmake.launchTarget.title": "Esegui senza debug", "cmake-tools.command.cmake.launchTargetAll.title": "Esegui tutti i progetti senza eseguire il debug", "cmake-tools.command.cmake.selectLaunchTarget.title": "Imposta destinazione di avvio/debug", + "cmake-tools.command.cmake.selectBuildAndLaunchTarget.title": "Imposta destinazione di compilazione e avvio/debug", "cmake-tools.command.cmake.stop.title": "Annulla compilazione", "cmake-tools.command.cmake.stopAll.title": "Annulla la compilazione per tutti i progetti", "cmake-tools.command.cmake.resetState.title": "Reimposta lo stato dell'estensione di CMake Tools (per la risoluzione dei problemi)", @@ -105,6 +114,7 @@ "cmake-tools.configuration.cmake.generator.description": "Generatore CMake da usare.", "cmake-tools.configuration.cmake.toolset.description": "Set di strumenti di CMake da usare durante la configurazione.", "cmake-tools.configuration.cmake.platform.description": "Piattaforma CMake da usare durante la configurazione.", + "cmake-tools.configuration.cmake.shell.description": "Percorso di un eseguibile della shell da usare durante l'esecuzione dei comandi CMake, CTest e CPack (ad esempio Git Bash o MSYS2). Se questa opzione è impostata, tutte le chiamate al sottoprocesso vengono instradate tramite questa shell. Utile per toolchain integrate che richiedono la conversione dei percorsi POSIX. Se questa opzione è null, viene usato il comportamento della shell di sistema predefinito.", "cmake-tools.configuration.cmake.configureArgs.description": "Argomenti aggiuntivi da passare a CMake durante la configurazione. Quando si usano i set di impostazioni di CMake, questi argomenti vengono temporaneamente aggiunti a quelli forniti dal set di impostazioni di configurazione attivo.", "cmake-tools.configuration.cmake.buildArgs.description": "Argomenti aggiuntivi da passare a CMake durante la compilazione. Quando si usano i set di impostazioni di CMake, questi argomenti vengono temporaneamente aggiunti a quelli forniti dal set di impostazioni di compilazione attivo.", "cmake-tools.configuration.cmake.buildToolArgs.description": "Argomenti aggiuntivi da passare allo strumento di compilazione sottostante durante la compilazione. Quando si usano i set di impostazioni di CMake, questi argomenti vengono temporaneamente aggiunti a quelli forniti dal set di impostazioni di compilazione attivo per richiamare lo strumento di compilazione.", @@ -112,7 +122,7 @@ "cmake-tools.configuration.cmake.ctestPath.description": "Percorso dell'eseguibile di CTest. Se è Null, verrà dedotto da cmake.cmakePath (è consigliabile lasciare Null).", "cmake-tools.configuration.cmake.cpackPath.description": "Percorso dell'eseguibile di CPack. Se è Null, verrà dedotto da cmake.cmakePath (è consigliabile lasciare Null). Verrà ignorato quando si usano i kit invece dei set di impostazioni.", "cmake-tools.configuration.cmake.ctest.parallelJobs.markdownDescription": "Numero di processi di test paralleli. Usa zero per usare il valore di `#cmake.parallelJobs#`. Si applica solo quando `#cmake.ctest.allowParallelJobs#` è impostato su `true`.", - "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "Consente di eseguire i ctest in parallelo, ma l'output dei risultati potrebbe essere illeggibile ed Esplora test potrebbe non riflettere accuratamente l'avanzamento del test.", + "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "Consente di eseguire i ctest in parallelo, ma l'output dei risultati potrebbe essere illeggibile ed Editor elenco dei test potrebbe non riflettere accuratamente l'avanzamento del test. Con questa opzione disabilitata, i test vengono eseguiti in sequenza in ordine alfabetico, corrispondente all'ordine di visualizzazione di Editor elenco dei test.", "cmake-tools.configuration.cmake.ctest.testExplorerIntegrationEnabled.description": "Indica se l'integrazione con Esplora test è abilitata o meno. È utile disabilitare questa opzione se si preferisce usare un'estensione diversa per l'integrazione dei test.", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiter.markdownDescription": "Delimitatore facoltativo usato per separare gerarchicamente i nomi dei gruppi di test e i test dei gruppi in Editor elenco dei test. Questa stringa viene usata in un'espressione regolare, di conseguenza alcuni delimitatori potrebbero richiedere escape. Esempi: `-` ( Un delimitatore: `-`), `\\.|::` (Due delimitatori: `.` o `::`. Si noti che `.` deve essere preceduto da un carattere di escape).", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiterMaxOccurrence.markdownDescription": "Numero massimo di volte in cui è possibile utilizzare il delimitatore per suddividere il nome del test. `0` indica che non ci sono limiti.", @@ -124,9 +134,21 @@ "cmake-tools.configuration.cmake.ctest.failurePatterns.actual": "Indice del gruppo di corrispondenze dell'output di test corrente. Il valore predefinito è undefined.", "cmake-tools.configuration.cmake.ctest.failurePatterns.expected": "Indice del gruppo di corrispondenze dell'output di test previsto. Il valore predefinito è undefined.", "cmake-tools.configuration.cmake.ctest.debugLaunchTarget.description": "Nome della destinazione da launch.json da avviare durante il debug di un test con CTest. Per impostazione predefinita, nel caso in cui la destinazione non esista, verrà visualizzato un selettore con tutte le destinazioni disponibili.", + "cmake-tools.configuration.cmake.ctest.neverDebugTestsWithLaunchConfiguration.description": "Se impostata su true, esegue sempre il debug dei test senza una configurazione di avvio, ignorando il menu di selezione rapida. L'impostazione predefinita è false.", "cmake-tools.configuration.cmake.parseBuildDiagnostics.description": "Analizza l'output del compilatore per individuare avvisi ed errori.", "cmake-tools.configuration.cmake.enabledOutputParsers.description": "Parser di output da usare. Analizzatori supportati: `cmake`, `gcc`, `gnuld` per l'output del linker di tipo GNULD, `msvc` per Microsoft Visual C++, `ghs` per il compilatore Green Hills con --no_wrap_diagnostics --brief_diagnostics, `diab` per il compilatore Wind River Diab e `iwyu` per la diagnostica include-what-you-use.", - "cmake-tools.configuration.cmake.debugConfig.description": "Configurazione di debug da usare quando si esegue il debug di una destinazione.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.markdownDescription": "Matcher problemi aggiuntivi per l'output di compilazione. Usali per visualizzare dati di diagnostica provenienti da strumenti quali clang-tidy, PCLint Plus, cppcheck o script personalizzati integrati tramite `add_custom_command`/`add_custom_target` in CMake.\n\nOgni voce definisce un `name` (usato come etichetta dell'origine di diagnostica), un `regexp` e gli indici dei gruppi di acquisizione per `file`, `line`, `column`, `severity`, `message` e `code`.\n\nAd esempio, per trovare una corrispondenza con un output di clang-tidy come `/path/file.cpp:10:5: warning: some message [check-name]`:\n```json\n[\n {\n \"name\": \"clang-tidy\",\n \"regexp\": \"^(.+?):(\\\\d+):(\\\\d+):\\\\s+(warning|error|note):\\\\s+(.+?)\\\\s*(?:\\\\[(.+)\\\\])?$\",\n \"file\": 1,\n \"line\": 2,\n \"column\": 3,\n \"severity\": 4,\n \"message\": 5,\n \"code\": 6\n }\n]\n```\n\nI matcher personalizzati vengono eseguiti **dopo** i parser predefiniti (`gcc`, `msvc`, ecc.) per non interferire con le righe dei compilatori predefiniti.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.name": "Nome univoco per questo matcher, usato come etichetta dell'origine di diagnostica nel riquadro Problemi.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.regexp": "Espressione regolare da confrontare con ogni riga dell'output della compilazione.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.file": "Indice del gruppo di acquisizione per il percorso del file. Il valore predefinito è `1`.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.line": "Indice del gruppo di acquisizione per il numero di riga. Il valore predefinito è `2`.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.column": "Indice del gruppo di acquisizione per il numero di colonna. Facoltativo.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.group": "Indice del gruppo di acquisizione per la gravità (deve acquisire \"error\", \"warning\" o \"info\").", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.fixed": "Livello di gravità fisso da applicare a tutte le corrispondenze di questo modello.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.message": "Indice del gruppo di acquisizione per il messaggio di diagnostica. Il valore predefinito è `3`.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.code": "Indice del gruppo di acquisizione per un codice diagnostico facoltativo.", + "cmake-tools.configuration.cmake.debugConfig.description": "Configurazione di debug da usare durante il debug di una destinazione. Quando si specifica il valore `type`, la configurazione del debugger rilevata automaticamente viene ignorata e viene generata solo una configurazione di base minima (programma, cwd, nome) dalla destinazione. Tutte le altre proprietà vengono applicate da questa impostazione, permettendo il controllo completo della configurazione di avvio del debug per qualsiasi adattatore di debug.", + "cmake-tools.configuration.cmake.debugConfig.type.description": "Tipo di adattatore di debug da usare (ad esempio, `cppdbg`, `cppvsdbg`, `lldb`, `codelldb`). Se impostato, ignora il rilevamento automatico del debugger dalla cache CMake e usa direttamente questo tipo. Qualsiasi proprietà aggiuntiva richiesta dall'adattatore di debug può essere aggiunta a `#cmake.debugConfig#`.", "cmake-tools.configuration.cmake.debugConfig.symbolSearchPath.description": "Percorsi di ricerca simboli del debugger di Visual Studio.", "cmake-tools.configuration.cmake.debugConfig.additionalSOLibSearchPath.description": "Percorsi in cui GDB o LLDB cercano file con estensione so.", "cmake-tools.configuration.cmake.debugConfig.externalConsole.description": "Avvia una console esterna per il programma.", @@ -226,11 +248,13 @@ "cmake-tools.configuration.cmake.automaticReconfigure.description": "Configurare automaticamente le directory del progetto CMake quando il kit o il set di impostazioni di configurazione viene modificato.", "cmake-tools.configuration.cmake.pinnedCommands.description": "Elenco dei comandi di CMake da aggiungere sempre per impostazione predefinita. Verranno visualizzati nella sezione 'Comandi aggiunti' della barra laterale di CMake Tools.", "cmake-tools.configuration.cmake.enableAutomaticKitScan.description": "Abilitare l'analisi automatica dei kit quando non è selezionato un kit. Questa operazione avrà effetto solo quando i set di impostazioni di CMake non vengono usati.", + "cmake-tools.configuration.cmake.removeStaleKitsOnScan.description": "Remove compiler-based kits from the user kits file during a full kit scan when they are no longer rediscovered. Set \"keep\": true in a kit entry to preserve it.", "cmake-tools.configuration.cmake.enableLanguageServices.description": "Abilitare i servizi di linguaggio per i file CMake. Verrà abilitata l'evidenziazione della sintassi, il completamento del codice e altre funzionalità.", "cmake-tools.configuration.cmake.preRunCoverageTarget.description": "Destinazione da compilare prima dell'esecuzione dei test con copertura usando l'Editor elenco dei test", "cmake-tools.configuration.cmake.postRunCoverageTarget.description": "Destinazione da compilare dopo l'esecuzione dei test con copertura usando l'Editor elenco dei test", "cmake-tools.configuration.cmake.coverageInfoFiles.description": "File di informazioni di copertura LCOV da elaborare dopo l'esecuzione dei test con copertura usando l'Editor elenco dei test.", "cmake-tools.configuration.cmake.useFolderPropertyInBuildTargetDropdown.description": "Controlla se l'elenco a discesa della destinazione della build predefinita è raggruppato per i gruppi di cartelle di CMake.", + "cmake-tools.configuration.cmake.setBuildTargetSameAsLaunchTarget.description": "Se questa opzione è abilitata, l'impostazione della destinazione di avvio/debug imposta automaticamente la destinazione di compilazione in modo che corrisponda. È comunque possibile modificare la destinazione di compilazione in modo indipendente.", "cmake-tools.debugger.pipeName.description": "Nome della pipe (in Windows) o del socket di dominio (su Unix) da utilizzare per la comunicazione del debugger.", "cmake-tools.debugger.clean.description": "Pulisci prima di configurare.", "cmake-tools.debugger.configureAll.description": "Configura per tutti i progetti.", @@ -262,6 +286,7 @@ "cmake-tools.configuration.cmake.launchBehavior.breakAndReuseTerminal.markdownDescriptions": "L'istanza del terminale di avvio viene riutilizzata e viene inviato un comando `break` per terminare qualsiasi processo in primo piano attivo prima di avviare la destinazione.", "cmake-tools.configuration.cmake.launchBehavior.newTerminal.markdownDescriptions": "Viene creata una nuova istanza del terminale in cui viene avviata la destinazione. I terminali esistenti non vengono puliti automaticamente.", "cmake-tools.configuration.cmake.loadCompileCommands.description": "Controlla se l'estensione legge compile_commands.json per abilitare la compilazione di file singoli.", + "cmake-tools.configuration.cmake.outlineViewType.description": "Project Outline View`s type. Available options are: \"list\" and \"tree\".", "cmake-tools.command.cmake.projectStatus.update.title": "Aggiornare lo stato del progetto", "cmake-tools.command.cmake.pinnedCommands.add.title": "Aggiungi un comando CMake da bloccare", "cmake-tools.command.cmake.pinnedCommands.remove.title": "Sblocca comando", @@ -272,5 +297,33 @@ "cmake-tools.debugger.label": "CMake Debugger", "cmake-tools.command.cmake.appendBuildDirectoryToWorkspace.title": "Accodare la directory di compilazione all'area di lavoro corrente", "cmake-tools.command.workbench.action.tasks.configureTaskRunner.title": "Configurare attività", - "cmake-tools.command.workbench.action.tasks.runTask.title": "Esegui attività" + "cmake-tools.command.workbench.action.tasks.runTask.title": "Esegui attività", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.description": "Add source files to CMake lists when they are created.", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.no.description": "Do not automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.yes.description": "Automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.description": "Remove source files from CMake lists when they are deleted.", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.no.description": "Do not automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.yes.description": "Automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.markdownDescription": "How to choose which `set()` or `list(APPEND/PREPEND/INSERT)` command invocation to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.never.description": "Do not look for variable modification command invocations, only look for source command invocations.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askFirstParentDir.description": "Present a Quick Pick with options from the first `CMakeLists.txt` found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askParentDirs.description": "Present a Quick Pick with options from all `CMakeLists.txt` files found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.sourceVariables.markdownDescription": "Variables to add source files to. Variables appearing earlier in this list will be given higher priority. Only used if `#cmake.modifyLists.variableSelection#` is not `never`. Supports glob patterns.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.description": "How to choose which target to add new source files to when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askNearestSourceDir.description": "Present a Quick Pick with targets whose source directories are closest to location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askParentSourceDirs.description": "Present a Quick Pick with targets whose source directories contain the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.description": "How to choose which of a target's source command invocations to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askFirstParentDir.description": "Present a Quick Pick with options from the CMake list file in the parent directory closest to the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askParentDirs.description": "Present a Quick Pick with options from all CMake list files in the parent directories of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSourceCommands.markdownDescription": "Commands to treat as target source commands when adding source files CMake lists. Commands appearing earlier in this list will be given higher priority. Supports glob patterns.\r\n\r\nIf you are using the File API (see `#cmake.cmakeCommunicationMode#`), user-defined functions and macros which call the commands in this list are detected automatically and added to it.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.description": "How to choose which of a target's visibility scopes, file sets, or source keyword parameters to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.ask.description": "Present a Quick Pick with options from the selected target source command invocation.", + "cmake-tools.configuration.cmake.modifyLists.sourceListKeywords.markdownDescription": "Keyword arguments to user-defined functions and macros which introduce lists of source files. If left empty, all arguments consisting of only upper-case letters and underscores will be considered. Supports glob patterns.", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier" } \ No newline at end of file diff --git a/i18n/ita/schemas/kits-schema.json.i18n.json b/i18n/ita/schemas/kits-schema.json.i18n.json index 079e6040ca..be007a3735 100644 --- a/i18n/ita/schemas/kits-schema.json.i18n.json +++ b/i18n/ita/schemas/kits-schema.json.i18n.json @@ -17,9 +17,11 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Percorso di un file della toolchain", "schemas/kits-schema.json.items.properties.visualStudio": "Identificazione dell’istanza del prodotto Visual Studio", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Architettura da usare come destinazione", + "schemas/kits-schema.json.items.properties.visualStudioArguments": "Arguments to vcvarsall.bat", "schemas/kits-schema.json.items.properties.environmentSetupScript": "Percorso assoluto di uno script che modifica l'ambiente per il kit", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Valore della variabile di ambiente", - "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Valore dell'impostazione di CMake", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.0": "Valore dell'impostazione di CMake. I punti e virgola nelle stringhe sono preceduti da un carattere di escape.", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.1": "Valori uniti da punti e virgola per formare un elenco CMake senza caratteri di escape.", "schemas/kits-schema.json.items.properties.preferredGenerator": "Imposta un generatore CMake preferito per questo kit", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.name": "Nome del generatore da usare", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.platform": "Piattaforma CMake per l'argomento -A", diff --git a/i18n/ita/src/cmakeListsModifier.i18n.json b/i18n/ita/src/cmakeListsModifier.i18n.json new file mode 100644 index 0000000000..a3c9d1d6a2 --- /dev/null +++ b/i18n/ita/src/cmakeListsModifier.i18n.json @@ -0,0 +1,51 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "add.newly.created.files": "Add newly created files to CMakeLists.txt", + "error.processing.add.files": "Error processing added files", + "remove.deleted.file": "Remove a deleted file from CMakeLists.txt", + "error.processing.delete.files": "Error processing deleted files", + "add.file.no.code.model": "Adding a file without a valid code model", + "file.already.in.target": "{0} already in target {1}.", + "no.targets.found": "No targets found. {0} not added to build system.", + "no.source.command.invocations": "No source command invocations found. {0} not added to build system.", + "delete.file.no.code.model": "Deleting a file without a valid code model", + "not.modifying.unsaved.delete": "Not modifying {0} to delete {1} because it has unsaved changes.", + "add.to.which.variable": "CMake: Add {0} to which variable?", + "add.to.which.target": "CMake: Add {0} to which target?", + "add.to.which.invocation": "CMake: Add {0} to which command invocation of {1}?", + "add.to.which.scope.fileset.keyword": "CMake: Add {0} to which Scope, File Set, or Keyword?", + "open.file": "Open File", + "not.modifying.unsaved.files": "Cannot modify {0} because it has unsaved changes.", + "skipping.unsaved.files": "Skipping {0} file(s) with unsaved changes: {1}", + "edit.label.remove.source.file": "CMake: Remove deleted source file", + "edit.label.add.source.file": "CMake: Add new source file", + "edits.applied.successfully": "Successfully applied {0} CMake list edit(s).", + "edits.apply.failed": "Failed to apply CMake list edits: {0}", + "not.local.file.add": "{0} is not a local file. Not adding to CMake lists.", + "no.candidates.found": "No suitable locations found to add {0}.", + "not.modifying.unsaved.add": "Not modifying {0} to add {1} because it has unsaved changes.", + "not.local.file.remove": "{0} is not a local file. Not removing from CMake lists.", + "could.not.open.file": "Could not open file {0}: {1}", + "file.not.found.in.cmake.lists": "{0} not found in CMake lists.", + "file.already.in.destination": "{0} already in {1} at {2}:{3}", + "parse.error.examining.cmake.lists": "Parse error while examining CMakeLists.txt files. Details: {0}", + "could.not.open.cmake.lists": "Could not open {0}: {1}", + "parse.error.finding.invocations": "Parse error while finding command invocations to add to. CMake file modified since last configure? Details: {0}", + "unexpected.command.found": "Found \"{0}\", expected \"{1}\". CMake file modified since last configure? Details: {2}:{3}", + "scope.private.detail": "{0} will be used to build {1}", + "scope.public.detail": "{0} will be used to build both {1} and targets that use {1}", + "scope.interface.detail": "{0} will be used to build targets that use {1}", + "fileset.headers.detail": "{0} will be used via a language's #include mechanism", + "fileset.cxx.modules.detail": "{0} contains C++ interface module or partition units.", + "label.fileset": "{0} File Set", + "label.scope": "{0} Scope", + "fileset.type": "Type: {0}", + "scope.with.fileset.detail": "{0} Scope: {1}", + "keyword.of.command": "Keyword of {0} command", + "command.label": "{0} Command", + "add.to.command.arguments": "Add {0} to the list of arguments to {1} command" +} \ No newline at end of file diff --git a/i18n/ita/src/cmakeProject.i18n.json b/i18n/ita/src/cmakeProject.i18n.json index a36ae416a5..2737dd2df8 100644 --- a/i18n/ita/src/cmakeProject.i18n.json +++ b/i18n/ita/src/cmakeProject.i18n.json @@ -9,6 +9,7 @@ "generator.changed.restart.driver": "Riavvio del driver di CMake dopo una modifica del generatore.", "preferredGenerator.changed.restart.driver": "Riavvio del driver di CMake dopo una modifica di preferredGenerators.", "bad.executable": "Eseguibile CMake non valido: {0}. Verificare che sia installato o che il valore dell'impostazione {1} contenga il percorso corretto", + "shell.changed.restart.driver": "Riavvio del driver di CMake dopo una modifica della shell.", "targests.in.preset": "[Targets In Preset]", "constructing.cmakeproject": "Costruzione di una nuova istanza di CMakeProject in corso", "disposing.driver": "Eliminazione unità CMake", @@ -142,9 +143,9 @@ "configure.now.button": "Configura ora", "cache.load.failed": "Non è stato trovato alcun file CMakeCache.txt. Configurare prima il progetto.", "set.up.before.selecting.target": "Configurare il progetto CMake prima di selezionare una destinazione.", - "select.active.target.tooltip": "Selezionare la destinazione di compilazione predefinita", "enter.target.name": "Immetti un nome di destinazione", "target.to.build.description": "Destinazione per la compilazione", + "select.active.target.tooltip": "Selezionare la destinazione di compilazione predefinita", "build.failed": "Compilazione non riuscita.", "driver.died.after.build.succeeded": "Il driver di CMake è stato arrestato subito dopo il completamento della compilazione.", "driver.died.before.workflow": "Il driver CMake è stato eliminato prima di avviare il flusso di lavoro.", @@ -167,6 +168,7 @@ "target.debugging.unsupported": "Il debug della destinazione non è più supportato con il driver legacy", "learn.more.button": "Altre informazioni", "failed.to.prepare.target": "Non è stato possibile preparare la destinazione dell'eseguibile denominata {0}", + "debug.configuration.from.settings": "Configurazione di debug dalle impostazioni utente: {0}", "debug.configuration.from.cache": "Esegui il debug della configurazione dalla cache: {0}", "problem.getting.debug": "Si è verificato un problema durante il recupero della configurazione di debug dalla cache.", "starting.debugger.with": "Avvio del debugger con la configurazione seguente.", diff --git a/i18n/ita/src/ctest.i18n.json b/i18n/ita/src/ctest.i18n.json index ea6f980ed7..68f93c2404 100644 --- a/i18n/ita/src/ctest.i18n.json +++ b/i18n/ita/src/ctest.i18n.json @@ -27,6 +27,13 @@ "test.buildingPostRunCoverageTarget": "Compilazione di postRunCoverageTarget ''{0}'' nel progetto {1} dopo l'esecuzione dei test con copertura.", "test.postRunCoverageTargetFailure": "La compilazione della destinazione postRunCoverageTarget nel progetto in {0} non è riuscita. La gestione dei dati di copertura verrà ignorata.", "test.skip.run.build.failure": "Non è possibile eseguire i test a causa di un errore di compilazione.", + "debug.without.launch.config": "Eseguire il debug senza configurazione di avvio", + "choose.debug.method": "Scegliere come eseguire il debug del test.", + "yes": "Sì", + "no": "No", + "never.debug.with.launch.prompt": "Si desidera eseguire sempre il debug dei test senza una configurazione di avvio in quest'area di lavoro?", + "no.launch.config": "Non sono state trovate configurazioni di avvio.", + "choose.launch.config": "Scegliere una configurazione di avvio con cui eseguire il debug del test.", "test.skip.debug.build.failure": "Non è possibile eseguire il debug dei test a causa di un errore di compilazione.", "build.failed": "Compilazione non riuscita", "run.tests.profile": "Esegui i test", diff --git a/i18n/ita/src/drivers/cmakeDriver.i18n.json b/i18n/ita/src/drivers/cmakeDriver.i18n.json index 6bfdd3d90e..ef781a0fb2 100644 --- a/i18n/ita/src/drivers/cmakeDriver.i18n.json +++ b/i18n/ita/src/drivers/cmakeDriver.i18n.json @@ -5,13 +5,14 @@ // Do not edit this file. It is machine generated. { "no.usable.generator.found": "Non è stato trovato alcun generatore utilizzabile.", - "user.closed.file.compilation.terminal": "L'utente ha chiuso un terminale di compilazione file", "disposing.base.cmakedriver": "Eliminazione di CMakeDriver di base", "async.disposing.cmake.driver": "Eliminazione asincrona del driver CMake", "test.with.overrides": "NOTA: il test viene eseguito con il set di impostazioni {0}, ma vengono applicate alcune sostituzioni dalle impostazioni di VS Code.", "package.with.overrides": "NOTA: stai creando pacchetti con il set di impostazioni {0}, ma vengono applicate alcune sostituzioni dalle impostazioni di VS Code.", "compile.with.overrides": "NOTA: si sta compilando con i set di impostazioni {0}, ma sono state applicate alcune sostituzioni dalle impostazioni di VS Code.", "file.compilation": "Compilazione file", + "compile.finished.with.error": "Compilazione terminata con errori.", + "compile.finished.successfully": "Compilazione completata.", "removing": "Rimozione di {0}", "unlink.failed": "Non è stato possibile rimuovere il file di cache {0}", "switching.to.config.preset": "Passaggio al set di impostazioni di configurazione: {0}", diff --git a/i18n/ita/src/extension.i18n.json b/i18n/ita/src/extension.i18n.json index 85be44b09d..ad1b9e2fc4 100644 --- a/i18n/ita/src/extension.i18n.json +++ b/i18n/ita/src/extension.i18n.json @@ -11,10 +11,11 @@ "configure.now.button": "Configura ora", "configure.recommended": "È consigliabile riconfigurare dopo l'aggiornamento a una nuova definizione dei kit.", "using.cache.to.configure.workspace.on.open": "Tentativo di usare la cache per configurare l'area di lavoro {0}", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier", + "failed.to.open.cache.file.on.code.model.update": "Failed to open CMake cache file on code model update", "update.code.model.for.cpptools": "Aggiorna il modello di codice per cpptools", "update.intellisense.disabled": "Il provider di configurazione non verrà aggiornato perché {0} è impostato su {1}", "failed.to.get.cpptools.api": "Non è stato possibile ottenere l'API cppTools", - "filed.to.open.cache.file.on.code.model.update": "Non è stato possibile aprire il file di cache di CMake durante l'aggiornamento del modello di codice", "opening.text.editor.for": "Apertura dell'editor di testo per {0}", "no.kits.file.what.to.do": "Non sono presenti file dei kit. Specificare l'operazione da eseguire.", "scan.for.kits.button": "Cerca kit", @@ -49,6 +50,7 @@ "cmake.finished.returned.unserializable": "{0} terminato (ha restituito un valore non serializzabile)", "loading.extension.commands": "Caricamento dei comandi dell'estensione", "register.command": "Registra il comando {0} dell'estensione CMakeTools", + "bookmark.target.not.resolved": "Non è possibile risolvere il segnalibro \"{0}\" in una destinazione. Potrebbe essere necessario riconfigurare il progetto.", "search.project.outline": "Immettere un termine di ricerca per filtrare la struttura del progetto", "added.to": "aggiunto a", "removed.from": "rimosso da", diff --git a/i18n/ita/src/proc.i18n.json b/i18n/ita/src/proc.i18n.json index d0d47e76dd..8cb306514d 100644 --- a/i18n/ita/src/proc.i18n.json +++ b/i18n/ita/src/proc.i18n.json @@ -6,11 +6,11 @@ { "executing.command": "Esecuzione del comando: {0}", "execution.environment": " con ambiente: {0}", - "process.error": "Il comando: {0} non è riuscito con errore: {1} stack: {2}", - "process.exit.with.signal": "Uscita dal comando: {0} con codice: {1} e segnale: {2} stack: {3}", - "process.exit": "Uscita dal comando: {0} con codice: {1} stack: {2}", - "process.exit.stdout": "Output del comando in caso di output standard: {0} stack: {1}", - "process.exit.stderr": "Output del comando in caso di errore standard: {0} stack: {1}", + "process.error": "Il comando: {0} non è riuscito con errore: {1}", + "process.exit.with.signal": "Il comando: {0} è terminato con codice: {1} e segnale: {2}", + "process.exit": "Uscita dal comando {0} con codice: {1}.", + "process.exit.stdout": "Output del comando in caso di output standard: {0}", + "process.exit.stderr": "Output del comando in caso di errore standard: {0}", "processing.data.event.stdout": "Elaborazione dell'evento {0} di proc stdout", "processing.data.event.stderr": "Elaborazione dell'evento {0} di proc stderr", "resolving.close.event": "Risoluzione del processo dopo l'evento {0}" diff --git a/i18n/ita/src/util.i18n.json b/i18n/ita/src/util.i18n.json index 4784825fb7..b01ed080e1 100644 --- a/i18n/ita/src/util.i18n.json +++ b/i18n/ita/src/util.i18n.json @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "invalid.value": "Valore non valido da convertire in valore cmake: {0}", "invalid.version.string": "La stringa di versione {0} non è valida", "extension.is.undefined": "L'estensione non è definita.", "sourcedirectory.not.a.directory": "\"sourceDirectory\" non è una directory" diff --git a/i18n/jpn/assets/policies.json.i18n.json b/i18n/jpn/assets/policies.json.i18n.json new file mode 100644 index 0000000000..d15e76f928 --- /dev/null +++ b/i18n/jpn/assets/policies.json.i18n.json @@ -0,0 +1,212 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "assets/policies.json.CMP0000": "CMake の最小必須バージョンを指定する必要があります。", + "assets/policies.json.CMP0001": "CMAKE_BACKWARDS_COMPATIBILITY は、もはや使用すべきではありません。", + "assets/policies.json.CMP0002": "論理ターゲット名はグローバルに一意である必要があります。", + "assets/policies.json.CMP0003": "完全パスを介してリンクされたライブラリでは、リンカー検索パスが生成されなくなりました。", + "assets/policies.json.CMP0004": "リンクされるライブラリ名の先頭または末尾に空白を含めることはできません。", + "assets/policies.json.CMP0005": "プリプロセッサ定義の値は自動的にエスケープされるようになりました。", + "assets/policies.json.CMP0006": "MACOSX_BUNDLE ターゲットをインストールするには、BUNDLE DESTINATION を指定する必要があります。", + "assets/policies.json.CMP0007": "list コマンドは空の要素を無視しなくなりました。", + "assets/policies.json.CMP0008": "完全パスでリンクされたライブラリは有効なライブラリ ファイル名を持っている必要があります。", + "assets/policies.json.CMP0009": "FILE GLOB_RECURSE の呼び出しでは、デフォルトでシンボリックリンクをたどるべきではありません。", + "assets/policies.json.CMP0010": "不正な変数参照構文はエラーです。", + "assets/policies.json.CMP0011": "include されたスクリプトは自動的に cmake_policy の PUSH と POP を行います。", + "assets/policies.json.CMP0012": "if は数値とブール定数を認識します。", + "assets/policies.json.CMP0013": "重複するバイナリ ディレクトリは許可されません。", + "assets/policies.json.CMP0014": "入力ディレクトリには CMakeLists.txt が必要です。", + "assets/policies.json.CMP0015": "link_directories はパスをソース ディレクトリからの相対パスとして扱います。", + "assets/policies.json.CMP0016": "target_link_libraries は唯一の引数がターゲットでない場合にエラーを報告します。", + "assets/policies.json.CMP0017": "CMake モジュール ディレクトリから include する場合は、そこにあるファイルを優先します。", + "assets/policies.json.CMP0018": "CMAKE_SHARED_LIBRARY__FLAGS 変数を無視します。", + "assets/policies.json.CMP0019": "include および link 情報内の変数を再展開しないでください。", + "assets/policies.json.CMP0020": "Windows では Qt 実行可能ファイルを qtmain ターゲットに自動的にリンクします。", + "assets/policies.json.CMP0021": "INCLUDE_DIRECTORIES ターゲットプロパティで相対パスを使用すると致命的なエラーが発生します。", + "assets/policies.json.CMP0022": "INTERFACE_LINK_LIBRARIES はリンク インターフェイスを定義します。", + "assets/policies.json.CMP0023": "プレーンおよびキーワードの target_link_libraries シグネチャを混在させることはできません。", + "assets/policies.json.CMP0024": "export の結果の include を許可しません。", + "assets/policies.json.CMP0025": "Apple Clang のコンパイラ ID は AppleClang になりました。", + "assets/policies.json.CMP0026": "ビルド ターゲットに LOCATION プロパティを使用することを許可しません。", + "assets/policies.json.CMP0027": "インクルード ディレクトリが見つからない条件付きでリンクされたインポート ターゲット。", + "assets/policies.json.CMP0028": "ターゲット名の二重コロンは ALIAS または IMPORTED ターゲットを意味します。", + "assets/policies.json.CMP0029": "subdir_depends コマンドを呼び出さないでください。", + "assets/policies.json.CMP0030": "use_mangled_mesa コマンドを呼び出さないでください。", + "assets/policies.json.CMP0031": "load_command コマンドを呼び出さないでください。", + "assets/policies.json.CMP0032": "output_required_files コマンドを呼び出さないでください。", + "assets/policies.json.CMP0033": "export_library_dependencies コマンドを呼び出さないでください。", + "assets/policies.json.CMP0034": "utility_source コマンドを呼び出さないでください。", + "assets/policies.json.CMP0035": "variable_requires コマンドを呼び出さないでください。", + "assets/policies.json.CMP0036": "build_name コマンドを呼び出さないでください。", + "assets/policies.json.CMP0037": "ターゲット名は予約名であってはならず、有効なパターンに一致する必要があります。", + "assets/policies.json.CMP0038": "ターゲットは自身に直接リンクできません。", + "assets/policies.json.CMP0039": "ユーティリティ ターゲットはリンク依存関係を持つことができません。", + "assets/policies.json.CMP0040": "add_custom_command の TARGET シグネチャのターゲットは存在し、現在のディレクトリで定義されている必要があります。", + "assets/policies.json.CMP0041": "ジェネレーター式を使用した相対インクルードでエラーになります。", + "assets/policies.json.CMP0042": "MACOSX_RPATH は既定で有効です。", + "assets/policies.json.CMP0043": "COMPILE_DEFINITIONS_ プロパティを無視します", + "assets/policies.json.CMP0044": "大文字と小文字を区別する _COMPILER_ID ジェネレーター式", + "assets/policies.json.CMP0045": "get_target_property で存在しないターゲットに対するエラーです。", + "assets/policies.json.CMP0046": "add_dependencies の存在しない依存関係でエラーになります。", + "assets/policies.json.CMP0047": "QNX の qcc ドライバーには QCC コンパイラ ID を使用します。", + "assets/policies.json.CMP0048": "project コマンドは VERSION 変数を管理します。", + "assets/policies.json.CMP0049": "ターゲット ソース エントリ内の変数を展開しないでください。", + "assets/policies.json.CMP0050": "add_custom_command の SOURCE シグネチャを許可しません。", + "assets/policies.json.CMP0051": "TARGET_OBJECTS を SOURCES ターゲット プロパティに一覧表示します。", + "assets/policies.json.CMP0052": "インストールされた INTERFACE_INCLUDE_DIRECTORIES に含まれるソース ディレクトリとビルド ディレクトリを拒否します。", + "assets/policies.json.CMP0053": "変数参照とエスケープ シーケンスの評価を簡略化します。", + "assets/policies.json.CMP0054": "引用符で囲まれていない場合のみ、if 引数を変数またはキーワードとして解釈します。", + "assets/policies.json.CMP0055": "break コマンドの厳密なチェック。", + "assets/policies.json.CMP0056": "try_compile のソース ファイル シグネチャでリンク フラグを尊重します。", + "assets/policies.json.CMP0057": "新しい if IN_LIST 演算子をサポートします。", + "assets/policies.json.CMP0058": "Ninja ではカスタム コマンドの副生成物を明示する必要があります。", + "assets/policies.json.CMP0059": "DEFINITIONS を組み込みディレクトリ プロパティとして扱わないでください。", + "assets/policies.json.CMP0060": "暗黙的なディレクトリ内であっても、完全なパスでライブラリをリンクします。", + "assets/policies.json.CMP0061": "CTest は既定では make にエラーを無視するよう (-i) 指示しません。", + "assets/policies.json.CMP0062": "export の結果の install を許可しません。", + "assets/policies.json.CMP0063": "すべてのターゲットの種類で可視性プロパティを尊重します。。", + "assets/policies.json.CMP0064": "TEST を if コマンドの演算子として認識します。", + "assets/policies.json.CMP0065": "ENABLE_EXPORTS ターゲット プロパティがない実行可能ファイルからシンボルをエクスポートするフラグを追加しないでください。", + "assets/policies.json.CMP0066": "try_compile のソース ファイル シグネチャで構成ごとのフラグを尊重します。", + "assets/policies.json.CMP0067": "try_compile のソース ファイル シグネチャで言語標準を尊重します。", + "assets/policies.json.CMP0068": "macOS の RPATH 設定は install_name に影響しません。", + "assets/policies.json.CMP0069": "INTERPROCEDURAL_OPTIMIZATION は有効化されている場合に適用されます。", + "assets/policies.json.CMP0070": "相対パスのファイル動作を定義します。", + "assets/policies.json.CMP0071": "AUTOMOC と AUTOUIC が GENERATED ファイルを処理できるようにします。", + "assets/policies.json.CMP0072": "FindOpenGL は利用可能な場合、既定で GLVND を優先します。", + "assets/policies.json.CMP0073": "レガシーの _LIB_DEPENDS キャッシュ エントリを生成しません。", + "assets/policies.json.CMP0074": "find_package は _ROOT 変数を使用します。", + "assets/policies.json.CMP0075": "インクルード ファイル チェック マクロは CMAKE_REQUIRED_LIBRARIES を尊重します。", + "assets/policies.json.CMP0076": "target_sources コマンドは相対パスを絶対パスに変換します。", + "assets/policies.json.CMP0077": "option は通常の変数を尊重します。", + "assets/policies.json.CMP0078": "UseSWIG は標準のターゲット名を生成します。", + "assets/policies.json.CMP0079": "target_link_libraries は他のディレクトリのターゲットでの使用を許可します。", + "assets/policies.json.CMP0080": "BundleUtilities は構成時に include できません。", + "assets/policies.json.CMP0081": "LINK_DIRECTORIES ターゲット プロパティでは相対パスは許可されません。", + "assets/policies.json.CMP0082": "add_subdirectory 呼び出しのインストール ルールは、呼び出し元のルールと交互に処理されます。", + "assets/policies.json.CMP0083": "位置独立実行可能ファイル (PIE) の生成を制御するには、リンク時にいくつかのフラグが必要です。", + "assets/policies.json.CMP0084": "FindQt モジュールは find_package 用には存在しません。", + "assets/policies.json.CMP0085": "$ は空のリスト項目を処理します。", + "assets/policies.json.CMP0086": "UseSWIG は -module フラグを通じて SWIG_MODULE_NAME を尊重します。", + "assets/policies.json.CMP0087": "install および install はジェネレーター式をサポートします。", + "assets/policies.json.CMP0088": "FindBISON は実行時に CMAKE_CURRENT_BINARY_DIR で bison を実行します。", + "assets/policies.json.CMP0089": "IBM の Clang ベースの XL コンパイラのコンパイラ ID は XLClang になりました。", + "assets/policies.json.CMP0090": "export は既定ではパッケージ レジストリを登録しません。", + "assets/policies.json.CMP0091": "MSVC ランタイム ライブラリ フラグは抽象化によって選択されます。", + "assets/policies.json.CMP0092": "MSVC の警告フラグは、デフォルトでは CMAKE__FLAGS に含まれません。", + "assets/policies.json.CMP0093": "FindBoost は Boost_VERSION を x.y.z 形式で報告します。", + "assets/policies.json.CMP0094": "FindPython3、FindPython2、および FindPython モジュールは、検索戦略に LOCATION を使用します。", + "assets/policies.json.CMP0095": "RPATH エントリは中間の CMake インストール スクリプトで適切にエスケープされます。", + "assets/policies.json.CMP0096": "project コマンドは、バージョンコンポーネントの先頭のゼロを保持します。", + "assets/policies.json.CMP0097": "GIT_SUBMODULES \"\" を指定した ExternalProject_Add はサブモジュールを初期化しません。", + "assets/policies.json.CMP0098": "FindFLEX は実行時にディレクトリ CMAKE_CURRENT_BINARY_DIR で flex を実行します。", + "assets/policies.json.CMP0099": "リンク プロパティは、静的ライブラリのプライベート依存関係に対して推移的です。", + "assets/policies.json.CMP0100": "AUTOMOC と AUTOUIC が .hh 拡張子で終わるヘッダー ファイルを処理できるようにします。", + "assets/policies.json.CMP0101": "target_compile_options は、常に BEFORE キーワードを尊重するようになりました。", + "assets/policies.json.CMP0102": "mark_as_advanced コマンドは、既存のキャッシュ エントリがない場合、新しいキャッシュ エントリを作成しなくなりました。", + "assets/policies.json.CMP0103": "同じ FILE を指定して APPEND を使用しない export コマンドの複数回の呼び出しは、もはや許可されません。", + "assets/policies.json.CMP0104": "CMAKE_CUDA_COMPILER_ID _COMPILER_ID> が NVIDIA の場合、CMAKE_CUDA_ARCHITECTURES を初期化します。CUDA_ARCHITECTURES が空の場合はエラーを発生させます。", + "assets/policies.json.CMP0105": "LINK_OPTIONS および INTERFACE_LINK_OPTIONS ターゲット プロパティは、デバイス リンク ステップで使用されるようになりました。", + "assets/policies.json.CMP0106": "Documentation モジュールは削除されました。", + "assets/policies.json.CMP0107": "別のターゲットと同じ名前で ALIAS ターゲットを作成することは許可されていません。", + "assets/policies.json.CMP0108": "ターゲットは、ALIAS ターゲットを介した場合でも自分自身にリンクすることは許可されません。", + "assets/policies.json.CMP0109": "find_program は読み取り権限ではなく実行権限を必要とします。", + "assets/policies.json.CMP0110": "add_test はテスト名で任意の文字をサポートします。", + "assets/policies.json.CMP0111": "location プロパティが欠けているインポートされたターゲットは、生成時に失敗します。", + "assets/policies.json.CMP0112": "Target file コンポーネント ジェネレーター式は、ターゲット依存関係を追加しません。", + "assets/policies.json.CMP0113": "Makefile ジェネレーターは、ターゲット依存関係からのカスタム コマンドを繰り返し実行しません。", + "assets/policies.json.CMP0114": "ExternalProject のステップ ターゲットはそれらのステップを完全に採用します。", + "assets/policies.json.CMP0115": "ソースファイルの拡張子は明示的に指定する必要があります。", + "assets/policies.json.CMP0116": "Ninja ジェネレーターは add_custom_command の DEPFILE を変換します。", + "assets/policies.json.CMP0117": "MSVC の RTTI フラグ/GR は既定で CMAKE_CXX_FLAGS _FLAGS> に追加されません。", + "assets/policies.json.CMP0118": "GENERATED ソースは、手動で指定しなくてもディレクトリ間で使用できます。", + "assets/policies.json.CMP0119": "LANGUAGE ソース ファイル プロパティは、指定された言語として明示的にコンパイルします。", + "assets/policies.json.CMP0120": "WriteCompilerDetectionHeader モジュールは削除されました。", + "assets/policies.json.CMP0121": "list コマンドは無効なインデックスを検出するようになりました。", + "assets/policies.json.CMP0122": "UseSWIG は CSharp 言語のライブラリ名の規則を使用します。", + "assets/policies.json.CMP0123": "ARMClang の cpu/arch コンパイル フラグおよびリンク フラグは、明示的に設定する必要があります。", + "assets/policies.json.CMP0124": "foreach ループ変数は、ループのスコープ内でのみ使用できます。", + "assets/policies.json.CMP0125": "find_file、find_path、find_library、find_program コマンドは、最初の引数で指定された変数に結果をキャッシュします。CMake 3.21 より前では、その名前のキャッシュ変数が呼び出し前に既に存在しており、かつキャッシュ変数に型がない場合、同名の非キャッシュ変数は破棄され、常にキャッシュ変数が使用されました (異なるが類似した動作については CMP0126 も参照してください)。これは、同名のキャッシュ変数よりも非キャッシュ変数が優先されるべきという慣例に反します。このような状況は、ユーザーがコマンドラインで型を指定せずにキャッシュ変数を設定した場合に発生することがあります。たとえば、cmake -DMYVAR:FILEPATH=blah の代わりに cmake -DMYVAR=blah ... を使用した場合です。", + "assets/policies.json.CMP0126": "このポリシーが NEW に設定されている場合、set コマンドは現在のスコープから同名の通常の変数を削除しません。OLD の動作では、次の状況で現在のスコープから同名の通常の変数が削除されます。", + "assets/policies.json.CMP0127": "cmake_dependent_option は完全な Condition 構文をサポートします。", + "assets/policies.json.CMP0128": "このポリシーが NEW に設定されている場合:", + "assets/policies.json.CMP0129": "MCST LCC コンパイラのコンパイラ ID は、GNU ではなく LCC になりました。", + "assets/policies.json.CMP0130": "while は条件評価エラーを診断します。", + "assets/policies.json.CMP0131": "LINK_LIBRARIES は :genex:`$` ジェネレーター式をサポートします。", + "assets/policies.json.CMP0132": "最初の実行時にコンパイラの環境変数を設定しません。", + "assets/policies.json.CMP0133": "CPack モジュールは、CPack DragNDrop ジェネレーターで既定では SLA を無効にします。", + "assets/policies.json.CMP0134": "find_file、find_path、find_library、find_package コマンドの既定のレジストリビューは TARGET であり、find_program コマンドでは BOTH です。", + "assets/policies.json.CMP0135": "ExternalProject_Add または FetchContent_Declare コマンドで URL ダウンロード方法を使用する場合、CMake 3.23 以前では、展開された内容のタイムスタンプはアーカイブ内のタイムスタンプと同じに設定されます。URL が変更されると新しいアーカイブがダウンロードおよび展開されますが、展開された内容のタイムスタンプが以前の内容より新しくならない場合があります。展開された内容に依存するものは、内容が変更されていても再ビルドされない場合があります。", + "assets/policies.json.CMP0136": "Watcom ランタイム ライブラリ フラグは、抽象化によって選択されます。", + "assets/policies.json.CMP0137": "try_compile は、プロジェクト モードでプラットフォーム変数を渡します。", + "assets/policies.json.CMP0138": "CheckIPOSupported は呼び出し元プロジェクトのフラグを使用します。", + "assets/policies.json.CMP0139": "if コマンドは PATH_EQUAL 演算子を使用したパス比較をサポートします。", + "assets/policies.json.CMP0140": "return コマンドはそのパラメーターを検証します。", + "assets/policies.json.CMP0141": "MSVC デバッグ情報形式フラグは、抽象化によって選択されます。", + "assets/policies.json.CMP0142": "Xcode ジェネレーターはライブラリ検索パスに構成ごとのサフィックスを追加しません。", + "assets/policies.json.CMP0143": "USE_FOLDERS グローバル プロパティは、既定で ON として扱われます。", + "assets/policies.json.CMP0144": "find_package は大文字の _ROOT 変数を使用します。", + "assets/policies.json.CMP0145": "Dart モジュールおよび FindDart モジュールは削除されました。", + "assets/policies.json.CMP0146": "FindCUDA モジュールは削除されました。", + "assets/policies.json.CMP0147": "Visual Studio ジェネレーターはカスタムコマンドを並列でビルドします。", + "assets/policies.json.CMP0148": "FindPythonInterp モジュールと FindPythonLibs モジュールは削除されました。", + "assets/policies.json.CMP0149": "Visual Studio ジェネレーターは既定で最新の Windows SDK を選択します。", + "assets/policies.json.CMP0150": "ExternalProject_Add および FetchContent_Declare コマンドは、相対的な GIT_REPOSITORY パスを親プロジェクトのリモートを基準としたものとして扱います。", + "assets/policies.json.CMP0151": "AUTOMOC のインクルード ディレクトリは、デフォルトでシステム インクルード ディレクトリです。", + "assets/policies.json.CMP0152": "file は ../ コンポーネントを折りたたむ前にシンボリック リンクを解決します。", + "assets/policies.json.CMP0153": "exec_program コマンドは呼び出してはなりません。", + "assets/policies.json.CMP0154": "file set を使用するターゲットでは、生成されたファイルは既定で private になります。", + "assets/policies.json.CMP0155": "少なくとも C++20 を使用するターゲットの C++ ソースは、サポートされている場合に import のスキャンが行われます。", + "assets/policies.json.CMP0156": "リンカーの機能に基づいて、リンク行のライブラリを重複排除します。", + "assets/policies.json.CMP0157": "Swift コンパイル モードは抽象化によって選択されます。", + "assets/policies.json.CMP0158": "add_test は、クロスコンパイル時にのみ CMAKE_CROSSCOMPILING_EMULATOR を尊重します。", + "assets/policies.json.CMP0159": "REGEX を使用する file は CMAKE_MATCH_ を更新します。", + "assets/policies.json.CMP0160": "より多くの読み取り専用ターゲット プロパティは、設定しようとするとエラーになります。", + "assets/policies.json.CMP0161": "CPACK_PRODUCTBUILD_DOMAINS 変数の既定値は true です。", + "assets/policies.json.CMP0162": "Visual Studio ジェネレーターは、既定で UseDebugLibraries インジケーターを追加します。", + "assets/policies.json.CMP0163": "GENERATED ソース ファイル プロパティは、すべてのディレクトリで表示されるようになりました。", + "assets/policies.json.CMP0164": "add_library は、プラットフォームでサポートされていない場合、SHARED ライブラリを拒否します。", + "assets/policies.json.CMP0165": "enable_language は project より前に呼び出してはなりません。", + "assets/policies.json.CMP0166": "TARGET_PROPERTY は静的ライブラリの private 依存関係に対しても推移的にリンク プロパティを評価します。", + "assets/policies.json.CMP0167": "FindBoost モジュールは削除されました。", + "assets/policies.json.CMP0168": "FetchContent モジュールは、サブビルドを介さずにステップを直接実装します。", + "assets/policies.json.CMP0169": "FetchContent_Populate を単一の引数 (宣言された依存関係の名前) で呼び出すことは非推奨です。", + "assets/policies.json.CMP0170": "FETCHCONTENT_FULLY_DISCONNECTED が true に設定されている場合、FetchContent_MakeAvailable と FetchContent_Populate は、ソース ディレクトリがすでに展開済みであるという制約を強制します。この要件は常に文書化されていましたが、CMake 3.29 以前ではチェックも強制もされていませんでした。これにより、プロジェクトが依存関係が展開されていることを期待しているにもかかわらず、その展開が黙ってスキップされることで、原因を特定しにくいエラーが発生する場合がありました。", + "assets/policies.json.CMP0171": "codegen は予約されたターゲット名です。", + "assets/policies.json.CMP0172": "CPack モジュールは、CPack WIX ジェネレーターで既定によりマシン単位のインストールを有効にします。", + "assets/policies.json.CMP0173": "CMakeFindFrameworks モジュールは削除されました。", + "assets/policies.json.CMP0174": "cmake_parse_arguments は、単一値キーワードの後に空文字列がある場合でも変数を定義します。", + "assets/policies.json.CMP0175": "add_custom_command は無効な引数を拒否します。", + "assets/policies.json.CMP0176": "execute_process の ENCODING は既定で UTF-8 です。", + "assets/policies.json.CMP0177": "install の DESTINATION パスは正規化されます。", + "assets/policies.json.CMP0178": "test コマンド ラインは空の引数を保持します。", + "assets/policies.json.CMP0179": "リンク行における静的ライブラリの重複除去では、最初の出現が保持されます。このポリシーは、ポリシー CMP0156 が NEW に設定されている場合にのみ関連します。", + "assets/policies.json.CMP0180": "project は常に _* を通常変数として設定します。", + "assets/policies.json.CMP0181": "CMAKE_EXE_LINKER_FLAGS、CMAKE_EXE_LINKER_FLAGS_、CMAKE_SHARED_LINKER_FLAGS、CMAKE_SHARED_LINKER_FLAGS_、CMAKE_MODULE_LINKER_FLAGS、CMAKE_MODULE_LINKER_FLAGS_ 変数は解析されて再クォートされ、LINKER: プレフィックスをサポートします。", + "assets/policies.json.CMP0182": "AIX では既定で共有ライブラリ アーカイブを作成します。", + "assets/policies.json.CMP0183": "add_feature_info は完全な Condition 構文をサポートします。", + "assets/policies.json.CMP0184": "MSVC ランタイム チェック フラグは、抽象化によって選択されます。", + "assets/policies.json.CMP0185": "FindRuby は、もはや大文字の RUBY_* 変数を提供しません。", + "assets/policies.json.CMP0186": "正規表現は、繰り返し検索において ^ を最大 1 回だけ一致させます。", + "assets/policies.json.CMP0187": "拡張子付きの同名ファイルの後に、拡張子なしのソース ファイルをインクルードします。", + "assets/policies.json.CMP0188": "FindGCCXML モジュールは削除されました。", + "assets/policies.json.CMP0189": "TARGET_PROPERTY は LINK_LIBRARIES プロパティを推移的に評価します。", + "assets/policies.json.CMP0190": "FindPython3、FindPython2、および FindPython モジュールは、クロスコンパイル モードにおいてアーティファクトの整合性を強制します。", + "assets/policies.json.CMP0191": "FindCABLE モジュールは削除されました。", + "assets/policies.json.CMP0192": "GNUInstallDirs は、特別なプレフィックスにおいて SYSCONFDIR、LOCALSTATEDIR、RUNSTATEDIR に絶対パスを使用します。", + "assets/policies.json.CMP0193": "GNUInstallDirs は install prefix が / の場合、先頭に usr/ を付けて CMAKE_INSTALL_* をキャッシュします。", + "assets/policies.json.CMP0194": "MSVC は言語 ASM のアセンブラーではありません。", + "assets/policies.json.CMP0195": "ビルド ツリー内の Swift モジュールは、Swift モジュール ディレクトリ構造を使用します。", + "assets/policies.json.CMP0196": "CMakeDetermineVSServicePack モジュールは削除されました。", + "assets/policies.json.CMP0197": "MSVC のリンク -machine: フラグは CMAKE_*_LINKER_FLAGS に含まれません。", + "assets/policies.json.CMP0198": "CMakeLists.txt では CMAKE_PARENT_LIST_FILE は定義されません。", + "assets/policies.json.CMP0199": ":genex:`$` は、選択されていないマップ済み構成とは一致しません。", + "assets/policies.json.CMP0200": "インポートされたターゲットの場所と構成の選択がより一貫したものになりました。", + "assets/policies.json.CMP0201": "Python::NumPy は Python::Development.Module に依存しません。", + "assets/policies.json.CMP0202": "PDB ファイル名には常にターゲットの構成ごとの POSTFIX が含まれます。", + "assets/policies.json.CMP0203": "MSVC ABI をターゲットとする共有ライブラリでは _WINDLL が定義されます。", + "assets/policies.json.CMP0204": "MSVC ABI をターゲットとする場合、文字セットは常に定義されます。" +} \ No newline at end of file diff --git a/i18n/jpn/package.i18n.json b/i18n/jpn/package.i18n.json index b70d5b136f..2601d294d9 100644 --- a/i18n/jpn/package.i18n.json +++ b/i18n/jpn/package.i18n.json @@ -4,6 +4,8 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "cmake-tools.command.cmake.addFileToCMakeLists.title": "Add File to CMake Lists", + "cmake-tools.command.cmake.removeFileFromCMakeLists.title": "Remove File from CMake Lists", "cmake-tools.command.cmake.openCMakePresets.title": "CMakePresets.json を開いてください", "cmake-tools.command.cmake.addConfigurePreset.title": "構成の事前設定を追加してください", "cmake-tools.command.cmake.addBuildPreset.title": "ビルドの事前設定を追加してください", @@ -46,6 +48,9 @@ "cmake-tools.command.cmake.cleanConfigureWithDebugger.title": "キャッシュを削除し、CMake デバッガーを使用して再構成する", "cmake-tools.command.cmake.cleanConfigureAll.title": "キャッシュの削除およびすべてのプロジェクトの再構成", "cmake-tools.command.cmake.cleanConfigureAllWithDebugger.title": "キャッシュを削除し、CMake デバッガーを使用してすべてのプロジェクトをクリーンして再構成する", + "cmake-tools.command.cmake.fullCleanConfigure.title": "ビルド ディレクトリの削除と再構成", + "cmake-tools.command.cmake.fullCleanConfigureAll.title": "ビルド ディレクトリの削除とすべてのプロジェクトの再構成", + "cmake-tools.command.cmake.outline.fullCleanConfigureAll.title": "すべてのプロジェクトの完全クリーン再構成", "cmake-tools.command.cmake.editCacheUI.title": "CMake キャッシュ (UI) の編集", "cmake-tools.command.cmake.outline.cleanConfigure.title": "クリーンして再構成", "cmake-tools.command.cmake.outline.cleanConfigureWithDebugger.title": "CMake デバッガーを使用してクリーンして再構成する", @@ -58,6 +63,9 @@ "cmake-tools.command.cmake.cleanConfigureAndBuild.title": "キャッシュの削除、再構成および構築", "cmake-tools.command.cmake.cleanConfigureAndBuildAll.title": "キャッシュの削除、すべてのプロジェクトの再構成および構築", "cmake-tools.command.cmake.outline.cleanConfigureAndBuildAll.title": "すべてのプロジェクトのクリーン再構成と構築", + "cmake-tools.command.cmake.fullCleanConfigureAndBuild.title": "ビルド ディレクトリの削除、再構成、およびビルド", + "cmake-tools.command.cmake.fullCleanConfigureAndBuildAll.title": "ビルド ディレクトリの削除、すべてのプロジェクトの再構成とビルド", + "cmake-tools.command.cmake.outline.fullCleanConfigureAndBuildAll.title": "すべてのプロジェクトの完全クリーン再構成と構築", "cmake-tools.command.cmake.ctest.title": "テストの実行", "cmake-tools.command.cmake.ctestAll.title": "すべてのプロジェクトのテスト実行", "cmake-tools.command.cmake.cpack.title": "CPack の実行", @@ -74,6 +82,7 @@ "cmake-tools.command.cmake.launchTarget.title": "デバッグなしで実行", "cmake-tools.command.cmake.launchTargetAll.title": "デバッグなしですべてのプロジェクトを実行", "cmake-tools.command.cmake.selectLaunchTarget.title": "起動/デバッグ ターゲットの設定", + "cmake-tools.command.cmake.selectBuildAndLaunchTarget.title": "ビルドと起動/デバッグ ターゲットの設定", "cmake-tools.command.cmake.stop.title": "ビルドをキャンセル", "cmake-tools.command.cmake.stopAll.title": "すべてのプロジェクトのビルドをキャンセル", "cmake-tools.command.cmake.resetState.title": "CMake Tools 拡張機能の状態をリセットする (トラブルシューティング用)", @@ -105,6 +114,7 @@ "cmake-tools.configuration.cmake.generator.description": "使用する CMake ジェネレーターです。", "cmake-tools.configuration.cmake.toolset.description": "構成時に使用する CMake ツールセットです。", "cmake-tools.configuration.cmake.platform.description": "構成時に使用する CMake プラットフォームです。", + "cmake-tools.configuration.cmake.shell.description": "CMake、CTest、CPack コマンドの実行時に使用するシェル実行可能ファイルのパス (例: Git Bash や MSYS2)。設定すると、すべてのサブプロセス呼び出しがこのシェルを経由して実行されます。POSIX パス変換が必要な組み込みツールチェーンで便利です。null 値 の場合は、既定のシステム シェルの動作が使用されます。", "cmake-tools.configuration.cmake.configureArgs.description": "構成時に CMake に渡す追加の引数です。CMake プリセットを使用する場合、これらの引数は、アクティブな構成プリセットによって提供される引数に一時的に追加されます。", "cmake-tools.configuration.cmake.buildArgs.description": "ビルド時に CMake に渡す追加の引数です。CMake プリセットを使用する場合、これらの引数は、アクティブなビルド プリセットによって提供される引数に一時的に追加されます。", "cmake-tools.configuration.cmake.buildToolArgs.description": "ビルド時に基になるビルド ツールに渡す追加の引数です。CMake プリセットを使用する場合、これらの引数は、ビルド ツールを呼び出すためにアクティブなビルド プリセットによって提供される引数に一時的に追加されます。", @@ -112,7 +122,7 @@ "cmake-tools.configuration.cmake.ctestPath.description": "CTest 実行可能ファイルへのパス。null の場合、cmake.cmakePath から推論されます (null のままにすることをお勧めします)。", "cmake-tools.configuration.cmake.cpackPath.description": "CPack 実行可能ファイルへのパス。null の場合、cmake.cmakePath から推論されます (null のままにすることをお勧めします)。キットがプリセットの代わりに使用される場合は無視されます。", "cmake-tools.configuration.cmake.ctest.parallelJobs.markdownDescription": "並列テスト ジョブの数。`#cmake.parallelJobs#` の値を使用するには、0 を使用します。これは、`#cmake.ctest.allowParallelJobs#` が `true` に設定されている場合にのみ適用されます。", - "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "ctest を並列で実行できますが、結果として結果出力が文字化けし、テスト エクスプローラーにテストの進行状況が正確に反映されない場合があります。", + "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "ctest の並列実行を許可しますが、それによって結果出力が文字化けすることや、テスト エクスプローラーにテストの進行状況が正確に反映されないことがあります。無効にした場合、テストはアルファベット順に順番に実行され、テスト エクスプローラーの表示順序と一致します。", "cmake-tools.configuration.cmake.ctest.testExplorerIntegrationEnabled.description": "テスト エクスプローラーとの統合が有効になっているかどうか。テスト統合に別の拡張機能を使用する場合には、これを無効にすることが適しています。", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiter.markdownDescription": "テスト エクスプローラーでテスト スイート名とグループ テストを階層的に区切るために使用される省略可能な区切り記号。この文字列は正規表現で使用されるため、一部の区切り記号ではエスケープが必要になる場合があります。例: `-` (1 つの区切り記号: `-`)、`\\.|::` (2 つの区切り記号: `.` または `::`。`.` はエスケープする必要があることに注意してください)。", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiterMaxOccurrence.markdownDescription": "区切り記号を使用してテストの名前を分割できる最大回数。`0` は制限がないことを意味します。", @@ -124,9 +134,21 @@ "cmake-tools.configuration.cmake.ctest.failurePatterns.actual": "実際のテスト出力の一致グループ インデックス。既定は未定義です。", "cmake-tools.configuration.cmake.ctest.failurePatterns.expected": "期待されあるテスト出力の一致グループ インデックス。既定は未定義です。", "cmake-tools.configuration.cmake.ctest.debugLaunchTarget.description": "CTest を使用してテストをデバッグするときに開始する launch.json のターゲット名。既定では、存在しないターゲットの場合は、使用可能なすべてのターゲットを含むピッカーが表示されます。", + "cmake-tools.configuration.cmake.ctest.neverDebugTestsWithLaunchConfiguration.description": "true に設定すると、クイック ピック メニューを省略して、起動構成なしで常にテストをデバッグします。既定値は false です。", "cmake-tools.configuration.cmake.parseBuildDiagnostics.description": "コンパイラ出力の警告とエラーを解析します。", "cmake-tools.configuration.cmake.enabledOutputParsers.description": "使用する出力パーサー。サポートされるパーサーは、GNULD スタイルのリンカー出力の場合は `cmake`、`gcc`、`gnuld`、Microsoft Visual C++ の場合は `msvc`、--no_wrap_diagnostics --brief_diagnostics を指定した Green Hills Compiler の場合は `ghs`、Wind River Diab コンパイラーの場合は `diab`、include-what-you-use 診断の場合は `iwyu` です。", - "cmake-tools.configuration.cmake.debugConfig.description": "ターゲットのデバッグ時に使用するデバッグ構成です。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.markdownDescription": "ビルド出力用の追加の問題マッチャー。これを使用すると、clang-tidy、PCLint Plus、cppcheck などのツールや、CMake の `add_custom_command`/`add_custom_target` を介して統合されたカスタム スクリプトからの診断情報を表示できます。\n\n各エントリは、`name` (診断ソース ラベルとして使用)、`regexp` を定義し、`file`、`line`、`column`、`severity`、`message`、`code` のグループ インデックスをキャプチャします。\n\nたとえば、`/path/file.cpp:10:5: warning: some message [check-name]`のような clang-tidy の出力に一致させるには、次のようにします。\n```json\n[\n {\n \"name\": \"clang-tidy\",\n \"regexp\": \"^(.+?):(\\\\d+):(\\\\d+):\\\\s+(warning|error|note):\\\\s+(.+?)\\\\s*(?:\\\\[(.+)\\\\])?$\",\n \"file\": 1,\n \"line\": 2,\n \"column\": 3,\n \"severity\": 4,\n \"message\": 5,\n \"code\": 6\n }\n]\n```\n\nカスタム マッチャーは、組み込みパーサー (`gcc`、`msvc` など) の**後に**実行されるため、組み込みコンパイラの行を奪うことはありません。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.name": "[問題] ペインの診断ソース ラベルとして使用される、このマッチャーの一意の名前。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.regexp": "各ビルド出力行と照合する正規表現。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.file": "ファイル パスのキャプチャ グループ インデックス。既定値は `1` です。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.line": "行番号のキャプチャ グループ インデックス。既定値は `2` です。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.column": "列番号のキャプチャ グループ インデックス。省略可能。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.group": "重大度のキャプチャ グループ インデックス ('error'、'warning'、または 'info' をキャプチャする必要があります)。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.fixed": "このパターンのすべての一致に適用される固定の重大度。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.message": "診断メッセージのキャプチャ グループ インデックス。既定値は `3` です。", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.code": "オプションの診断コードのキャプチャ グループ インデックス。", + "cmake-tools.configuration.cmake.debugConfig.description": "ターゲットのデバッグ時に使用するデバッグ構成です。`type` を指定すると、自動検出されたデバッガー構成がスキップされ、ターゲットから生成される基本構成 (プログラム、cwd、名前) は最小限のみです。その他のすべてのプロパティはこの設定から適用されるため、デバッグ アダプターのデバッグ起動構成を完全に制御できます。", + "cmake-tools.configuration.cmake.debugConfig.type.description": "使用するデバッグ アダプターの種類 (例: `cppdbg`、`cppvsdbg`、`lldb`、`codelldb`)。設定すると、CMake キャッシュからの自動デバッガー検出がスキップされ、この種類が直接使用されます。デバッグ アダプターに必要なその他のプロパティは、`#cmake.debugConfig#` に追加できます。", "cmake-tools.configuration.cmake.debugConfig.symbolSearchPath.description": "Visual Studio デバッガーのシンボル検索パスです。", "cmake-tools.configuration.cmake.debugConfig.additionalSOLibSearchPath.description": ".so ファイルを検索する GDB または LLDB のパスです。", "cmake-tools.configuration.cmake.debugConfig.externalConsole.description": "プログラムの外部コンソールを起動します。", @@ -226,11 +248,13 @@ "cmake-tools.configuration.cmake.automaticReconfigure.description": "キットまたは構成プリセットが変更されたときに、CMake プロジェクト ディレクトリを自動的に構成します。", "cmake-tools.configuration.cmake.pinnedCommands.description": "既定で常にピン留めする CMake コマンドの一覧。これらは、CMake Tools サイドバーの [ピン留めされたコマンド] セクションに表示されます。", "cmake-tools.configuration.cmake.enableAutomaticKitScan.description": "キットが選択されていない場合は、キットの自動スキャンを有効にします。これは、CMake プリセットが使用されていない場合にのみ影響します。", + "cmake-tools.configuration.cmake.removeStaleKitsOnScan.description": "Remove compiler-based kits from the user kits file during a full kit scan when they are no longer rediscovered. Set \"keep\": true in a kit entry to preserve it.", "cmake-tools.configuration.cmake.enableLanguageServices.description": "CMake ファイルの言語サービスを有効にします。これにより、構文のハイライト、コード補完、その他の機能が有効になります。", "cmake-tools.configuration.cmake.preRunCoverageTarget.description": "テスト エクスプローラーを使用してカバレッジを使用してテストを実行する前に構築するターゲット", "cmake-tools.configuration.cmake.postRunCoverageTarget.description": "テスト エクスプローラーを使用してカバレッジを使用してテストを実行する後に構築するターゲット", "cmake-tools.configuration.cmake.coverageInfoFiles.description": "テスト エクスプローラーを使用してカバレッジを使用してテストを実行した後に処理する LCOV カバレッジ情報ファイル。", "cmake-tools.configuration.cmake.useFolderPropertyInBuildTargetDropdown.description": "既定のビルド ターゲットのドロップダウンが CMake フォルダー グループでグループ化されるかどうかを制御します。", + "cmake-tools.configuration.cmake.setBuildTargetSameAsLaunchTarget.description": "有効にすると、起動/デバッグ ターゲットを設定した際に、それに合わせてビルド ターゲットも自動的に設定されます。ビルド ターゲットは個別に変更可能です。", "cmake-tools.debugger.pipeName.description": "デバッガー コミュニケーションに使用するパイプ (Windows 上) またはドメイン ソケット (Unix 上) の名前。", "cmake-tools.debugger.clean.description": "構成する前にクリーンアップします。", "cmake-tools.debugger.configureAll.description": "すべてのプロジェクトに対して構成します。", @@ -262,6 +286,7 @@ "cmake-tools.configuration.cmake.launchBehavior.breakAndReuseTerminal.markdownDescriptions": "起動ターミナル インスタンスが再利用され、ターゲットを起動する前にアクティブなフォアグラウンド プロセスを終了するために `break` コマンドが送信されます。", "cmake-tools.configuration.cmake.launchBehavior.newTerminal.markdownDescriptions": "新しいターミナル インスタンスが作成され、その中でターゲットが起動されます。既存のターミナルは自動的にはクリーンアップされません。", "cmake-tools.configuration.cmake.loadCompileCommands.description": "拡張子が単一ファイルのコンパイルを有効にするために compile_commands.json を読み取るかどうかを制御します。", + "cmake-tools.configuration.cmake.outlineViewType.description": "Project Outline View`s type. Available options are: \"list\" and \"tree\".", "cmake-tools.command.cmake.projectStatus.update.title": "プロジェクトの状態を最新の情報に更新", "cmake-tools.command.cmake.pinnedCommands.add.title": "ピン留めする CMake コマンドを追加する", "cmake-tools.command.cmake.pinnedCommands.remove.title": "コマンドのピン留めを外す", @@ -272,5 +297,33 @@ "cmake-tools.debugger.label": "CMake デバッガー", "cmake-tools.command.cmake.appendBuildDirectoryToWorkspace.title": "現在のワークスペースにビルド ディレクトリを追加する", "cmake-tools.command.workbench.action.tasks.configureTaskRunner.title": "タスクの構成", - "cmake-tools.command.workbench.action.tasks.runTask.title": "タスクの実行" + "cmake-tools.command.workbench.action.tasks.runTask.title": "タスクの実行", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.description": "Add source files to CMake lists when they are created.", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.no.description": "Do not automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.yes.description": "Automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.description": "Remove source files from CMake lists when they are deleted.", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.no.description": "Do not automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.yes.description": "Automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.markdownDescription": "How to choose which `set()` or `list(APPEND/PREPEND/INSERT)` command invocation to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.never.description": "Do not look for variable modification command invocations, only look for source command invocations.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askFirstParentDir.description": "Present a Quick Pick with options from the first `CMakeLists.txt` found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askParentDirs.description": "Present a Quick Pick with options from all `CMakeLists.txt` files found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.sourceVariables.markdownDescription": "Variables to add source files to. Variables appearing earlier in this list will be given higher priority. Only used if `#cmake.modifyLists.variableSelection#` is not `never`. Supports glob patterns.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.description": "How to choose which target to add new source files to when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askNearestSourceDir.description": "Present a Quick Pick with targets whose source directories are closest to location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askParentSourceDirs.description": "Present a Quick Pick with targets whose source directories contain the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.description": "How to choose which of a target's source command invocations to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askFirstParentDir.description": "Present a Quick Pick with options from the CMake list file in the parent directory closest to the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askParentDirs.description": "Present a Quick Pick with options from all CMake list files in the parent directories of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSourceCommands.markdownDescription": "Commands to treat as target source commands when adding source files CMake lists. Commands appearing earlier in this list will be given higher priority. Supports glob patterns.\r\n\r\nIf you are using the File API (see `#cmake.cmakeCommunicationMode#`), user-defined functions and macros which call the commands in this list are detected automatically and added to it.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.description": "How to choose which of a target's visibility scopes, file sets, or source keyword parameters to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.ask.description": "Present a Quick Pick with options from the selected target source command invocation.", + "cmake-tools.configuration.cmake.modifyLists.sourceListKeywords.markdownDescription": "Keyword arguments to user-defined functions and macros which introduce lists of source files. If left empty, all arguments consisting of only upper-case letters and underscores will be considered. Supports glob patterns.", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier" } \ No newline at end of file diff --git a/i18n/jpn/schemas/kits-schema.json.i18n.json b/i18n/jpn/schemas/kits-schema.json.i18n.json index 0c2f4d8871..5944ca1f63 100644 --- a/i18n/jpn/schemas/kits-schema.json.i18n.json +++ b/i18n/jpn/schemas/kits-schema.json.i18n.json @@ -17,9 +17,11 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "ツールチェーン ファイルへのパス", "schemas/kits-schema.json.items.properties.visualStudio": "Visual Studio 製品のインスタンス ID", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "ターゲットにするアーキテクチャ", + "schemas/kits-schema.json.items.properties.visualStudioArguments": "Arguments to vcvarsall.bat", "schemas/kits-schema.json.items.properties.environmentSetupScript": "キットの環境を変更するスクリプトへの絶対パス", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "環境変数の値", - "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "CMake 設定の値", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.0": "CMake 設定の値です。文字列内のセミコロンはエスケープされます。", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.1": "エスケープせずに CMake リストを形成するためにセミコロンで結合された値です。", "schemas/kits-schema.json.items.properties.preferredGenerator": "このキットの優先 CMake ジェネレーターを設定します", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.name": "使用するジェネレーターの名前", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.platform": "-A 引数に指定する CMake プラットフォーム", diff --git a/i18n/jpn/src/cmakeListsModifier.i18n.json b/i18n/jpn/src/cmakeListsModifier.i18n.json new file mode 100644 index 0000000000..a3c9d1d6a2 --- /dev/null +++ b/i18n/jpn/src/cmakeListsModifier.i18n.json @@ -0,0 +1,51 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "add.newly.created.files": "Add newly created files to CMakeLists.txt", + "error.processing.add.files": "Error processing added files", + "remove.deleted.file": "Remove a deleted file from CMakeLists.txt", + "error.processing.delete.files": "Error processing deleted files", + "add.file.no.code.model": "Adding a file without a valid code model", + "file.already.in.target": "{0} already in target {1}.", + "no.targets.found": "No targets found. {0} not added to build system.", + "no.source.command.invocations": "No source command invocations found. {0} not added to build system.", + "delete.file.no.code.model": "Deleting a file without a valid code model", + "not.modifying.unsaved.delete": "Not modifying {0} to delete {1} because it has unsaved changes.", + "add.to.which.variable": "CMake: Add {0} to which variable?", + "add.to.which.target": "CMake: Add {0} to which target?", + "add.to.which.invocation": "CMake: Add {0} to which command invocation of {1}?", + "add.to.which.scope.fileset.keyword": "CMake: Add {0} to which Scope, File Set, or Keyword?", + "open.file": "Open File", + "not.modifying.unsaved.files": "Cannot modify {0} because it has unsaved changes.", + "skipping.unsaved.files": "Skipping {0} file(s) with unsaved changes: {1}", + "edit.label.remove.source.file": "CMake: Remove deleted source file", + "edit.label.add.source.file": "CMake: Add new source file", + "edits.applied.successfully": "Successfully applied {0} CMake list edit(s).", + "edits.apply.failed": "Failed to apply CMake list edits: {0}", + "not.local.file.add": "{0} is not a local file. Not adding to CMake lists.", + "no.candidates.found": "No suitable locations found to add {0}.", + "not.modifying.unsaved.add": "Not modifying {0} to add {1} because it has unsaved changes.", + "not.local.file.remove": "{0} is not a local file. Not removing from CMake lists.", + "could.not.open.file": "Could not open file {0}: {1}", + "file.not.found.in.cmake.lists": "{0} not found in CMake lists.", + "file.already.in.destination": "{0} already in {1} at {2}:{3}", + "parse.error.examining.cmake.lists": "Parse error while examining CMakeLists.txt files. Details: {0}", + "could.not.open.cmake.lists": "Could not open {0}: {1}", + "parse.error.finding.invocations": "Parse error while finding command invocations to add to. CMake file modified since last configure? Details: {0}", + "unexpected.command.found": "Found \"{0}\", expected \"{1}\". CMake file modified since last configure? Details: {2}:{3}", + "scope.private.detail": "{0} will be used to build {1}", + "scope.public.detail": "{0} will be used to build both {1} and targets that use {1}", + "scope.interface.detail": "{0} will be used to build targets that use {1}", + "fileset.headers.detail": "{0} will be used via a language's #include mechanism", + "fileset.cxx.modules.detail": "{0} contains C++ interface module or partition units.", + "label.fileset": "{0} File Set", + "label.scope": "{0} Scope", + "fileset.type": "Type: {0}", + "scope.with.fileset.detail": "{0} Scope: {1}", + "keyword.of.command": "Keyword of {0} command", + "command.label": "{0} Command", + "add.to.command.arguments": "Add {0} to the list of arguments to {1} command" +} \ No newline at end of file diff --git a/i18n/jpn/src/cmakeProject.i18n.json b/i18n/jpn/src/cmakeProject.i18n.json index 31e0952e87..424264b68b 100644 --- a/i18n/jpn/src/cmakeProject.i18n.json +++ b/i18n/jpn/src/cmakeProject.i18n.json @@ -9,6 +9,7 @@ "generator.changed.restart.driver": "ジェネレーターの変更後に CMake ドライバーを再起動しています。", "preferredGenerator.changed.restart.driver": "preferredGenerators の変更後に CMake ドライバーを再起動しています。", "bad.executable": "CMake 実行可能ファイルが正しくありません: {0}。インストールされているか、{1} 設定の値に正しいパスが含まれていることを確認してください", + "shell.changed.restart.driver": "シェルの変更後に CMake ドライバーを再起動しています。", "targests.in.preset": "[プリセット内のターゲット]", "constructing.cmakeproject": "新しい CMakeProject インスタンスを構築しています", "disposing.driver": "CMake ドライバーを破棄しています", @@ -142,9 +143,9 @@ "configure.now.button": "今すぐ構成", "cache.load.failed": "CMakeCache.txt ファイルが見つかりませんでした。最初にプロジェクトを構成してください。", "set.up.before.selecting.target": "ターゲットを選択する前に、CMake プロジェクトを設定してください。", - "select.active.target.tooltip": "既定のビルド ターゲットを選択", "enter.target.name": "ターゲット名を入力してください", "target.to.build.description": "ビルドするターゲット", + "select.active.target.tooltip": "既定のビルド ターゲットを選択", "build.failed": "ビルドが失敗しました。", "driver.died.after.build.succeeded": "CMake ドライバーは、ビルドが成功した直後に停止しました。", "driver.died.before.workflow": "ワークフローを開始する前に CMake ドライバーが終了しました。", @@ -167,6 +168,7 @@ "target.debugging.unsupported": "ターゲットのデバッグは、レガシ ドライバーではサポートされなくなりました", "learn.more.button": "詳細情報", "failed.to.prepare.target": "{0} という名前の実行可能ファイルのターゲットを準備できませんでした", + "debug.configuration.from.settings": "ユーザー設定から構成をデバッグする: {0}", "debug.configuration.from.cache": "キャッシュから構成をデバッグする: {0}", "problem.getting.debug": "キャッシュからのデバッグ構成の取得で問題が発生しました。", "starting.debugger.with": "次の構成でデバッガーを開始しています。", diff --git a/i18n/jpn/src/ctest.i18n.json b/i18n/jpn/src/ctest.i18n.json index 147894023d..a369cda6d6 100644 --- a/i18n/jpn/src/ctest.i18n.json +++ b/i18n/jpn/src/ctest.i18n.json @@ -27,6 +27,13 @@ "test.buildingPostRunCoverageTarget": "カバレッジを使用してテストが実行された後にプロジェクト {1} の postRunCoverageTarget '{0}' を構築しています。", "test.postRunCoverageTargetFailure": "{0} のプロジェクトでターゲット postRunCoverageTarget を構築できませんでした。カバレッジ データの処理をスキップしています。", "test.skip.run.build.failure": "ビルド エラーが原因でテストを実行していません。", + "debug.without.launch.config": "起動構成なしでデバッグする", + "choose.debug.method": "テストをデバッグする方法を選択します。", + "yes": "はい", + "no": "いいえ", + "never.debug.with.launch.prompt": "このワークスペースで起動構成なしでテストを常にデバッグしますか?", + "no.launch.config": "起動構成が見つかりません。", + "choose.launch.config": "テストをデバッグする起動構成を選択します。", "test.skip.debug.build.failure": "ビルド エラーが原因でテストをデバッグしていません。", "build.failed": "ビルドに失敗しました", "run.tests.profile": "テストの実行", diff --git a/i18n/jpn/src/drivers/cmakeDriver.i18n.json b/i18n/jpn/src/drivers/cmakeDriver.i18n.json index 55c6c4d21b..7c95405fba 100644 --- a/i18n/jpn/src/drivers/cmakeDriver.i18n.json +++ b/i18n/jpn/src/drivers/cmakeDriver.i18n.json @@ -5,13 +5,14 @@ // Do not edit this file. It is machine generated. { "no.usable.generator.found": "使用可能なジェネレーターが見つかりません。", - "user.closed.file.compilation.terminal": "ユーザーがファイル コンパイル ターミナルを閉じました", "disposing.base.cmakedriver": "ベース CMakeDriver を破棄しています", "async.disposing.cmake.driver": "CMake ドライバーを非同期で破棄しています", "test.with.overrides": "注: プリセット {0} を使用してテストしていますが、VS Code設定から適用されるオーバーライドがいくつかあります。", "package.with.overrides": "注: プリセット {0} をパッケージ化していますが、VS Code 設定から適用されているオーバーライドがいくつかあります。", "compile.with.overrides": "注: プリセット {0} を使用してコンパイルしていますが、VS Code設定から適用されるオーバーライドがいくつかあります。", "file.compilation": "ファイルのコンパイル", + "compile.finished.with.error": "コンパイルが完了しましたが、エラーが発生しました。", + "compile.finished.successfully": "コンパイルが正常に完了しました。", "removing": "{0} の削除", "unlink.failed": "キャッシュ ファイル {0} を削除できませんでした", "switching.to.config.preset": "構成の事前設定に切り替えています: {0}", diff --git a/i18n/jpn/src/extension.i18n.json b/i18n/jpn/src/extension.i18n.json index 500965b986..cbb17d6456 100644 --- a/i18n/jpn/src/extension.i18n.json +++ b/i18n/jpn/src/extension.i18n.json @@ -11,10 +11,11 @@ "configure.now.button": "今すぐ構成", "configure.recommended": "新しいキット定義にアップグレードした後に、再構成することをお勧めします。", "using.cache.to.configure.workspace.on.open": "キャッシュを使用してワークスペース {0} を構成しようとしています", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier", + "failed.to.open.cache.file.on.code.model.update": "Failed to open CMake cache file on code model update", "update.code.model.for.cpptools": "cpptools のコード モデルの更新", "update.intellisense.disabled": "{0} が {1} に設定されているため、構成プロバイダーを更新しません", "failed.to.get.cpptools.api": "cppTools API を取得できませんでした", - "filed.to.open.cache.file.on.code.model.update": "コード モデルの更新時に CMake キャッシュ ファイルを開くことができませんでした", "opening.text.editor.for": "{0} 用にテキスト エディターを開いています", "no.kits.file.what.to.do": "キット ファイルが存在しません。どうしますか?", "scan.for.kits.button": "キットのスキャン", @@ -49,6 +50,7 @@ "cmake.finished.returned.unserializable": "{0} が完了しました (シリアル化可能でない値が返されました)", "loading.extension.commands": "拡張コマンドを読み込んでいます", "register.command": "CMakeTools 拡張コマンド {0} の登録", + "bookmark.target.not.resolved": "ブックマーク \"{0}\" をターゲットに解決できませんでした。プロジェクトの再構成が必要な場合があります。", "search.project.outline": "検索語句を入力してプロジェクト アウトラインをフィルター処理する", "added.to": "追加先", "removed.from": "から削除されました", diff --git a/i18n/jpn/src/proc.i18n.json b/i18n/jpn/src/proc.i18n.json index 3c9d83dfaa..e7aa6d79a5 100644 --- a/i18n/jpn/src/proc.i18n.json +++ b/i18n/jpn/src/proc.i18n.json @@ -6,11 +6,11 @@ { "executing.command": "コマンドを実行しています: {0}", "execution.environment": " 環境: {0}", - "process.error": "コマンド {0} はエラー: {1} スタック: {2} で失敗しました", - "process.exit.with.signal": "コマンド {0} はコード {1} シグナル: {2} スタック: {3} で終了しました", - "process.exit": "コマンド {0} はコード: {1} スタック: {2} で終了しました", - "process.exit.stdout": "標準出力でのコマンド出力: {0} スタック: {1}", - "process.exit.stderr": "標準エラー時のコマンド出力: {0} スタック: {1}", + "process.error": "コマンド: {0} 次のエラーで失敗しました: {1}", + "process.exit.with.signal": "コマンド: {0} 次で終了しました: コード {1} とシグナル {2}", + "process.exit": "コマンド {0} はコード {1} で終了しました", + "process.exit.stdout": "標準出力でのコマンド出力: {0}", + "process.exit.stderr": "標準エラー時のコマンド出力: {0}", "processing.data.event.stdout": "proc StdOut から {0} イベントを処理しています", "processing.data.event.stderr": "proc stderr から {0} イベントを処理しています", "resolving.close.event": "{0} イベントのプロセスを解決しています" diff --git a/i18n/jpn/src/util.i18n.json b/i18n/jpn/src/util.i18n.json index e569c02dda..07784e82b1 100644 --- a/i18n/jpn/src/util.i18n.json +++ b/i18n/jpn/src/util.i18n.json @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "invalid.value": "cmake 値に変換する値が無効です: {0}", "invalid.version.string": "バージョン文字列 {0} が無効です", "extension.is.undefined": "拡張機能が定義されていません。", "sourcedirectory.not.a.directory": "\"sourceDirectory\" はディレクトリではありません" diff --git a/i18n/kor/assets/policies.json.i18n.json b/i18n/kor/assets/policies.json.i18n.json new file mode 100644 index 0000000000..0ef8e8c7f5 --- /dev/null +++ b/i18n/kor/assets/policies.json.i18n.json @@ -0,0 +1,212 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "assets/policies.json.CMP0000": "필요한 최소 CMake 버전을 지정해야 합니다.", + "assets/policies.json.CMP0001": "CMAKE_BACKWARDS_COMPATIBILITY는 더 이상 사용하지 않아야 합니다.", + "assets/policies.json.CMP0002": "논리적 대상 이름은 전역적으로 고유해야 합니다.", + "assets/policies.json.CMP0003": "전체 경로를 통해 연결된 라이브러리는 더 이상 링커 검색 경로를 생성하지 않습니다.", + "assets/policies.json.CMP0004": "연결된 라이브러리에는 앞뒤 공백이 없어야 합니다.", + "assets/policies.json.CMP0005": "전처리기 정의 값이 이제 자동으로 이스케이프 처리됩니다.", + "assets/policies.json.CMP0006": "MACOSX_BUNDLE 대상을 설치하려면 BUNDLE DESTINATION이 필요합니다.", + "assets/policies.json.CMP0007": "list 명령은 더 이상 빈 요소를 무시하지 않습니다.", + "assets/policies.json.CMP0008": "전체 경로로 연결된 라이브러리에는 유효한 라이브러리 파일 이름이 있어야 합니다.", + "assets/policies.json.CMP0009": "FILE GLOB_RECURSE 호출은 기본적으로 symlink를 따르지 않아야 합니다.", + "assets/policies.json.CMP0010": "잘못된 변수 참조 구문은 오류입니다.", + "assets/policies.json.CMP0011": "포함된 스크립트는 자동으로 cmake_policy PUSH 및 POP을 수행합니다.", + "assets/policies.json.CMP0012": "if는 숫자와 부울 상수를 인식합니다.", + "assets/policies.json.CMP0013": "중복된 바이너리 디렉터리는 허용되지 않습니다.", + "assets/policies.json.CMP0014": "입력 디렉터리에는 CMakeLists.txt가 있어야 합니다.", + "assets/policies.json.CMP0015": "link_directories는 경로를 원본 디렉터리에 상대적으로 처리합니다.", + "assets/policies.json.CMP0016": "target_link_libraries는 유일한 인수가 대상이 아니면 오류를 보고합니다.", + "assets/policies.json.CMP0017": "CMake 모듈 디렉터리에서 포함할 때는 해당 디렉터리의 파일을 우선 사용합니다.", + "assets/policies.json.CMP0018": "CMAKE_SHARED_LIBRARY__FLAGS 변수를 무시합니다.", + "assets/policies.json.CMP0019": "포함 및 링크 정보에서 변수를 다시 확장하지 마세요.", + "assets/policies.json.CMP0020": "Windows에서 Qt 실행 파일을 qtmain 대상에 자동으로 연결합니다.", + "assets/policies.json.CMP0021": "INCLUDE_DIRECTORIES 대상 속성의 상대 경로에 대한 오류입니다.", + "assets/policies.json.CMP0022": "INTERFACE_LINK_LIBRARIES는 링크 인터페이스를 정의합니다.", + "assets/policies.json.CMP0023": "일반 서명과 키워드 target_link_libraries 서명을 혼합할 수 없습니다.", + "assets/policies.json.CMP0024": "내보내기 결과 포함을 허용하지 않습니다.", + "assets/policies.json.CMP0025": "Apple Clang의 컴파일러 ID가 이제 AppleClang입니다.", + "assets/policies.json.CMP0026": "빌드 대상에 LOCATION 속성을 사용할 수 없습니다.", + "assets/policies.json.CMP0027": "포함 디렉터리가 없는 조건부로 연결된 가져온 대상입니다.", + "assets/policies.json.CMP0028": "대상 이름에 이중 콜론이 있으면 ALIAS 또는 IMPORTED 대상을 의미합니다.", + "assets/policies.json.CMP0029": "subdir_depends 명령은 호출하면 안 됩니다.", + "assets/policies.json.CMP0030": "use_mangled_mesa 명령은 호출하면 안 됩니다.", + "assets/policies.json.CMP0031": "load_command 명령은 호출하면 안 됩니다.", + "assets/policies.json.CMP0032": "output_required_files 명령은 호출하면 안 됩니다.", + "assets/policies.json.CMP0033": "export_library_dependencies 명령은 호출하면 안 됩니다.", + "assets/policies.json.CMP0034": "utility_source 명령은 호출하면 안 됩니다.", + "assets/policies.json.CMP0035": "variable_requires 명령은 호출하면 안 됩니다.", + "assets/policies.json.CMP0036": "build_name 명령은 호출하면 안 됩니다.", + "assets/policies.json.CMP0037": "대상 이름은 예약된 이름이 아니어야 하며 유효성 패턴과 일치해야 합니다.", + "assets/policies.json.CMP0038": "대상은 자신에게 직접 연결되지 않을 수 있습니다.", + "assets/policies.json.CMP0039": "유틸리티 대상에는 링크 종속성이 없을 수 없습니다.", + "assets/policies.json.CMP0040": "add_custom_command TARGET 서명의 대상이 있어야 하며 현재 디렉터리에 정의되어야 합니다.", + "assets/policies.json.CMP0041": "생성기 식의 상대 경로 포함에 대한 오류입니다.", + "assets/policies.json.CMP0042": "MACOSX_RPATH는 기본적으로 활성화됩니다.", + "assets/policies.json.CMP0043": "COMPILE_DEFINITIONS_ 속성을 무시합니다.", + "assets/policies.json.CMP0044": "대/소문자를 구분하는 _COMPILER_ID 생성기 식", + "assets/policies.json.CMP0045": "get_target_property의 존재하지 않는 대상에 대한 오류입니다.", + "assets/policies.json.CMP0046": "add_dependencies의 존재하지 않는 종속성에 대한 오류입니다.", + "assets/policies.json.CMP0047": "QNX의 qcc 드라이버에 QCC 컴파일러 ID를 사용합니다.", + "assets/policies.json.CMP0048": "project 명령은 VERSION 변수를 관리합니다.", + "assets/policies.json.CMP0049": "대상 원본 항목에서 변수를 확장하지 않습니다.", + "assets/policies.json.CMP0050": "add_custom_command SOURCE 서명을 허용하지 않습니다.", + "assets/policies.json.CMP0051": "SOURCES 대상 속성에 TARGET_OBJECTS를 나열합니다.", + "assets/policies.json.CMP0052": "설치된 INTERFACE_INCLUDE_DIRECTORIES에서 원본 및 빌드 디렉터리를 거부합니다.", + "assets/policies.json.CMP0053": "변수 참조 및 이스케이프 시퀀스 평가를 단순화합니다.", + "assets/policies.json.CMP0054": "인수가 따옴표로 묶이지 않은 경우에만 변수나 키워드로 해석합니다.", + "assets/policies.json.CMP0055": "break 명령에 대한 엄격한 검사입니다.", + "assets/policies.json.CMP0056": "try_compile 원본 파일 서명에서 링크 플래그를 적용합니다.", + "assets/policies.json.CMP0057": "새 if IN_LIST 연산자를 지원합니다.", + "assets/policies.json.CMP0058": "Ninja는 사용자 지정 명령 부산물이 명시적이어야 합니다.", + "assets/policies.json.CMP0059": "DEFINITIONS를 기본 제공 디렉터리 속성으로 처리하지 않습니다.", + "assets/policies.json.CMP0060": "암시적 디렉터리에서도 전체 경로로 라이브러리를 연결합니다.", + "assets/policies.json.CMP0061": "CTest는 기본적으로 make에 오류를 무시(-i)하도록 지시하지 않습니다.", + "assets/policies.json.CMP0062": "내보내기 결과 설치를 허용하지 않습니다.", + "assets/policies.json.CMP0063": "모든 대상 유형에 대해 가시성 속성을 적용합니다.", + "assets/policies.json.CMP0064": "if 명령에 대해 TEST를 연산자로 인식합니다.", + "assets/policies.json.CMP0065": "ENABLE_EXPORTS 대상 속성이 없는 실행 파일에서 기호를 내보내는 플래그를 추가하지 않습니다.", + "assets/policies.json.CMP0066": "try_compile 원본 파일 서명에서 구성별 플래그를 적용합니다.", + "assets/policies.json.CMP0067": "try_compile 원본 파일 서명에서 언어 표준을 적용합니다.", + "assets/policies.json.CMP0068": "macOS의 RPATH 설정은 install_name에 영향을 주지 않습니다.", + "assets/policies.json.CMP0069": "INTERPROCEDURAL_OPTIMIZATION은 활성화 시 강제 적용됩니다.", + "assets/policies.json.CMP0070": "상대 경로에 대한 파일 동작을 정의합니다.", + "assets/policies.json.CMP0071": "AUTOMOC와 AUTOUIC가 GENERATED 파일을 처리하도록 합니다.", + "assets/policies.json.CMP0072": "FindOpenGL은 사용 가능할 경우 기본적으로 GLVND를 우선 사용합니다.", + "assets/policies.json.CMP0073": "레거시 _LIB_DEPENDS 캐시 항목을 생성하지 않습니다.", + "assets/policies.json.CMP0074": "find_package는 _ROOT 변수를 사용합니다.", + "assets/policies.json.CMP0075": "포함 파일 검사 매크로는 CMAKE_REQUIRED_LIBRARIES를 적용합니다.", + "assets/policies.json.CMP0076": "target_sources 명령은 상대 경로를 절대 경로로 변환합니다.", + "assets/policies.json.CMP0077": "option은 일반 변수를 적용합니다.", + "assets/policies.json.CMP0078": "UseSWIG는 표준 대상 이름을 생성합니다.", + "assets/policies.json.CMP0079": "target_link_libraries는 다른 디렉터리의 대상과도 사용할 수 있습니다.", + "assets/policies.json.CMP0080": "BundleUtilities는 구성 시점에 포함할 수 없습니다.", + "assets/policies.json.CMP0081": "LINK_DIRECTORIES 대상 속성에는 상대 경로가 허용되지 않습니다.", + "assets/policies.json.CMP0082": "add_subdirectory 호출의 설치 규칙이 호출자의 규칙과 인터리빙됩니다.", + "assets/policies.json.CMP0083": "PIE(Position Independent Executable) 생성 여부를 제어하기 위해 링크 타임에 일부 플래그가 필요합니다.", + "assets/policies.json.CMP0084": "find_package에 대한 FindQt 모듈이 없습니다.", + "assets/policies.json.CMP0085": "$는 빈 목록 항목을 처리합니다.", + "assets/policies.json.CMP0086": "UseSWIG는 -module 플래그를 통해 SWIG_MODULE_NAME을 적용합니다.", + "assets/policies.json.CMP0087": "설치 및 설치 지원 생성기 식입니다.", + "assets/policies.json.CMP0088": "FindBISON은 실행 시 CMAKE_CURRENT_BINARY_DIR에서 bison을 실행합니다.", + "assets/policies.json.CMP0089": "IBM Clang 기반 XL 컴파일러의 컴파일러 ID가 이제 XLClang입니다.", + "assets/policies.json.CMP0090": "export는 기본적으로 패키지 레지스트리를 채우지 않습니다.", + "assets/policies.json.CMP0091": "MSVC 런타임 라이브러리 플래그는 추상화를 통해 선택됩니다.", + "assets/policies.json.CMP0092": "MSVC 경고 플래그는 기본적으로 CMAKE__FLAGS에 없습니다.", + "assets/policies.json.CMP0093": "FindBoost는 Boost_VERSION을 x.y.z 형식으로 보고합니다.", + "assets/policies.json.CMP0094": "FindPython3, FindPython2, FindPython 모듈은 조회 전략에 LOCATION을 사용합니다.", + "assets/policies.json.CMP0095": "중간 CMake 설치 스크립트에서 RPATH 항목이 올바르게 이스케이프 처리됩니다.", + "assets/policies.json.CMP0096": "project 명령은 버전 구성 요소의 앞자리 0을 유지합니다.", + "assets/policies.json.CMP0097": "GIT_SUBMODULES가 \"\"인 ExternalProject_Add는 하위 모듈을 초기화하지 않습니다.", + "assets/policies.json.CMP0098": "FindFLEX는 실행 시 CMAKE_CURRENT_BINARY_DIR 디렉터리에서 flex를 실행합니다.", + "assets/policies.json.CMP0099": "링크 속성은 정적 라이브러리의 프라이빗 종속성에 대해 전이적입니다.", + "assets/policies.json.CMP0100": "AUTOMOC 및 AUTOUIC가 .hh 확장명으로 끝나는 헤더 파일을 처리하도록 허용합니다.", + "assets/policies.json.CMP0101": "target_compile_options는 이제 항상 BEFORE 키워드를 적용합니다.", + "assets/policies.json.CMP0102": "mark_as_advanced 명령은 기존 캐시 항목이 없으면 더 이상 새로 만들지 않습니다.", + "assets/policies.json.CMP0103": "APPEND 없이 동일한 FILE로 export 명령을 여러 번 호출하는 것은 더 이상 허용되지 않습니다.", + "assets/policies.json.CMP0104": "CMAKE_CUDA_COMPILER_ID _COMPILER_ID>가 NVIDIA일 때 CMAKE_CUDA_ARCHITECTURES를 초기화합니다. CUDA_ARCHITECTURES가 비어 있으면 오류가 발생합니다.", + "assets/policies.json.CMP0105": "LINK_OPTIONS 및 INTERFACE_LINK_OPTIONS 대상 속성은 이제 디바이스 연결 단계에 사용됩니다.", + "assets/policies.json.CMP0106": "Documentation 모듈이 제거되었습니다.", + "assets/policies.json.CMP0107": "다른 대상과 이름이 같은 ALIAS 대상을 만들 수 없습니다.", + "assets/policies.json.CMP0108": "대상은 ALIAS 대상을 통해서도 자기 자신에 연결할 수 없습니다.", + "assets/policies.json.CMP0109": "find_program은 실행 권한이 필요하지만 읽기 권한은 필요하지 않습니다.", + "assets/policies.json.CMP0110": "add_test는 테스트 이름에 임의의 문자를 지원합니다.", + "assets/policies.json.CMP0111": "가져온 대상에 위치 속성이 없으면 생성 중에 실패합니다.", + "assets/policies.json.CMP0112": "대상 파일 구성 요소 생성기 식은 대상 종속성을 추가하지 않습니다.", + "assets/policies.json.CMP0113": "Makefile 생성기는 대상 종속성의 사용자 지정 명령을 반복하지 않습니다.", + "assets/policies.json.CMP0114": "ExternalProject 단계 대상은 해당 단계를 완전히 채택합니다.", + "assets/policies.json.CMP0115": "원본 파일 확장명은 명시적이어야 합니다.", + "assets/policies.json.CMP0116": "Ninja 생성기는 add_custom_command의 DEPFILE을 변환합니다.", + "assets/policies.json.CMP0117": "MSVC RTTI 플래그 /GR은 기본적으로 CMAKE_CXX_FLAGS _FLAGS에 추가되지 않습니다.", + "assets/policies.json.CMP0118": "GENERATED 원본은 수동 표시 없이 디렉터리 간에 사용할 수 있습니다.", + "assets/policies.json.CMP0119": "LANGUAGE 원본 파일 속성은 지정된 언어로 명시적으로 컴파일됩니다.", + "assets/policies.json.CMP0120": "WriteCompilerDetectionHeader 모듈이 제거되었습니다.", + "assets/policies.json.CMP0121": "list 명령이 이제 잘못된 인덱스를 감지합니다.", + "assets/policies.json.CMP0122": "UseSWIG는 CSharp 언어에 라이브러리 이름 규칙을 사용합니다.", + "assets/policies.json.CMP0123": "ARMClang cpu/arch 컴파일 및 링크 플래그는 명시적으로 설정해야 합니다.", + "assets/policies.json.CMP0124": "foreach 루프 변수는 루프 범위에서만 사용할 수 있습니다.", + "assets/policies.json.CMP0125": "find_file, find_path, find_library, find_program 명령은 첫 번째 인수로 지정된 변수에 결과를 캐시합니다. CMake 3.21 이전에는, 호출 전에 같은 이름의 캐시 변수가 이미 존재하지만 캐시 변수에 유형이 없는 경우, 같은 이름의 캐시가 아닌 변수는 삭제되고 캐시 변수가 항상 사용되었습니다(다르지만 유사한 동작은 CMP0126 참조). 이는 캐시가 아닌 변수가 같은 이름의 캐시 변수보다 우선해야 한다는 규칙과 충돌합니다. 이러한 상황은 사용자가 cmake -DMYVAR:FILEPATH=blah 대신 cmake -DMYVAR=blah 같은 유형을 지정하지 않고 명령줄에서 캐시 변수를 설정할 때 발생할 수 있습니다.", + "assets/policies.json.CMP0126": "이 정책이 NEW로 설정되면 set 명령이 현재 범위에서 같은 이름의 일반 변수를 제거하지 않습니다. OLD 동작은 다음 상황에서 현재 범위의 같은 이름 일반 변수를 제거합니다.", + "assets/policies.json.CMP0127": "cmake_dependent_option은 전체 조건 구문을 지원합니다.", + "assets/policies.json.CMP0128": "이 정책이 NEW로 설정된 경우:", + "assets/policies.json.CMP0129": "MCST LCC 컴파일러의 컴파일러 ID가 이제 GNU가 아닌 LCC입니다.", + "assets/policies.json.CMP0130": "조건 평가 오류를 진단하는 동안 발생합니다.", + "assets/policies.json.CMP0131": "LINK_LIBRARIES는 :genex:`$` 생성기 식을 지원합니다.", + "assets/policies.json.CMP0132": "첫 실행 시 컴파일러 환경 변수를 설정하지 않습니다.", + "assets/policies.json.CMP0133": "CPack 모듈은 CPack DragNDrop 생성기에서 기본적으로 SLA를 비활성화합니다.", + "assets/policies.json.CMP0134": "기본 레지스트리 보기는 find_file, find_path, find_library, find_package 명령에 대해 TARGET이고 find_program 명령에 대해서는 BOTH입니다.", + "assets/policies.json.CMP0135": "ExternalProject_Add 또는 FetchContent_Declare 명령과 함께 URL 다운로드 방법을 사용하는 경우, CMake 3.23 이하 버전은 추출된 내용의 타임스탬프를 보관 계층 내 타임스탬프와 동일하게 설정합니다. URL이 변경되면 새 보관 계층이 다운로드되고 추출되지만, 추출된 내용의 타임스탬프가 이전 내용보다 최신이 아닐 수 있습니다. 이로 인해 추출된 내용에 의존하는 항목이 내용이 변경되었음에도 다시 빌드되지 않을 수 있습니다.", + "assets/policies.json.CMP0136": "Watcom 런타임 라이브러리 플래그는 추상화를 통해 선택됩니다.", + "assets/policies.json.CMP0137": "try_compile은 프로젝트 모드에서 플랫폼 변수를 전달합니다.", + "assets/policies.json.CMP0138": "CheckIPOSupported는 호출하는 프로젝트의 플래그를 사용합니다.", + "assets/policies.json.CMP0139": "if 명령은 PATH_EQUAL 연산자를 사용하여 경로 비교를 지원합니다.", + "assets/policies.json.CMP0140": "return 명령은 해당 매개 변수를 검사합니다.", + "assets/policies.json.CMP0141": "MSVC 디버그 정보 형식 플래그는 추상화를 통해 선택됩니다.", + "assets/policies.json.CMP0142": "Xcode 생성기는 라이브러리 검색 경로에 구성별 접미사를 추가하지 않습니다.", + "assets/policies.json.CMP0143": "USE_FOLDERS 전역 속성은 기본적으로 ON으로 처리됩니다.", + "assets/policies.json.CMP0144": "find_package는 대문자 _ROOT 변수를 사용합니다.", + "assets/policies.json.CMP0145": "Dart 및 FindDart 모듈이 제거되었습니다.", + "assets/policies.json.CMP0146": "FindCUDA 모듈이 제거되었습니다.", + "assets/policies.json.CMP0147": "Visual Studio 생성기는 사용자 지정 명령을 병렬로 빌드합니다.", + "assets/policies.json.CMP0148": "FindPythonInterp 및 FindPythonLibs 모듈이 제거되었습니다.", + "assets/policies.json.CMP0149": "Visual Studio 생성기는 기본적으로 최신 Windows SDK를 선택합니다.", + "assets/policies.json.CMP0150": "ExternalProject_Add 및 FetchContent_Declare 명령은 상대 GIT_REPOSITORY 경로를 부모 프로젝트의 원격 경로에 상대적인 경로로 처리합니다.", + "assets/policies.json.CMP0151": "AUTOMOC 포함 디렉터리는 기본적으로 시스템 포함 디렉터리입니다.", + "assets/policies.json.CMP0152": "file은 ../ 구성 요소를 축소하기 전에 symlink를 확인합니다.", + "assets/policies.json.CMP0153": "exec_program 명령은 호출하면 안 됩니다.", + "assets/policies.json.CMP0154": "파일 집합을 사용하는 대상에서 생성된 파일은 기본적으로 비공개입니다.", + "assets/policies.json.CMP0155": "C++20 이상을 사용하는 대상의 C++ 원본은 지원되는 경우 가져오기를 검색합니다.", + "assets/policies.json.CMP0156": "링커 기능에 따라 링크 라인에서 라이브러리 중복을 제거합니다.", + "assets/policies.json.CMP0157": "Swift 컴파일 모드는 추상화를 통해 선택됩니다.", + "assets/policies.json.CMP0158": "add_test는 교차 컴파일 시에만 CMAKE_CROSSCOMPILING_EMULATOR를 적용합니다.", + "assets/policies.json.CMP0159": "REGEX가 포함된 파일은 CMAKE_MATCH_를 업데이트합니다.", + "assets/policies.json.CMP0160": "더 많은 읽기 전용 대상 속성을 설정하려 할 때 현재 오류가 발생합니다.", + "assets/policies.json.CMP0161": "CPACK_PRODUCTBUILD_DOMAINS 변수의 기본값은 true입니다.", + "assets/policies.json.CMP0162": "Visual Studio 생성기는 기본적으로 UseDebugLibraries 표시기를 추가합니다.", + "assets/policies.json.CMP0163": "GENERATED 원본 파일 속성은 이제 모든 디렉터리에서 볼 수 있습니다.", + "assets/policies.json.CMP0164": "add_library는 플랫폼에서 지원하지 않는 경우 SHARED 라이브러리를 거부합니다.", + "assets/policies.json.CMP0165": "enable_language는 프로젝트 전에 호출하면 안 됩니다.", + "assets/policies.json.CMP0166": "TARGET_PROPERTY는 정적 라이브러리의 비공개 종속성에 대해 링크 속성을 전이적으로 평가합니다.", + "assets/policies.json.CMP0167": "FindBoost 모듈이 제거되었습니다.", + "assets/policies.json.CMP0168": "FetchContent 모듈은 하위 빌드를 통하는 대신 단계를 직접 구현합니다.", + "assets/policies.json.CMP0169": "단일 인수(선언된 종속성 이름)를 사용하여 FetchContent_Populate를 호출하는 것은 더 이상 사용되지 않습니다.", + "assets/policies.json.CMP0170": "FETCHCONTENT_FULLY_DISCONNECTED가 true로 설정되면 FetchContent_MakeAvailable 및 FetchContent_Populate는 원본 디렉터리가 이미 채워져 있어야 한다는 제약 조건을 적용합니다. 이 요구 사항은 항상 문서화되어 있었지만, CMake 3.29 이하 버전에서는 확인하거나 적용하지 않았습니다. 이 때문에 프로젝트가 종속성이 채워졌다고 예상했지만, 실제로는 채우기가 조용히 건너뛰어 추적하기 어려운 오류가 발생하는 경우가 있었습니다.", + "assets/policies.json.CMP0171": "codegen은 예약된 대상 이름입니다.", + "assets/policies.json.CMP0172": "CPack 모듈은 CPack WIX 생성기에서 기본적으로 컴퓨터별 설치를 활성화합니다.", + "assets/policies.json.CMP0173": "CMakeFindFrameworks 모듈이 제거되었습니다.", + "assets/policies.json.CMP0174": "cmake_parse_arguments는 단일 값 키워드 뒤에 빈 문자열 변수를 정의합니다.", + "assets/policies.json.CMP0175": "add_custom_command는 잘못된 인수를 거부합니다.", + "assets/policies.json.CMP0176": "execute_process ENCODING은 기본적으로 UTF-8입니다.", + "assets/policies.json.CMP0177": "install DESTINATION 경로가 정규화되었습니다.", + "assets/policies.json.CMP0178": "테스트 명령줄은 빈 인수를 유지합니다.", + "assets/policies.json.CMP0179": "링크 라인에서 정적 라이브러리 중복 제거는 첫 번째 항목을 유지합니다. 이 정책은 CMP0156이 NEW로 설정된 경우에만 적용됩니다.", + "assets/policies.json.CMP0180": "project는 항상 _*를 일반 변수로 설정합니다.", + "assets/policies.json.CMP0181": "CMAKE_EXE_LINKER_FLAGS, CMAKE_EXE_LINKER_FLAGS_, CMAKE_SHARED_LINKER_FLAGS, CMAKE_SHARED_LINKER_FLAGS_, CMAKE_MODULE_LINKER_FLAGS, CMAKE_MODULE_LINKER_FLAGS_ 변수는 구문 분석 및 재인용되며 LINKER: 접두사를 지원합니다.", + "assets/policies.json.CMP0182": "기본적으로 AIX에서 공유 라이브러리 보관 계층을 만듭니다.", + "assets/policies.json.CMP0183": "add_feature_info는 전체 조건 구문을 지원합니다.", + "assets/policies.json.CMP0184": "MSVC 런타임 검사 플래그는 추상화를 통해 선택됩니다.", + "assets/policies.json.CMP0185": "FindRuby는 더 이상 대문자 RUBY_* 변수를 제공하지 않습니다.", + "assets/policies.json.CMP0186": "정규식은 반복 검색에서 ^와 최대 한 번만 일치합니다.", + "assets/policies.json.CMP0187": "확장명이 있는 동일한 이름 뒤에 확장명이 없는 원본 파일을 포함합니다.", + "assets/policies.json.CMP0188": "FindGCCXML 모듈이 제거되었습니다.", + "assets/policies.json.CMP0189": "TARGET_PROPERTY는 LINK_LIBRARIES 속성을 전이적으로 평가합니다.", + "assets/policies.json.CMP0190": "FindPython3, FindPython2, FindPython 모듈은 교차 컴파일 모드에서 아티팩트 일관성을 적용합니다.", + "assets/policies.json.CMP0191": "FindCABLE 모듈이 제거되었습니다.", + "assets/policies.json.CMP0192": "GNUInstallDirs는 특수 접두사에서 SYSCONFDIR, LOCALSTATEDIR, RUNSTATEDIR을 절대 경로로 사용합니다.", + "assets/policies.json.CMP0193": "GNUInstallDirs는 설치 접두사 /에 대해 usr/가 앞에 붙은 CMAKE_INSTALL_*를 캐시합니다.", + "assets/policies.json.CMP0194": "MSVC는 언어 ASM의 어셈블러가 아닙니다.", + "assets/policies.json.CMP0195": "빌드 트리 내 Swift 모듈은 Swift 모듈 디렉터리 구조를 사용합니다.", + "assets/policies.json.CMP0196": "CMakeDetermineVSServicePack 모듈이 제거되었습니다.", + "assets/policies.json.CMP0197": "MSVC 링크 -machine: 플래그가 CMAKE_*_LINKER_FLAGS에 없습니다.", + "assets/policies.json.CMP0198": "CMakeLists.txt에 CMAKE_PARENT_LIST_FILE이 정의되어 있지 않습니다.", + "assets/policies.json.CMP0199": ":genex:`$`는 선택되지 않은 매핑된 구성과 일치하지 않습니다.", + "assets/policies.json.CMP0200": "가져온 대상의 위치 및 구성 선택이 더 일관됩니다.", + "assets/policies.json.CMP0201": "Python::NumPy는 Python::Development.Module에 의존하지 않습니다.", + "assets/policies.json.CMP0202": "PDB 파일 이름에는 항상 대상의 구성별 POSTFIX가 포함됩니다.", + "assets/policies.json.CMP0203": "_WINDLL은 MSVC ABI를 대상으로 지정하는 공유 라이브러리에 대해 정의됩니다.", + "assets/policies.json.CMP0204": "MSVC ABI를 대상으로 지정할 때 문자 집합이 항상 정의됩니다." +} \ No newline at end of file diff --git a/i18n/kor/package.i18n.json b/i18n/kor/package.i18n.json index d10290b921..82569a648a 100644 --- a/i18n/kor/package.i18n.json +++ b/i18n/kor/package.i18n.json @@ -4,6 +4,8 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "cmake-tools.command.cmake.addFileToCMakeLists.title": "Add File to CMake Lists", + "cmake-tools.command.cmake.removeFileFromCMakeLists.title": "Remove File from CMake Lists", "cmake-tools.command.cmake.openCMakePresets.title": "CMakePresets.json 열기", "cmake-tools.command.cmake.addConfigurePreset.title": "구성 사전 설정 추가", "cmake-tools.command.cmake.addBuildPreset.title": "빌드 사전 설정 추가", @@ -46,6 +48,9 @@ "cmake-tools.command.cmake.cleanConfigureWithDebugger.title": "CMake 디버거를 사용하여 캐시 삭제 및 다시 구성", "cmake-tools.command.cmake.cleanConfigureAll.title": "캐시 삭제 및 모든 프로젝트 다시 구성", "cmake-tools.command.cmake.cleanConfigureAllWithDebugger.title": "CMake 디버거를 사용하여 캐시 삭제 및 모든 프로젝트 다시 구성", + "cmake-tools.command.cmake.fullCleanConfigure.title": "빌드 디렉터리 삭제 및 재구성", + "cmake-tools.command.cmake.fullCleanConfigureAll.title": "빌드 디렉터리 삭제 및 모든 프로젝트 재구성", + "cmake-tools.command.cmake.outline.fullCleanConfigureAll.title": "전체 정리 모든 프로젝트 재구성", "cmake-tools.command.cmake.editCacheUI.title": "CMake 캐시 편집(UI)", "cmake-tools.command.cmake.outline.cleanConfigure.title": "클린 다시 구성", "cmake-tools.command.cmake.outline.cleanConfigureWithDebugger.title": "CMake 디버거를 사용하여 다시 구성 정리", @@ -58,6 +63,9 @@ "cmake-tools.command.cmake.cleanConfigureAndBuild.title": "캐시 삭제, 재구성, 빌드", "cmake-tools.command.cmake.cleanConfigureAndBuildAll.title": "캐시 삭제, 재구성, 모든 프로젝트 빌드", "cmake-tools.command.cmake.outline.cleanConfigureAndBuildAll.title": "정리, 재구성, 모든 프로젝트 빌드", + "cmake-tools.command.cmake.fullCleanConfigureAndBuild.title": "빌드 디렉터리 삭제, 재구성 및 빌드", + "cmake-tools.command.cmake.fullCleanConfigureAndBuildAll.title": "빌드 디렉터리 삭제, 모든 프로젝트 재구성 및 빌드", + "cmake-tools.command.cmake.outline.fullCleanConfigureAndBuildAll.title": "전체 정리 재구성, 모든 프로젝트 빌드", "cmake-tools.command.cmake.ctest.title": "테스트 실행", "cmake-tools.command.cmake.ctestAll.title": "모든 프로젝트에 대한 테스트 실행", "cmake-tools.command.cmake.cpack.title": "CPack 실행", @@ -74,6 +82,7 @@ "cmake-tools.command.cmake.launchTarget.title": "디버깅하지 않고 실행", "cmake-tools.command.cmake.launchTargetAll.title": "디버깅하지 않고 모든 프로젝트 실행", "cmake-tools.command.cmake.selectLaunchTarget.title": "시작/디버그 대상 설정", + "cmake-tools.command.cmake.selectBuildAndLaunchTarget.title": "빌드 및 시작/디버그 대상을 설정하세요.", "cmake-tools.command.cmake.stop.title": "빌드 취소", "cmake-tools.command.cmake.stopAll.title": "모든 프로젝트의 빌드 취소", "cmake-tools.command.cmake.resetState.title": "CMake Tools 확장 상태 다시 설정(문제 해결용)", @@ -105,6 +114,7 @@ "cmake-tools.configuration.cmake.generator.description": "사용할 CMake 생성기입니다.", "cmake-tools.configuration.cmake.toolset.description": "구성할 때 사용할 CMake 도구 세트입니다.", "cmake-tools.configuration.cmake.platform.description": "구성할 때 사용할 CMake 플랫폼입니다.", + "cmake-tools.configuration.cmake.shell.description": "CMake, CTest, CPack 명령(예: Git Bash 또는 MSYS2)을 실행할 때 사용할 셸 실행 파일 경로입니다. 이 경로가 설정되면 모든 하위 프로세스 호출이 해당 셸을 통해 실행됩니다. POSIX 경로 변환이 필요한 임베디드 툴체인에서 유용합니다. 값이 null이면 기본 시스템 셸 동작이 사용됩니다.", "cmake-tools.configuration.cmake.configureArgs.description": "구성할 때 CMake에 전달할 추가 인수입니다. CMake 사전 설정을 사용할 때 이러한 인수가 활성 구성 사전 설정에서 제공하는 인수에 일시적으로 추가됩니다.", "cmake-tools.configuration.cmake.buildArgs.description": "빌드할 때 CMake에 전달할 추가 인수입니다. CMake 사전 설정을 사용할 때 이러한 인수가 활성 빌드 사전 설정에서 제공하는 인수에 임시로 추가됩니다.", "cmake-tools.configuration.cmake.buildToolArgs.description": "빌드할 때 기본 빌드 도구에 전달할 추가 인수입니다. CMake 사전 설정을 사용할 때 이러한 인수가 빌드 도구를 호출하기 위해 활성 빌드 사전 설정에서 제공하는 인수에 임시로 추가됩니다.", @@ -112,7 +122,7 @@ "cmake-tools.configuration.cmake.ctestPath.description": "CTest 실행 파일의 경로입니다. Null인 경우 cmake.cmakePath에서 유추됩니다(null을 유지하는 것이 좋음).", "cmake-tools.configuration.cmake.cpackPath.description": "CPack 실행 파일의 경로입니다. Null인 경우 cmake.cmakePath에서 유추됩니다(null을 유지하는 것이 좋음). 사전 설정 대신 키트를 사용하는 경우 무시됩니다.", "cmake-tools.configuration.cmake.ctest.parallelJobs.markdownDescription": "병렬 테스트 작업 수입니다. `#cmake.parallelJobs#` 값을 사용하려면 0을 사용합니다. 이는 `#cmake.ctest.allowParallelJobs#`이 `true`로 설정된 경우에만 적용됩니다.", - "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "Ctest를 병렬로 실행할 수 있지만 그로 인해 결과 출력이 왜곡될 수 있으며 테스트 탐색기에 테스트 진행 상황이 정확하게 반영되지 않을 수 있습니다.", + "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "Ctest를 병렬로 실행할 수 있지만 그로 인해 결과 출력이 왜곡될 수 있으며 테스트 탐색기에 테스트 진행 상황이 정확하게 반영되지 않을 수 있습니다. 비활성화하면 테스트 탐색기 표시 순서와 일치하는 사전순으로 테스트가 순차적으로 실행됩니다.", "cmake-tools.configuration.cmake.ctest.testExplorerIntegrationEnabled.description": "테스트 탐색기와의 통합을 사용할 수 있는지 여부입니다. 이는 테스트 통합에 다른 확장을 사용하려는 경우 사용하지 않도록 설정하는 데 유용합니다.", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiter.markdownDescription": "테스트 도구 모음 이름과 그룹 테스트를 테스트 탐색기에서 계층적으로 구분하는 데 사용되는 선택적 구분 기호입니다. 이 문자열은 정규식에서 사용되므로 일부 구분 기호는 이스케이프해야 할 수 있습니다. 예: `-`(1개의 구분 기호: `-`), `\\.|::`(두 개의 구분 기호: `.` 또는 `::`. `.`은 이스케이프해야 합니다.)", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiterMaxOccurrence.markdownDescription": "구분 기호를 사용하여 테스트 이름을 분할할 수 있는 최대 횟수입니다. `0`은 제한이 없음을 의미합니다.", @@ -124,9 +134,21 @@ "cmake-tools.configuration.cmake.ctest.failurePatterns.actual": "실제 테스트 출력의 일치 그룹 인덱스입니다. 기본값은 정의되지 않음입니다.", "cmake-tools.configuration.cmake.ctest.failurePatterns.expected": "예상된 테스트 출력의 일치 그룹 인덱스입니다. 기본값은 정의되지 않음입니다.", "cmake-tools.configuration.cmake.ctest.debugLaunchTarget.description": "CTest를 사용하여 테스트를 디버깅할 때 시작할 launch.json의 대상 이름입니다. 기본적으로 존재하지 않는 대상이 있을 경우, 사용 가능한 모든 대상이 포함된 선택기가 표시됩니다.", + "cmake-tools.configuration.cmake.ctest.neverDebugTestsWithLaunchConfiguration.description": "true로 설정하면 시작 구성 없이 항상 테스트를 디버그하며, 빠른 선택 메뉴를 건너뜁니다. 기본값은 false입니다.", "cmake-tools.configuration.cmake.parseBuildDiagnostics.description": "경고 및 오류에 대한 컴파일러 출력을 구문 분석합니다.", "cmake-tools.configuration.cmake.enabledOutputParsers.description": "사용할 출력 파서입니다. 지원되는 파서: GNULD 스타일 링커 출력의 경우 `cmake`, `gcc`, `gnuld`, Microsoft Visual C++의 경우 `msvc`, Green Hills 컴파일러의 경우 `ghs`(--no_wrap_diagnostics --brief_diagnostics 포함), Wind River Diab 컴파일러의 경우 `diab`, 그리고 include-what-you-use 진단의 경우 `iwyu`입니다.", - "cmake-tools.configuration.cmake.debugConfig.description": "대상을 디버깅할 때 사용할 디버그 구성입니다.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.markdownDescription": "빌드 출력에 대한 추가 문제 매처입니다. CMake에서 `add_custom_command`/`add_custom_target`을 통해 통합된 clang-tidy, PCLint Plus, cppcheck 또는 사용자 지정 스크립트에서 진단 정보를 표시할 때 사용하세요.\n\n각 항목은 진단 소스 레이블로 사용되는 `name`, 정규식 `regexp`, 그리고 `file`, `line`, `column`, `severity`, `message`, `code`에 해당하는 캡처 그룹 인덱스를 정의합니다.\n\n예를 들어, `/path/file.cpp:10:5: warning: some message [check-name]`와 같은 clang-tidy 출력을 매칭하려면 다음과 같이 설정합니다:\n```json\n[\n {\n \"name\": \"clang-tidy\",\n \"regexp\": \"^(.+?):(\\\\d+):(\\\\d+):\\\\s+(warning|error|note):\\\\s+(.+?)\\\\s*(?:\\\\[(.+)\\\\])?$\",\n \"file\": 1,\n \"line\": 2,\n \"column\": 3,\n \"severity\": 4,\n \"message\": 5,\n \"code\": 6\n }\n]\n```\n\n사용자 지정 매처는 기본 제공 파서(`gcc`, `msvc` 등) **이후**에 실행되므로, 기본 컴파일러의 출력 라인을 가로채지 않습니다.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.name": "문제 창에서 진단 소스 레이블로 사용되는 이 선택기의 고유 이름입니다.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.regexp": "각 빌드 출력 줄과 일치시키는 정규식입니다.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.file": "열 번호에 대한 캡처 그룹 인덱스입니다. 기본값은 `1`입니다.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.line": "줄 번호의 캡처 그룹 인덱스입니다. 기본값은 `2`입니다.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.column": "열 번호에 대한 캡처 그룹 인덱스입니다. 선택 사항입니다.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.group": "심각도에 대한 캡처 그룹 인덱스입니다. 'error', 'warning', 'info' 중 하나를 캡처해야 합니다.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.fixed": "이 패턴의 모든 일치 항목에 적용할 고정 심각도입니다.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.message": "진단 메시지의 캡처 그룹 인덱스입니다. 기본값은 `3`입니다.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.code": "선택적 진단 코드에 대한 캡처 그룹 인덱스입니다.", + "cmake-tools.configuration.cmake.debugConfig.description": "대상을 디버깅할 때 사용할 디버그 구성입니다. `type`이 지정되면 자동으로 감지된 디버거 구성을 건너뛰고, 대상에서 최소한의 기본 구성(프로그램, cwd, 이름)만 생성됩니다. 이 설정에서 다른 모든 속성이 적용되어 어떤 디버그 어댑터에 대해서든 디버그 시작 구성을 완전히 제어할 수 있습니다.", + "cmake-tools.configuration.cmake.debugConfig.type.description": "사용할 디버그 어댑터 유형입니다(예: `cppdbg`, `cppvsdbg`, `lldb`, `codelldb`). 설정하면 CMake 캐시에서 자동 디버거 검색을 건너뛰고 이 유형을 직접 사용합니다. 디버그 어댑터에 필요한 추가 속성은 `#cmake.debugConfig#`에 추가할 수 있습니다.", "cmake-tools.configuration.cmake.debugConfig.symbolSearchPath.description": "Visual Studio 디버거 기호 검색 경로입니다.", "cmake-tools.configuration.cmake.debugConfig.additionalSOLibSearchPath.description": ".so 파일을 검색할 GDB 또는 LLDB 경로입니다.", "cmake-tools.configuration.cmake.debugConfig.externalConsole.description": "프로그램의 외부 콘솔을 시작합니다.", @@ -226,11 +248,13 @@ "cmake-tools.configuration.cmake.automaticReconfigure.description": "키트 또는 구성 사전 설정이 변경되면 CMake 프로젝트 디렉터리를 자동으로 구성합니다.", "cmake-tools.configuration.cmake.pinnedCommands.description": "항상 기본적으로 고정할 CMake 명령 목록입니다. CMake Tools 사이드바 '고정된 명령' 섹션에 표시됩니다.", "cmake-tools.configuration.cmake.enableAutomaticKitScan.description": "키트를 선택하지 않은 경우 키트 자동 검사를 활성화합니다. CMake 사전 설정을 사용하지 않는 경우에만 적용됩니다.", + "cmake-tools.configuration.cmake.removeStaleKitsOnScan.description": "Remove compiler-based kits from the user kits file during a full kit scan when they are no longer rediscovered. Set \"keep\": true in a kit entry to preserve it.", "cmake-tools.configuration.cmake.enableLanguageServices.description": "CMake 파일에 언어 서비스를 사용하도록 설정합니다. 이렇게 하면 구문 강조 표시, 코드 완성 및 기타 기능을 사용할 수 있습니다.", "cmake-tools.configuration.cmake.preRunCoverageTarget.description": "테스트 탐색기를 사용하여 적용 범위가 있는 테스트를 실행하기 전에 빌드할 대상", "cmake-tools.configuration.cmake.postRunCoverageTarget.description": "테스트 탐색기를 사용하여 적용 범위가 있는 테스트를 실행한 후 빌드할 대상", "cmake-tools.configuration.cmake.coverageInfoFiles.description": "테스트 탐색기를 사용하여 적용 범위가 있는 테스트를 실행한 후 처리할 LCOV 적용 범위 정보 파일입니다.", "cmake-tools.configuration.cmake.useFolderPropertyInBuildTargetDropdown.description": "기본 빌드 대상 드롭다운이 CMake 폴더 그룹에 따라 그룹화되는지 여부를 제어합니다.", + "cmake-tools.configuration.cmake.setBuildTargetSameAsLaunchTarget.description": "이 기능을 켜면 시작/디버그 대상을 설정할 때 빌드 대상도 자동으로 일치하도록 설정됩니다. 빌드 대상은 여전히 독립적으로 변경할 수 있습니다.", "cmake-tools.debugger.pipeName.description": "디버거 통신에 사용할 파이프(Windows) 또는 도메인 소켓(Unix의 경우)의 이름입니다.", "cmake-tools.debugger.clean.description": "구성하기 전에 정리합니다.", "cmake-tools.debugger.configureAll.description": "모든 프로젝트에 대해 구성합니다.", @@ -262,6 +286,7 @@ "cmake-tools.configuration.cmake.launchBehavior.breakAndReuseTerminal.markdownDescriptions": "시작 터미널 인스턴스가 재사용되고 대상을 시작하기 전에 활성 포그라운드 프로세스를 종료하기 위해 `break` 명령이 전송됩니다.", "cmake-tools.configuration.cmake.launchBehavior.newTerminal.markdownDescriptions": "새 터미널 인스턴스가 만들어지고 대상이 해당 인스턴스에서 시작됩니다. 기존 터미널은 자동으로 정리되지 않습니다.", "cmake-tools.configuration.cmake.loadCompileCommands.description": "확장이 compile_commands.json을 읽어 단일 파일 컴파일을 사용하도록 설정할지 여부를 제어합니다.", + "cmake-tools.configuration.cmake.outlineViewType.description": "Project Outline View`s type. Available options are: \"list\" and \"tree\".", "cmake-tools.command.cmake.projectStatus.update.title": "프로젝트 상태 새로 고침", "cmake-tools.command.cmake.pinnedCommands.add.title": "고정할 CMake 명령 추가", "cmake-tools.command.cmake.pinnedCommands.remove.title": "명령 고정 해제", @@ -272,5 +297,33 @@ "cmake-tools.debugger.label": "CMake 디버거", "cmake-tools.command.cmake.appendBuildDirectoryToWorkspace.title": "현재 작업 영역에 빌드 디렉터리 추가", "cmake-tools.command.workbench.action.tasks.configureTaskRunner.title": "작업 구성", - "cmake-tools.command.workbench.action.tasks.runTask.title": "작업 실행" + "cmake-tools.command.workbench.action.tasks.runTask.title": "작업 실행", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.description": "Add source files to CMake lists when they are created.", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.no.description": "Do not automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.yes.description": "Automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.description": "Remove source files from CMake lists when they are deleted.", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.no.description": "Do not automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.yes.description": "Automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.markdownDescription": "How to choose which `set()` or `list(APPEND/PREPEND/INSERT)` command invocation to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.never.description": "Do not look for variable modification command invocations, only look for source command invocations.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askFirstParentDir.description": "Present a Quick Pick with options from the first `CMakeLists.txt` found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askParentDirs.description": "Present a Quick Pick with options from all `CMakeLists.txt` files found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.sourceVariables.markdownDescription": "Variables to add source files to. Variables appearing earlier in this list will be given higher priority. Only used if `#cmake.modifyLists.variableSelection#` is not `never`. Supports glob patterns.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.description": "How to choose which target to add new source files to when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askNearestSourceDir.description": "Present a Quick Pick with targets whose source directories are closest to location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askParentSourceDirs.description": "Present a Quick Pick with targets whose source directories contain the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.description": "How to choose which of a target's source command invocations to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askFirstParentDir.description": "Present a Quick Pick with options from the CMake list file in the parent directory closest to the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askParentDirs.description": "Present a Quick Pick with options from all CMake list files in the parent directories of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSourceCommands.markdownDescription": "Commands to treat as target source commands when adding source files CMake lists. Commands appearing earlier in this list will be given higher priority. Supports glob patterns.\r\n\r\nIf you are using the File API (see `#cmake.cmakeCommunicationMode#`), user-defined functions and macros which call the commands in this list are detected automatically and added to it.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.description": "How to choose which of a target's visibility scopes, file sets, or source keyword parameters to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.ask.description": "Present a Quick Pick with options from the selected target source command invocation.", + "cmake-tools.configuration.cmake.modifyLists.sourceListKeywords.markdownDescription": "Keyword arguments to user-defined functions and macros which introduce lists of source files. If left empty, all arguments consisting of only upper-case letters and underscores will be considered. Supports glob patterns.", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier" } \ No newline at end of file diff --git a/i18n/kor/schemas/kits-schema.json.i18n.json b/i18n/kor/schemas/kits-schema.json.i18n.json index 1a1f0edaae..691f1c2e22 100644 --- a/i18n/kor/schemas/kits-schema.json.i18n.json +++ b/i18n/kor/schemas/kits-schema.json.i18n.json @@ -17,9 +17,11 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "도구 체인 파일 경로", "schemas/kits-schema.json.items.properties.visualStudio": "Visual Studio 제품의 인스턴스 ID", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "대상에 대한 아키텍처", + "schemas/kits-schema.json.items.properties.visualStudioArguments": "Arguments to vcvarsall.bat", "schemas/kits-schema.json.items.properties.environmentSetupScript": "키트의 환경을 수정하는 스크립트의 절대 경로", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "환경 변수 값", - "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "CMake 설정 값", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.0": "CMake 설정 값 문자열 내 세미콜론은 이스케이프 처리됩니다.", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.1": "값은 이스케이프 없이 세미콜론으로 연결되어 CMake 목록을 구성합니다.", "schemas/kits-schema.json.items.properties.preferredGenerator": "이 키트의 기본 설정 CMake 생성기 설정", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.name": "사용할 생성기 이름", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.platform": "-A 인수에 대한 CMake 플랫폼", diff --git a/i18n/kor/src/cmakeListsModifier.i18n.json b/i18n/kor/src/cmakeListsModifier.i18n.json new file mode 100644 index 0000000000..a3c9d1d6a2 --- /dev/null +++ b/i18n/kor/src/cmakeListsModifier.i18n.json @@ -0,0 +1,51 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "add.newly.created.files": "Add newly created files to CMakeLists.txt", + "error.processing.add.files": "Error processing added files", + "remove.deleted.file": "Remove a deleted file from CMakeLists.txt", + "error.processing.delete.files": "Error processing deleted files", + "add.file.no.code.model": "Adding a file without a valid code model", + "file.already.in.target": "{0} already in target {1}.", + "no.targets.found": "No targets found. {0} not added to build system.", + "no.source.command.invocations": "No source command invocations found. {0} not added to build system.", + "delete.file.no.code.model": "Deleting a file without a valid code model", + "not.modifying.unsaved.delete": "Not modifying {0} to delete {1} because it has unsaved changes.", + "add.to.which.variable": "CMake: Add {0} to which variable?", + "add.to.which.target": "CMake: Add {0} to which target?", + "add.to.which.invocation": "CMake: Add {0} to which command invocation of {1}?", + "add.to.which.scope.fileset.keyword": "CMake: Add {0} to which Scope, File Set, or Keyword?", + "open.file": "Open File", + "not.modifying.unsaved.files": "Cannot modify {0} because it has unsaved changes.", + "skipping.unsaved.files": "Skipping {0} file(s) with unsaved changes: {1}", + "edit.label.remove.source.file": "CMake: Remove deleted source file", + "edit.label.add.source.file": "CMake: Add new source file", + "edits.applied.successfully": "Successfully applied {0} CMake list edit(s).", + "edits.apply.failed": "Failed to apply CMake list edits: {0}", + "not.local.file.add": "{0} is not a local file. Not adding to CMake lists.", + "no.candidates.found": "No suitable locations found to add {0}.", + "not.modifying.unsaved.add": "Not modifying {0} to add {1} because it has unsaved changes.", + "not.local.file.remove": "{0} is not a local file. Not removing from CMake lists.", + "could.not.open.file": "Could not open file {0}: {1}", + "file.not.found.in.cmake.lists": "{0} not found in CMake lists.", + "file.already.in.destination": "{0} already in {1} at {2}:{3}", + "parse.error.examining.cmake.lists": "Parse error while examining CMakeLists.txt files. Details: {0}", + "could.not.open.cmake.lists": "Could not open {0}: {1}", + "parse.error.finding.invocations": "Parse error while finding command invocations to add to. CMake file modified since last configure? Details: {0}", + "unexpected.command.found": "Found \"{0}\", expected \"{1}\". CMake file modified since last configure? Details: {2}:{3}", + "scope.private.detail": "{0} will be used to build {1}", + "scope.public.detail": "{0} will be used to build both {1} and targets that use {1}", + "scope.interface.detail": "{0} will be used to build targets that use {1}", + "fileset.headers.detail": "{0} will be used via a language's #include mechanism", + "fileset.cxx.modules.detail": "{0} contains C++ interface module or partition units.", + "label.fileset": "{0} File Set", + "label.scope": "{0} Scope", + "fileset.type": "Type: {0}", + "scope.with.fileset.detail": "{0} Scope: {1}", + "keyword.of.command": "Keyword of {0} command", + "command.label": "{0} Command", + "add.to.command.arguments": "Add {0} to the list of arguments to {1} command" +} \ No newline at end of file diff --git a/i18n/kor/src/cmakeProject.i18n.json b/i18n/kor/src/cmakeProject.i18n.json index 47dcf79c7a..b8beb4c92e 100644 --- a/i18n/kor/src/cmakeProject.i18n.json +++ b/i18n/kor/src/cmakeProject.i18n.json @@ -9,6 +9,7 @@ "generator.changed.restart.driver": "생성자 변경 후 CMake 드라이버를 다시 시작하는 중입니다.", "preferredGenerator.changed.restart.driver": "preferredGenerators 변경 후 CMake 드라이버를 다시 시작하는 중입니다.", "bad.executable": "잘못된 CMake 실행 파일: {0}. 설치되어 있는지 또는 {1} 설정 값에 올바른 경로가 포함되어 있는지 확인합니다.", + "shell.changed.restart.driver": "셸 변경 후 CMake 드라이버를 다시 시작합니다.", "targests.in.preset": "[미리 설정된 대상]", "constructing.cmakeproject": "새 CMakeProject 인스턴스 생성", "disposing.driver": "CMake 드라이버를 삭제하는 중", @@ -142,9 +143,9 @@ "configure.now.button": "지금 구성", "cache.load.failed": "CMakeCache.txt 파일을 찾을 수 없습니다. 먼저 프로젝트를 구성하세요.", "set.up.before.selecting.target": "대상을 선택하기 전에 CMake 프로젝트를 설정합니다.", - "select.active.target.tooltip": "기본 빌드 대상 선택", "enter.target.name": "대상 이름 입력", "target.to.build.description": "빌드할 대상", + "select.active.target.tooltip": "기본 빌드 대상 선택", "build.failed": "빌드하지 못했습니다.", "driver.died.after.build.succeeded": "빌드에 성공한 후 바로 CMake 드라이버가 종료됨", "driver.died.before.workflow": "워크플로를 시작하기 전에 CMake 드라이버가 종료되었습니다.", @@ -167,6 +168,7 @@ "target.debugging.unsupported": "대상 디버깅이 레거시 드라이버에서 더 이상 지원되지 않음", "learn.more.button": "자세한 정보", "failed.to.prepare.target": "이름이 {0}인 실행 파일 대상을 준비하지 못했음", + "debug.configuration.from.settings": "사용자 설정의 디버그 구성: {0}", "debug.configuration.from.cache": "캐시의 디버그 구성: {0}", "problem.getting.debug": "캐시에서 디버그 구성을 가져오는 동안 문제가 발생했습니다.", "starting.debugger.with": "다음 구성을 사용하여 디버거를 시작하는 중입니다.", diff --git a/i18n/kor/src/ctest.i18n.json b/i18n/kor/src/ctest.i18n.json index 9209b5e9a6..2710cc5ce5 100644 --- a/i18n/kor/src/ctest.i18n.json +++ b/i18n/kor/src/ctest.i18n.json @@ -27,6 +27,13 @@ "test.buildingPostRunCoverageTarget": "테스트가 적용 범위로 실행된 후 프로젝트 {1}에 대한 postRunCoverageTarget '{0}'을 빌드합니다.", "test.postRunCoverageTargetFailure": "{0}의 프로젝트에서 대상 postRunCoverageTarget을 빌드하지 못했습니다. 적용 범위 데이터 처리를 건너뜁습니다.", "test.skip.run.build.failure": "빌드 오류로 인해 테스트가 실행되지 않습니다.", + "debug.without.launch.config": "시작 구성 없이 디버깅하기", + "choose.debug.method": "테스트를 디버깅하는 방법을 선택하세요.", + "yes": "예", + "no": "아니요", + "never.debug.with.launch.prompt": "이 작업 영역에서 시작 구성 없이 테스트를 항상 디버그하시겠습니까?", + "no.launch.config": "시작 구성을 찾을 수 없습니다.", + "choose.launch.config": "테스트를 디버그할 시작 구성을 선택합니다.", "test.skip.debug.build.failure": "빌드 오류로 인해 테스트가 디버깅되지 않습니다.", "build.failed": "빌드 실패", "run.tests.profile": "테스트 실행", diff --git a/i18n/kor/src/drivers/cmakeDriver.i18n.json b/i18n/kor/src/drivers/cmakeDriver.i18n.json index f9ec6ccf68..19b908edbe 100644 --- a/i18n/kor/src/drivers/cmakeDriver.i18n.json +++ b/i18n/kor/src/drivers/cmakeDriver.i18n.json @@ -5,13 +5,14 @@ // Do not edit this file. It is machine generated. { "no.usable.generator.found": "사용 가능한 생성기를 찾을 수 없습니다.", - "user.closed.file.compilation.terminal": "사용자가 파일 컴파일 터미널을 닫음", "disposing.base.cmakedriver": "기본 CMakeDriver를 삭제하는 중", "async.disposing.cmake.driver": "CMake 드라이버를 비동기 삭제하는 중", "test.with.overrides": "참고: {0} 사전 설정을 사용하여 테스트하고 있지만 VS Code 설정에서 일부 재정의가 적용되고 있습니다.", "package.with.overrides": "참고: {0} 사전 설정을 사용하여 패키징하고 있지만 VS Code 설정에서 일부 재정의가 적용되고 있습니다.", "compile.with.overrides": "참고: {0} 사전 설정을 사용하여 컴파일하고 있지만 VS Code 설정에서 일부 재정의가 적용되고 있습니다.", "file.compilation": "파일 컴파일", + "compile.finished.with.error": "컴파일이 완료되었지만 오류가 발생했습니다.", + "compile.finished.successfully": "컴파일이 완료되었습니다.", "removing": "{0}을(를) 제거하는 중", "unlink.failed": "캐시 파일 {0}을(를) 제거하지 못함", "switching.to.config.preset": "구성 사전 설정을 전환 중: {0}", diff --git a/i18n/kor/src/extension.i18n.json b/i18n/kor/src/extension.i18n.json index 491cae7da4..3aaf84e55d 100644 --- a/i18n/kor/src/extension.i18n.json +++ b/i18n/kor/src/extension.i18n.json @@ -11,10 +11,11 @@ "configure.now.button": "지금 구성", "configure.recommended": "새 키트 정의로 업그레이드한 후 다시 구성하는 것이 좋습니다.", "using.cache.to.configure.workspace.on.open": "캐시를 사용하여 작업 영역 {0}을(를) 구성하려는 중", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier", + "failed.to.open.cache.file.on.code.model.update": "Failed to open CMake cache file on code model update", "update.code.model.for.cpptools": "cpptools에 대한 코드 모델 업데이트", "update.intellisense.disabled": "{0}이(가) {1}(으)로 설정되어 있으므로 구성 공급자를 업데이트하지 않습니다.", "failed.to.get.cpptools.api": "cppTools API를 가져오지 못함", - "filed.to.open.cache.file.on.code.model.update": "코드 모델 업데이트에서 CMake 캐시 파일을 열지 못함", "opening.text.editor.for": "{0}의 텍스트 편집기를 여는 중", "no.kits.file.what.to.do": "키트 파일이 없습니다. 원하는 작업을 선택하세요.", "scan.for.kits.button": "키트 검색", @@ -49,6 +50,7 @@ "cmake.finished.returned.unserializable": "{0} 완료(직렬화할 수 없는 값이 반환됨)", "loading.extension.commands": "확장 명령을 로드하는 중", "register.command": "CMakeTools 확장 명령 {0} 등록", + "bookmark.target.not.resolved": "책갈피 \"{0}\"를 대상에 연결할 수 없습니다. 프로젝트를 다시 구성해야 할 수 있습니다.", "search.project.outline": "프로젝트 개요를 필터링할 검색 용어 입력", "added.to": "다음에 추가됨", "removed.from": "다음에서 제거됨", diff --git a/i18n/kor/src/proc.i18n.json b/i18n/kor/src/proc.i18n.json index 89a38b4010..92ec3b3b85 100644 --- a/i18n/kor/src/proc.i18n.json +++ b/i18n/kor/src/proc.i18n.json @@ -6,11 +6,11 @@ { "executing.command": "명령 실행 중: {0}", "execution.environment": "환경 포함: {0}", - "process.error": "명령 {0}이(가) 오류 {1}과(와) 함께 실패함. 스택 {2}", - "process.exit.with.signal": "명령 {0}이(가) 코드 {1} 및 신호 {2}과(와) 함께 종료됨. 스택 {3}", - "process.exit": "명령 {0}이(가) 코드 {1}과(와) 함께 종료됨. 스택 {2}", - "process.exit.stdout": "표준 출력 시 명령 출력: {0} 스택: {1}", - "process.exit.stderr": "표준 오류 시 명령 출력: {0} 스택: {1}", + "process.error": "다음 오류로 {0}이(가) 실패했습니다. {1}", + "process.exit.with.signal": "명령: {0} 종료된 코드: {1} 및 신호: {2}", + "process.exit": "명령 \"{0}\"이(가) 코드 {1}과(와) 함께 종료되었습니다.", + "process.exit.stdout": "표준 출력 시 명령 출력: {0}", + "process.exit.stderr": "표준 오류 시 명령 출력: {0}", "processing.data.event.stdout": "proc stdout에서 {0} 이벤트 처리 중", "processing.data.event.stderr": "proc stderr에서 {0} 이벤트 처리 중", "resolving.close.event": "{0} 이벤트 해결 프로세스" diff --git a/i18n/kor/src/util.i18n.json b/i18n/kor/src/util.i18n.json index 8b01e4fb88..2c10f2d47a 100644 --- a/i18n/kor/src/util.i18n.json +++ b/i18n/kor/src/util.i18n.json @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "invalid.value": "cmake 값으로 변환할 값이 잘못되었습니다. {0}", "invalid.version.string": "잘못된 버전 문자열 {0}", "extension.is.undefined": "확장이 정의되지 않았습니다!", "sourcedirectory.not.a.directory": "\"sourceDirectory\"는 디렉터리가 아닙니다." diff --git a/i18n/plk/assets/policies.json.i18n.json b/i18n/plk/assets/policies.json.i18n.json new file mode 100644 index 0000000000..e01c19cddb --- /dev/null +++ b/i18n/plk/assets/policies.json.i18n.json @@ -0,0 +1,212 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "assets/policies.json.CMP0000": "Należy określić minimalną wymaganą wersję narzędzia CMake.", + "assets/policies.json.CMP0001": "CMAKE_BACKWARDS_COMPATIBILITY nie powinny być już używane.", + "assets/policies.json.CMP0002": "Logiczne nazwy obiektów docelowych muszą być globalnie unikatowe.", + "assets/policies.json.CMP0003": "Biblioteki połączone za pośrednictwem pełnej ścieżki nie tworzą już ścieżek wyszukiwania konsolidatora.", + "assets/policies.json.CMP0004": "Połączone biblioteki mogą nie mieć spacji wiodących lub końcowych.", + "assets/policies.json.CMP0005": "Wartości definicji preprocesora są teraz automatycznie zmieniane.", + "assets/policies.json.CMP0006": "Instalowanie miejsc docelowych MACOSX_BUNDLE wymaga lokalizacji docelowej pakietu.", + "assets/policies.json.CMP0007": "polecenie listy nie ignoruje już pustych elementów.", + "assets/policies.json.CMP0008": "Biblioteki połączone pełną ścieżką muszą mieć prawidłową nazwę pliku biblioteki.", + "assets/policies.json.CMP0009": "Wywołania GLOB_RECURSE FILE nie powinny domyślnie następować po sylinkach.", + "assets/policies.json.CMP0010": "Nieprawidłowa składnia odwołania do zmiennej jest błędem.", + "assets/policies.json.CMP0011": "Dołączone skrypty wykonują automatyczne cmake_policy PUSH i POP.", + "assets/policies.json.CMP0012": "Polecenie IF rozpoznaje liczby i stałe logiczne.", + "assets/policies.json.CMP0013": "Zduplikowane katalogi binarne są niedozwolone.", + "assets/policies.json.CMP0014": "Katalogi wejściowe muszą mieć plik CMakeLists.txt.", + "assets/policies.json.CMP0015": "link_directories traktuje ścieżki względem katalogu źródłowego.", + "assets/policies.json.CMP0016": "target_link_libraries zgłasza błąd, jeśli jego jedyny argument nie jest miejscem docelowym.", + "assets/policies.json.CMP0017": "Preferuj pliki z katalogu modułu narzędzia CMake, gdy są dołączane z tego miejsca.", + "assets/policies.json.CMP0018": "Ignoruj zmienną CMAKE_SHARED_LIBRARY__FLAGS.", + "assets/policies.json.CMP0019": "Nie rozwijaj ponownie zmiennych w informacjach o dołączaniu i łączeniu.", + "assets/policies.json.CMP0020": "Automatycznie połącz pliki wykonywalne Qt z obiektem docelowym qtmain w systemie Windows.", + "assets/policies.json.CMP0021": "Błąd krytyczny ścieżek względnych we właściwości INCLUDE_DIRECTORIES docelowej.", + "assets/policies.json.CMP0022": "INTERFACE_LINK_LIBRARIES definiuje interfejs linku.", + "assets/policies.json.CMP0023": "Sygnatury target_link_libraries zwykłe i słowa kluczowego nie mogą być mieszane.", + "assets/policies.json.CMP0024": "Nie zezwalaj na dołączanie wyników eksportu.", + "assets/policies.json.CMP0025": "Identyfikator kompilatora dla oprogramowania Apple Clang to teraz AppleClang.", + "assets/policies.json.CMP0026": "Nie zezwalaj na używanie właściwości LOCATION dla miejsc docelowych kompilacji.", + "assets/policies.json.CMP0027": "Warunkowo połączone zaimportowane obiekty docelowe z brakującymi katalogami include.", + "assets/policies.json.CMP0028": "Dwukropek w nazwie docelowej oznacza miejsce docelowe ALIAS lub IMPORTED.", + "assets/policies.json.CMP0029": "Nie należy wywoływać polecenia subdir_depends.", + "assets/policies.json.CMP0030": "Nie należy wywoływać polecenia use_mangled_mesa.", + "assets/policies.json.CMP0031": "Nie należy wywoływać polecenia load_command.", + "assets/policies.json.CMP0032": "Nie należy wywoływać polecenia output_required_files.", + "assets/policies.json.CMP0033": "Nie należy wywoływać polecenia export_library_dependencies.", + "assets/policies.json.CMP0034": "Nie należy wywoływać polecenia utility_source.", + "assets/policies.json.CMP0035": "Nie należy wywoływać polecenia variable_requires.", + "assets/policies.json.CMP0036": "Nie należy wywoływać polecenia build_name.", + "assets/policies.json.CMP0037": "Nazwy miejsc docelowych nie powinny być zastrzeżone i powinny być zgodne ze wzorcem poprawności.", + "assets/policies.json.CMP0038": "Obiekty docelowe nie mogą łączyć się bezpośrednio z sobą.", + "assets/policies.json.CMP0039": "Miejsca docelowe narzędzia mogą nie mieć zależności linków.", + "assets/policies.json.CMP0040": "Miejsce docelowe w podpisie TARGET add_custom_command musi istnieć i musi być zdefiniowany w bieżącym katalogu.", + "assets/policies.json.CMP0041": "Błąd względnego dołączania z wyrażeniem generatora.", + "assets/policies.json.CMP0042": "MACOSX_RPATH jest domyślnie włączone.", + "assets/policies.json.CMP0043": "Ignoruj właściwości COMPILE_DEFINITIONS_", + "assets/policies.json.CMP0044": "Wyrażenia generatora _COMPILER_ID z uwzględnieniem wielkości liter", + "assets/policies.json.CMP0045": "Błąd nieistniejącego obiektu docelowego w get_target_property.", + "assets/policies.json.CMP0046": "Błąd dotyczący nieistniejącej zależności w add_dependencies.", + "assets/policies.json.CMP0047": "Użyj identyfikatora kompilatora QCC dla sterowników qcc w QNX.", + "assets/policies.json.CMP0048": "Polecenie project zarządza zmiennymi VERSION.", + "assets/policies.json.CMP0049": "Nie rozwijaj zmiennych w docelowych wpisach źródłowych.", + "assets/policies.json.CMP0050": "Nie zezwalaj na sygnatury SOURCE add_custom_command.", + "assets/policies.json.CMP0051": "Wyświetl TARGET_OBJECTS we właściwości docelowej SOURCES.", + "assets/policies.json.CMP0052": "Odrzuć katalogi źródłowe i kompilacyjne w zainstalowanych INTERFACE_INCLUDE_DIRECTORIES.", + "assets/policies.json.CMP0053": "Uprość odwołanie do zmiennej i ocenę sekwencji ucieczki.", + "assets/policies.json.CMP0054": "Interpretuj tylko argumenty IF jako zmienne lub słowa kluczowe, gdy nie są w cudzysłowie.", + "assets/policies.json.CMP0055": "Ścisłe sprawdzanie dla polecenia przerwania.", + "assets/policies.json.CMP0056": "Honoruj flagi linku w sygnaturze pliku źródłowego try_compile.", + "assets/policies.json.CMP0057": "Obsługa nowego operatora, jeśli IN_LIST.", + "assets/policies.json.CMP0058": "Ninja wymaga jawnego określenia niestandardowych produktów byproduktów poleceń.", + "assets/policies.json.CMP0059": "Nie traktuj definicji jako wbudowanej właściwości katalogu.", + "assets/policies.json.CMP0060": "Łącz biblioteki według pełnej ścieżki nawet w katalogach niejawnych.", + "assets/policies.json.CMP0061": "Narzędzie CTest domyślnie nie informuje o ignorowaniu błędów (-i).", + "assets/policies.json.CMP0062": "Nie zezwalaj na instalowanie wyników eksportu.", + "assets/policies.json.CMP0063": "Uwzględniaj właściwości widoczności dla wszystkich typów docelowych.", + "assets/policies.json.CMP0064": "Rozpoznawaj TEST jako operatora dla polecenia IF.", + "assets/policies.json.CMP0065": "Nie dodawaj flag do eksportowania symboli z plików wykonywalnych bez właściwości docelowej ENABLE_EXPORTS.", + "assets/policies.json.CMP0066": "Honoruj flagi konfiguracji w sygnaturze pliku źródłowego try_compile.", + "assets/policies.json.CMP0067": "Honoruj standard języka w sygnaturze pliku źródłowego try_compile.", + "assets/policies.json.CMP0068": "Ustawienia RPATH w systemie macOS nie mają wpływu na install_name.", + "assets/policies.json.CMP0069": "INTERPROCEDURAL_OPTIMIZATION jest wymuszane po włączeniu.", + "assets/policies.json.CMP0070": "Zdefiniuj zachowanie pliku dla ścieżek względnych.", + "assets/policies.json.CMP0071": "Zezwalaj AUTOMOC i AUTOUIC na przetwarzanie plików GENERATED.", + "assets/policies.json.CMP0072": "FindOpenGL domyślnie preferuje GLVND, jeśli jest dostępna.", + "assets/policies.json.CMP0073": "Nie produkuj starszych wpisów pamięci podręcznej _LIB_DEPENDS.", + "assets/policies.json.CMP0074": "find_package używa zmiennych _ROOT.", + "assets/policies.json.CMP0075": "Uwzględnij makra sprawdzania plików, które uwzględniają CMAKE_REQUIRED_LIBRARIES.", + "assets/policies.json.CMP0076": "Polecenie target_sources konwertuje ścieżki względne na bezwzględne.", + "assets/policies.json.CMP0077": "opcja uwzględnia zmienne normalne.", + "assets/policies.json.CMP0078": "UseSWIG generuje standardowe nazwy obiektów docelowych.", + "assets/policies.json.CMP0079": "target_link_libraries umożliwia używanie z miejscami docelowymi w innych katalogach.", + "assets/policies.json.CMP0080": "Nie można uwzględnić elementów BundleUtilities w czasie konfiguracji.", + "assets/policies.json.CMP0081": "Ścieżki względne nie są dozwolone we właściwości LINK_DIRECTORIES docelowej.", + "assets/policies.json.CMP0082": "Reguły instalacji z wywołań add_subdirectory są przeplatane z wywołaniami w wywołującym.", + "assets/policies.json.CMP0083": "Aby sterować generowaniem pliku wykonywalnego niezależnego od położenia (PIE), niektóre flagi są wymagane w czasie łączenia.", + "assets/policies.json.CMP0084": "Moduł FindQt nie istnieje dla find_package.", + "assets/policies.json.CMP0085": "$ obsługuje puste elementy listy.", + "assets/policies.json.CMP0086": "UseSWIG honoruje SWIG_MODULE_NAME za pośrednictwem flagi -module.", + "assets/policies.json.CMP0087": "zainstaluj wyrażenia generatora obsługi.", + "assets/policies.json.CMP0088": "FindBISON uruchamia plik bison w CMAKE_CURRENT_BINARY_DIR podczas wykonywania.", + "assets/policies.json.CMP0089": "Identyfikator kompilatora dla kompilatorów XL opartych na programie IBM Clang to teraz XLClang.", + "assets/policies.json.CMP0090": "Eksport nie wypełnia domyślnie rejestru pakietów.", + "assets/policies.json.CMP0091": "Flagi biblioteki środowiska uruchomieniowego MSVC są wybierane przez abstrakcję.", + "assets/policies.json.CMP0092": "Flagi ostrzeżenia MSVC nie są domyślnie w języku CMAKE__FLAGS.", + "assets/policies.json.CMP0093": "Raporty funkcji FindBoost Boost_VERSION w formacie x.y.z.", + "assets/policies.json.CMP0094": "Moduły FindPython3, FindPython2 i FindPython używają LOCATION na potrzeby strategii wyszukiwania.", + "assets/policies.json.CMP0095": "Wpisy RPATH są prawidłowo zmienione w pośrednim skrypcie instalacji narzędzia CMake.", + "assets/policies.json.CMP0096": "Polecenie projektu zachowuje zera wiodące w składnikach wersji.", + "assets/policies.json.CMP0097": "ExternalProject_Add z GIT_SUBMODULES nie inicjuje modułów podrzędnych.", + "assets/policies.json.CMP0098": "FindFLEX uruchamia flex w katalogu CMAKE_CURRENT_BINARY_DIR podczas wykonywania.", + "assets/policies.json.CMP0099": "Właściwości linku są przechodnie w stosunku do prywatnych zależności bibliotek statycznych.", + "assets/policies.json.CMP0100": "Zezwalaj AUTOMOC i AUTOUIC na przetwarzanie plików nagłówkowych, które kończą się rozszerzeniem hh.", + "assets/policies.json.CMP0101": "target_compile_options teraz zawsze uwzględnia słowo kluczowe BEFORE.", + "assets/policies.json.CMP0102": "Polecenie mark_as_advanced nie tworzy już wpisu pamięci podręcznej, jeśli jeszcze nie istnieje.", + "assets/policies.json.CMP0103": "Wiele wywołań polecenia eksportowania z tym samym plikiem bez funkcji APPEND nie jest już dozwolone.", + "assets/policies.json.CMP0104": "Zainicjuj CMAKE_CUDA_ARCHITECTURES, gdy CMAKE_CUDA_COMPILER_ID _COMPILER_ID> to NVIDIA. Zgłoś błąd, jeśli CUDA_ARCHITECTURES jest pusty.", + "assets/policies.json.CMP0105": "Właściwości miejsca docelowego LINK_OPTIONS i INTERFACE_LINK_OPTIONS są teraz używane w kroku linku urządzenia.", + "assets/policies.json.CMP0106": "Moduł Dokumentacja został usunięty.", + "assets/policies.json.CMP0107": "Nie można utworzyć obiektu docelowego ALIAS o takiej samej nazwie jak inne miejsce docelowe.", + "assets/policies.json.CMP0108": "Obiekt docelowy nie może łączyć się z samym sobą nawet za pośrednictwem obiektu docelowego ALIAS.", + "assets/policies.json.CMP0109": "find_program wymaga uprawnień do wykonania, ale nie do odczytu.", + "assets/policies.json.CMP0110": "add_test obsługuje dowolne znaki w nazwach testów.", + "assets/policies.json.CMP0111": "Importowane miejsce docelowe bez właściwości lokalizacji kończy się niepowodzeniem podczas generowania.", + "assets/policies.json.CMP0112": "Wyrażenia generatora składników plików docelowych nie dodają zależności docelowych.", + "assets/policies.json.CMP0113": "Generatory plików make nie powtarzają poleceń niestandardowych z zależności docelowych.", + "assets/policies.json.CMP0114": "Celem kroku ExternalProject jest pełne wdrożenie kroków.", + "assets/policies.json.CMP0115": "Rozszerzenia plików źródłowych muszą być jawne.", + "assets/policies.json.CMP0116": "Generatory ninja przekształcają pliki DEPFILE z add_custom_command.", + "assets/policies.json.CMP0117": "Flaga MSVC RTTI /GR nie jest domyślnie dodawana do CMAKE_CXX_FLAGS _FLAGS>.", + "assets/policies.json.CMP0118": "WYGENEROWANE źródła mogą być używane w katalogach bez ręcznego oznaczania.", + "assets/policies.json.CMP0119": "Właściwość pliku źródłowego LANGUAGE jawnie kompiluje się jako określony język.", + "assets/policies.json.CMP0120": "Moduł WriteCompilerDetectionHeader został usunięty.", + "assets/policies.json.CMP0121": "Polecenie listy wykrywa teraz nieprawidłowe indeksy.", + "assets/policies.json.CMP0122": "Użyj SWIG użyj konwencji nazwy biblioteki dla języka CSharp.", + "assets/policies.json.CMP0123": "Flagi kompilowania procesora CPU/arch armclang i linku muszą być jawnie ustawione.", + "assets/policies.json.CMP0124": "Zmienne pętli foreach są dostępne tylko w zakresie pętli.", + "assets/policies.json.CMP0125": "Polecenia find_file, find_path, find_library i find_program buforują swój wynik w zmiennej określonej przez ich pierwszy argument. Przed narzędziem CMake w wersji 3.21, jeśli zmienna pamięci podręcznej o tej nazwie istniała już przed wywołaniem, ale zmienna pamięci podręcznej nie miała typu, wszelkie zmienne inne niż pamięć podręczna o tej samej nazwie zostałyby odrzucone i zmienna pamięci podręcznej była zawsze używana (zobacz też CMP0126, aby uzyskać inne, ale podobne zachowanie). Jest to sprzeczne z konwencją, że zmienna spoza pamięci podręcznej powinna mieć pierwszeństwo przed zmienną pamięci podręcznej o tej samej nazwie. Taka sytuacja może wystąpić, jeśli użytkownik ustawia zmienną pamięci podręcznej w wierszu polecenia bez określania typu, takiego jak cmake -DMYVAR=blah... zamiast polecenia cmake -DMYVAR:FILEPATH=blah.", + "assets/policies.json.CMP0126": "Gdy te zasady mają wartość NEW, polecenie set nie usuwa żadnej zmiennej normalnej o tej samej nazwie z bieżącego zakresu. Zachowanie OLD usuwa dowolną zmienną normalną o tej samej nazwie z bieżącego zakresu w następujących sytuacjach:", + "assets/policies.json.CMP0127": "cmake_dependent_option obsługuje pełną składnię warunku.", + "assets/policies.json.CMP0128": "Gdy te zasady są ustawione na NEW:", + "assets/policies.json.CMP0129": "Identyfikator kompilatora dla kompilatorów MCST LCC to teraz LCC, a nie GNU.", + "assets/policies.json.CMP0130": "podczas diagnozowania błędów oceny warunku.", + "assets/policies.json.CMP0131": "LINK_LIBRARIES obsługuje wyrażenie generatora :genex:`$`", + "assets/policies.json.CMP0132": "Nie ustawiaj zmiennych środowiskowych kompilatora przy pierwszym uruchomieniu.", + "assets/policies.json.CMP0133": "Moduł CPack domyślnie wyłącza umowę SLA w generatorze CPack DragNDrop.", + "assets/policies.json.CMP0134": "Domyślny widok rejestru to TARGET dla poleceń find_file, find_path, find_library i find_package oraz BOTH dla polecenia find_program.", + "assets/policies.json.CMP0135": "W przypadku korzystania z metody pobierania adresu URL z poleceniami ExternalProject_Add lub FetchContent_Declare narzędzie CMake w wersji 3.23 i starszej ustawia sygnatury czasowe wyodrębnianej zawartości na takie same jak sygnatury czasowe w archiwum. Po zmianie adresu URL nowe archiwum jest pobierane i wyodrębniane, ale sygnatury czasowe wyodrębnianej zawartości mogą nie być nowsze niż poprzednia zawartość. Wszystko, co zależy od wyodrębnianej zawartości, może nie zostać odbudowane, nawet jeśli zawartość może ulec zmianie.", + "assets/policies.json.CMP0136": "Flagi biblioteki środowiska uruchomieniowego Watcom są wybierane przez abstrakcję.", + "assets/policies.json.CMP0137": "try_compile przekazuje zmienne platformy w trybie projektu.", + "assets/policies.json.CMP0138": "Element CheckIPOSupported używa flag z wywoływania projektu.", + "assets/policies.json.CMP0139": "Polecenie IF obsługuje porównania ścieżek przy użyciu operatora PATH_EQUAL.", + "assets/policies.json.CMP0140": "Polecenie zwracania sprawdza jego parametry.", + "assets/policies.json.CMP0141": "Flagi formatu informacji debugowania MSVC są wybierane przez abstrakcję.", + "assets/policies.json.CMP0142": "Generator Xcode nie dołącza sufiksów dla konfiguracji do ścieżek wyszukiwania biblioteki.", + "assets/policies.json.CMP0143": "Właściwość globalna USE_FOLDERS jest domyślnie traktowana jako ON.", + "assets/policies.json.CMP0144": "find_package używa zmiennych _ROOT z wielkimi literami.", + "assets/policies.json.CMP0145": "Moduły Dart i FindDart zostały usunięte.", + "assets/policies.json.CMP0146": "Moduł FindCUDA został usunięty.", + "assets/policies.json.CMP0147": "Generatory programu Visual Studio kompilują polecenia niestandardowe równolegle.", + "assets/policies.json.CMP0148": "Moduły FindPythonInterp i FindPythonLibs zostały usunięte.", + "assets/policies.json.CMP0149": "Generatory programu Visual Studio domyślnie wybierają najnowszy zestaw Windows SDK.", + "assets/policies.json.CMP0150": "Polecenia ExternalProject_Add i FetchContent_Declare traktują względne ścieżki GIT_REPOSITORY jako względne względem zdalnego projektu nadrzędnego.", + "assets/policies.json.CMP0151": "Katalog dołączany AUTOMOC jest domyślnie katalogiem dołączania systemu.", + "assets/policies.json.CMP0152": "plik rozwiązuje sylinki przed zwijaniem. /Składniki.", + "assets/policies.json.CMP0153": "Nie należy wywoływać polecenia exec_program.", + "assets/policies.json.CMP0154": "Wygenerowane pliki są domyślnie prywatne w miejscach docelowych przy użyciu zestawów plików.", + "assets/policies.json.CMP0155": "Źródła języka C++ w miejscach docelowych z co najmniej językiem C++20 są skanowane w poszukiwaniu importów, jeśli są obsługiwane.", + "assets/policies.json.CMP0156": "Cofnij duplikację bibliotek w wierszach linku na podstawie możliwości konsolidatora.", + "assets/policies.json.CMP0157": "Tryb kompilacji Swift jest wybierany przez abstrakcję.", + "assets/policies.json.CMP0158": "add_test uwzględnia CMAKE_CROSSCOMPILING_EMULATOR tylko podczas kompilowania krzyżowego.", + "assets/policies.json.CMP0159": "plik z aktualizacjami REGEX CMAKE_MATCH_.", + "assets/policies.json.CMP0160": "Więcej właściwości obiektu docelowego tylko do odczytu jest teraz błędem podczas próby ich ustawienia.", + "assets/policies.json.CMP0161": "Zmienna CPACK_PRODUCTBUILD_DOMAINS domyślnie ma wartość true.", + "assets/policies.json.CMP0162": "Generatory programu Visual Studio domyślnie dodają wskaźniki UseDebugLibraries.", + "assets/policies.json.CMP0163": "Właściwość pliku źródłowego GENERATED jest teraz widoczna we wszystkich katalogach.", + "assets/policies.json.CMP0164": "add_library odrzuca biblioteki SHARED, gdy nie są obsługiwane przez platformę.", + "assets/policies.json.CMP0165": "enable_language nie może być wywoływana przed projektem.", + "assets/policies.json.CMP0166": "TARGET_PROPERTY ocenia właściwości linków przechodnio w zależnościach prywatnych bibliotek statycznych.", + "assets/policies.json.CMP0167": "Moduł FindBoost został usunięty.", + "assets/policies.json.CMP0168": "Moduł FetchContent implementuje kroki bezpośrednio, a nie za pomocą kompilacji podrzędnej.", + "assets/policies.json.CMP0169": "Wywoływanie FetchContent_Populate z pojedynczym argumentem (nazwą zadeklarowanej zależności) jest przestarzałe.", + "assets/policies.json.CMP0170": "Gdy FETCHCONTENT_FULLY_DISCONNECTED jest ustawiona na wartość true, FetchContent_MakeAvailable i FetchContent_Populate wymuszają ograniczenie, że katalog źródłowy musi być już wypełniony. To wymaganie zawsze było udokumentowane, ale nie zostało sprawdzone ani wymuszone za pomocą narzędzia CMake w wersji 3.29 lub starszej. Czasami powodowało to trudne do śledzenia błędy, gdy projekt oczekiwał wypełnienia zależności, ale jego populacja została pominięta w trybie dyskretnym.", + "assets/policies.json.CMP0171": "codegen to zastrzeżona nazwa docelowa.", + "assets/policies.json.CMP0172": "Moduł CPack domyślnie włącza instalację dla poszczególnych maszyn w generatorze WIX CPack.", + "assets/policies.json.CMP0173": "Moduł CMakeFindFrameworks został usunięty.", + "assets/policies.json.CMP0174": "cmake_parse_arguments definiuje zmienną dla pustego ciągu po słowie kluczowym z jedną wartością.", + "assets/policies.json.CMP0175": "add_custom_command odrzuca nieprawidłowe argumenty.", + "assets/policies.json.CMP0176": "KODOWANIE execute_process jest domyślnie ustawione jako UTF-8.", + "assets/policies.json.CMP0177": "Ścieżki install DESTINATION są znormalizowane.", + "assets/policies.json.CMP0178": "Wiersze poleceń testowych zachowują puste argumenty.", + "assets/policies.json.CMP0179": "Cofnięcie duplikacji bibliotek statycznych w wierszach linku powoduje zachowanie pierwszego wystąpienia. Te zasady mają zastosowanie tylko wtedy, gdy zasady CMP0156 są ustawiona na NEW.", + "assets/policies.json.CMP0180": "Projekt zawsze ustawia _* jako zmienne normalne.", + "assets/policies.json.CMP0181": "Zmienne CMAKE_EXE_LINKER_FLAGS, CMAKE_EXE_LINKER_FLAGS_, CMAKE_SHARED_LINKER_FLAGS, CMAKE_SHARED_LINKER_FLAGS_, CMAKE_MODULE_LINKER_FLAGS, i CMAKE_MODULE_LINKER_FLAGS_ są analizowane i ponownie cytowane oraz obsługują prefiks LINKER:", + "assets/policies.json.CMP0182": "Domyślnie twórz archiwa biblioteki udostępnionej w usłudze AIX.", + "assets/policies.json.CMP0183": "add_feature_info obsługuje pełną składnię warunku.", + "assets/policies.json.CMP0184": "Flagi sprawdzania środowiska uruchomieniowego MSVC są wybierane według abstrakcji.", + "assets/policies.json.CMP0185": "FindRuby nie udostępnia już zmiennych pisanych wielkimi literami RUBY_*.", + "assets/policies.json.CMP0186": "Wyrażenia regularne pasują najwyżej raz w powtarzanych wyszukiwaniach.", + "assets/policies.json.CMP0187": "Uwzględnij plik źródłowy bez rozszerzenia po tej samej nazwie z rozszerzeniem.", + "assets/policies.json.CMP0188": "Moduł FindGCCXML został usunięty.", + "assets/policies.json.CMP0189": "TARGET_PROPERTY ocenia przechodnio właściwości LINK_LIBRARIES.", + "assets/policies.json.CMP0190": "Moduły FindPython3, FindPython2 i FindPython wymuszają spójność artefaktów w trybie kompilacji krzyżowej.", + "assets/policies.json.CMP0191": "Moduł FindCABLE został usunięty.", + "assets/policies.json.CMP0192": "GNUInstallDirs używa bezwzględnych SYSCONFDIR, LOCALSTATEDIR i RUNSTATEDIR w specjalnych prefiksach.", + "assets/policies.json.CMP0193": "GNUInstallDirs buforuje CMAKE_INSTALL_* z wiodącym usr/ prefiksem instalacji /.", + "assets/policies.json.CMP0194": "MSVC nie jest asemblerem dla języka ASM.", + "assets/policies.json.CMP0195": "Moduły Swift w drzewach kompilacji używają struktury katalogu modułu Swift.", + "assets/policies.json.CMP0196": "Moduł CMakeDetermineVSServicePack został usunięty.", + "assets/policies.json.CMP0197": "Link MSVC -machine: flaga nie znajduje się w CMAKE_*_LINKER_FLAGS.", + "assets/policies.json.CMP0198": "CMAKE_PARENT_LIST_FILE nie jest zdefiniowana w CMakeLists.txt.", + "assets/policies.json.CMP0199": ":genex:`$` nie pasuje do zamapowanych konfiguracji, które nie są wybrane.", + "assets/policies.json.CMP0200": "Wybór lokalizacji i konfiguracji dla zaimportowanych miejsc docelowych jest bardziej spójny.", + "assets/policies.json.CMP0201": "Python::NumPy nie zależy od python::D evelopment.Module.", + "assets/policies.json.CMP0202": "Nazwy plików PDB zawsze zawierają POSTFIX na konfigurację w miejscu docelowym.", + "assets/policies.json.CMP0203": "_WINDLL jest zdefiniowana dla bibliotek udostępnionych przeznaczonych dla usługi MSVC ABI.", + "assets/policies.json.CMP0204": "Zestaw znaków jest zawsze definiowany podczas określania MSVC ABI." +} \ No newline at end of file diff --git a/i18n/plk/package.i18n.json b/i18n/plk/package.i18n.json index 5cc0496d02..f71704dae5 100644 --- a/i18n/plk/package.i18n.json +++ b/i18n/plk/package.i18n.json @@ -4,6 +4,8 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "cmake-tools.command.cmake.addFileToCMakeLists.title": "Add File to CMake Lists", + "cmake-tools.command.cmake.removeFileFromCMakeLists.title": "Remove File from CMake Lists", "cmake-tools.command.cmake.openCMakePresets.title": "Open CMakePresets.json", "cmake-tools.command.cmake.addConfigurePreset.title": "Dodaj ustawienie wstępne konfiguracji", "cmake-tools.command.cmake.addBuildPreset.title": "Ustawienie wstępne kompilowania", @@ -46,6 +48,9 @@ "cmake-tools.command.cmake.cleanConfigureWithDebugger.title": "Usuń pamięć podręczną i ponownie skonfiguruj za pomocą debugera CMake", "cmake-tools.command.cmake.cleanConfigureAll.title": "Usuń pamięć podręczną i skonfiguruj ponownie wszystkie projekty", "cmake-tools.command.cmake.cleanConfigureAllWithDebugger.title": "Usuń pamięć podręczną i ponownie skonfiguruj wszystkie projekty przy użyciu debugera CMake", + "cmake-tools.command.cmake.fullCleanConfigure.title": "Usuń katalog kompilacji i ponownie skonfiguruj", + "cmake-tools.command.cmake.fullCleanConfigureAll.title": "Usuwanie katalog kompilacji i ponowne konfigurowanie wszystkich projektów", + "cmake-tools.command.cmake.outline.fullCleanConfigureAll.title": "Ponowne konfigurowanie wszystkich projektów w trybie pełnego czyszczenia", "cmake-tools.command.cmake.editCacheUI.title": "Edycja pamięci podręcznej narzędzia CMake (interfejs użytkownika)", "cmake-tools.command.cmake.outline.cleanConfigure.title": "Wyczyść i skonfiguruj ponownie", "cmake-tools.command.cmake.outline.cleanConfigureWithDebugger.title": "Wyczyść i ponownie skonfiguruj przy użyciu debugera CMake", @@ -58,6 +63,9 @@ "cmake-tools.command.cmake.cleanConfigureAndBuild.title": "Usuń pamięć podręczną, skonfiguruj ponownie i zbuduj", "cmake-tools.command.cmake.cleanConfigureAndBuildAll.title": "Usuń pamięć podręczną, skonfiguruj ponownie i zbuduj wszystkie projekty", "cmake-tools.command.cmake.outline.cleanConfigureAndBuildAll.title": "Wyczyść, skonfiguruj ponownie i zbuduj wszystkie projekty", + "cmake-tools.command.cmake.fullCleanConfigureAndBuild.title": "Usuń katalog kompilacji, skonfiguruj ponownie i skompiluj", + "cmake-tools.command.cmake.fullCleanConfigureAndBuildAll.title": "Usuń katalog kompilacji, skonfiguruj ponownie i skompiluj wszystkie projekty", + "cmake-tools.command.cmake.outline.fullCleanConfigureAndBuildAll.title": "Ponowna konfiguracja pełnego czyszczenia i kompilowanie wszystkich projektów", "cmake-tools.command.cmake.ctest.title": "Uruchom testy", "cmake-tools.command.cmake.ctestAll.title": "Uruchom testy dla wszystkich projektów", "cmake-tools.command.cmake.cpack.title": "Uruchamianie narzędzia CPack", @@ -74,6 +82,7 @@ "cmake-tools.command.cmake.launchTarget.title": "Uruchom bez debugowania", "cmake-tools.command.cmake.launchTargetAll.title": "Uruchom wszystkie projekty bez debugowania", "cmake-tools.command.cmake.selectLaunchTarget.title": "Ustawianie uruchamiania/debugowania elementu docelowego", + "cmake-tools.command.cmake.selectBuildAndLaunchTarget.title": "Ustaw cel kompilacji i uruchamiania/debugowania", "cmake-tools.command.cmake.stop.title": "Anuluj kompilację", "cmake-tools.command.cmake.stopAll.title": "Anuluj kompilację dla wszystkich projektów", "cmake-tools.command.cmake.resetState.title": "Resetuj stan rozszerzenia narzędzi CMake Tools (na potrzeby rozwiązywania problemów)", @@ -105,6 +114,7 @@ "cmake-tools.configuration.cmake.generator.description": "Generator narzędzia CMake do użycia.", "cmake-tools.configuration.cmake.toolset.description": "Zestaw narzędzi programu CMake do użycia podczas konfigurowania.", "cmake-tools.configuration.cmake.platform.description": "Platforma narzędzia CMake do użycia podczas konfigurowania.", + "cmake-tools.configuration.cmake.shell.description": "Ścieżka do pliku wykonywalnego powłoki, która ma być używana podczas uruchamiania poleceń CMake, CTest i CPack (np. Git Bash lub MSYS2). Po ustawieniu wszystkie wywołania podprocesów są kierowane przez tę powłokę. Przydatne w przypadku osadzonych łańcuchów narzędzi wymagających translacji ścieżek POSIX. Gdy wartość jest null, używane jest domyślne zachowanie powłoki systemowej.", "cmake-tools.configuration.cmake.configureArgs.description": "Dodatkowe argumenty do przekazania do narzędzia CMake podczas konfigurowania. W przypadku korzystania z ustawień wstępnych narzędzia CMake te argumenty są tymczasowo dołączane do argumentów dostarczonych przez aktywne ustawienie wstępne konfiguracji.", "cmake-tools.configuration.cmake.buildArgs.description": "Dodatkowe argumenty do przekazania do narzędzia CMake podczas kompilowania. W przypadku korzystania z ustawień wstępnych narzędzia CMake te argumenty są tymczasowo dołączane do argumentów dostarczonych przez ustawienie wstępne aktywnej kompilacji.", "cmake-tools.configuration.cmake.buildToolArgs.description": "Dodatkowe argumenty do przekazania do bazowego narzędzia kompilacji podczas kompilowania. W przypadku używania ustawień wstępnych narzędzia CMake te argumenty są tymczasowo dołączane do argumentów dostarczonych przez ustawienie wstępne aktywnej kompilacji w celu wywołania narzędzia kompilacji.", @@ -112,7 +122,7 @@ "cmake-tools.configuration.cmake.ctestPath.description": "Ścieżka do pliku wykonywalnego narzędzia CTest. Jeśli wartość jest równa null, zostanie określona na podstawie parametru cmake.cmakePath (zaleca się pozostawienie wartości null).", "cmake-tools.configuration.cmake.cpackPath.description": "Ścieżka do pliku wykonywalnego CPack. Jeśli wartość null, zostanie wywnioskowana z elementu cmake.cmakePath (rekomenduje się pozostawienie wartości null). Będą ignorowane, gdy zestawy są używane zamiast ustawień wstępnych.", "cmake-tools.configuration.cmake.ctest.parallelJobs.markdownDescription": "Liczba równoległych zadań testowych. Użyj wartości zero, aby użyć wartości `#cmake.parallelJobs#`. Ma to zastosowanie tylko wtedy, gdy właściwość `#cmake.ctest.allowParallelJobs#` ma wartość `true`.", - "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "Umożliwia równoległe uruchamianie testów ctest, jednak dane wyjściowe wyniku może być w efekcie uszkodzony, a Eksplorator testów może nie odzwierciedlać dokładnie postępu testu.", + "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "Umożliwia równoległe uruchamianie testów ctest, jednak dane wyjściowe wyniku może być w efekcie uszkodzony, a Eksplorator testów może nie odzwierciedlać dokładnie postępu testu. Po wyłączeniu tej opcji testy są uruchamiane kolejno, w kolejności alfabetycznej, zgodnie z wyświetlaniem w Eksploratorze testów.", "cmake-tools.configuration.cmake.ctest.testExplorerIntegrationEnabled.description": "Określa, czy integracja z eksploratorem testów jest włączona. Jest to przydatne do wyłączenia, jeśli wolisz używać innego rozszerzenia do integracji testów.", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiter.markdownDescription": "Opcjonalny ogranicznik używany do hierarchicznego oddzielania nazw zestawów testów i testów grupowych w Eksploratorze testów. Ten ciąg jest używany w wyrażeniu regularnym, więc niektóre ograniczniki mogą wymagać znaku ucieczki. Przykłady: `-` (jeden ogranicznik: `-`), `\\.|::` (dwa ograniczniki: `.`, `::`. Należy pamiętać, że znak `.` musi być poprzedzony znakiem ucieczki).", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiterMaxOccurrence.markdownDescription": "Maksymalna liczba razy, jaką można użyć separatora do podzielenia nazwy testu. `0` oznacza brak ograniczenia.", @@ -124,9 +134,21 @@ "cmake-tools.configuration.cmake.ctest.failurePatterns.actual": "Indeks grupy dopasowania rzeczywistych danych wyjściowych testu. Przyjmuje domyślnie wartość niezdefiniowane.", "cmake-tools.configuration.cmake.ctest.failurePatterns.expected": "Indeks grupy dopasowania oczekiwanych danych wyjściowych testu. Przyjmuje domyślnie wartość niezdefiniowane.", "cmake-tools.configuration.cmake.ctest.debugLaunchTarget.description": "Nazwa elementu docelowego z launch.json do uruchomienia podczas debugowania testu przy użyciu narzędzia CTest. Domyślnie w przypadku nieistniejącego elementu docelowego zostanie wyświetlony selektor ze wszystkimi dostępnymi elementami docelowymi.", + "cmake-tools.configuration.cmake.ctest.neverDebugTestsWithLaunchConfiguration.description": "Jeśli ustawisz na true, testy bez konfiguracji uruchamiania będą zawsze debugowane, pomijając menu szybkiego wyboru. Wartość domyślna to false.", "cmake-tools.configuration.cmake.parseBuildDiagnostics.description": "Analizuj dane wyjściowe kompilatora pod kątem ostrzeżeń i błędów.", "cmake-tools.configuration.cmake.enabledOutputParsers.description": "Analizatory danych wyjściowych do użycia. Obsługiwane analizatory `cmake`, `gcc`, `gnuld` w przypadku danych wyjściowych konsolidatora w stylu GNULD, `msvc` w przypadku programu Microsoft Visual C++, `ghs` w przypadku kompilatora Green Hills z --no_wrap_diagnostics --brief_diagnostics, `diab` w przypadku kompilatora Wind River Diab i `iwyu` na potrzeby diagnostyki include-what-you-use.", - "cmake-tools.configuration.cmake.debugConfig.description": "Konfiguracja debugowania do użycia podczas debugowania elementu docelowego.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.markdownDescription": "Dodatkowe programy dopasowania problemów dla danych wyjściowych kompilacji. Użyj ich, aby wyświetlać diagnostykę z narzędzi takich jak clang-tidy, PCLint Plus, cppcheck lub niestandardowych skryptów zintegrowanych przez `add_custom_command`/`add_custom_target` w CMake.\n\nKażdy wpis definiuje `name` (używane jako etykieta źródła diagnostyki), `regexp` oraz indeksy grup przechwytywania dla `file`, `line`, `column`, `severity`, `message` i `code`.\n\nNa przykład, aby dopasować dane wyjściowe clang-tidy w formacie `/path/file.cpp:10:5: warning: some message [check-name]`:\n```json\n[\n {\n \"name\": \"clang-tidy\",\n \"regexp\": \"^(.+?):(\\\\d+):(\\\\d+):\\\\s+(warning|error|note):\\\\s+(.+?)\\\\s*(?:\\\\[(.+)\\\\])?$\",\n \"file\": 1,\n \"line\": 2,\n \"column\": 3,\n \"severity\": 4,\n \"message\": 5,\n \"code\": 6\n }\n]\n```\n\nNiestandardowe programy dopasowujące uruchamiane są **po** wbudowanych parserach (`gcc`, `msvc` itd.), dzięki czemu nie przechwytują linii należących do wbudowanych kompilatorów.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.name": "Unikalna nazwa tego dopasowania, używana jako etykieta źródła diagnostyki w panelu Problemy.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.regexp": "Wyrażenie regularne dopasowujące każdy wiersz wyjścia kompilacji.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.file": "Indeks grupy przechwytywania dla ścieżki pliku. Wartość domyślna to `1`.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.line": "Indeks grupy przechwytywania dla numeru wiersza. Wartość domyślna to `2`.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.column": "Indeks grupy przechwytywania dla numeru kolumny. Opcjonalnie.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.group": "Indeks grupy przechwytywania dla poziomu ważności (powinien przechwytywać „error”, „warning” lub „info”).", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.fixed": "Stały poziom ważności, który zostanie zastosowany do wszystkich dopasowań tego wzorca.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.message": "Indeks grupy przechwytywania dla komunikatu diagnostycznego. Wartość domyślna to `3`.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.code": "Indeks grupy przechwytywania dla opcjonalnego kodu diagnostycznego.", + "cmake-tools.configuration.cmake.debugConfig.description": "Konfiguracja debugowania do użycia podczas debugowania elementu docelowego. Po określeniu elementu `type` automatycznie wykryta konfiguracja debugera jest pomijana i z obiektu docelowego jest generowana tylko minimalna konfiguracja podstawowa (program, cwd, nazwa). Wszystkie inne właściwości są stosowane z tego ustawienia, co umożliwia pełną kontrolę nad konfiguracją uruchamiania debugowania dla dowolnej karty debugowania.", + "cmake-tools.configuration.cmake.debugConfig.type.description": "Typ karty debugowania do użycia (np. `cppdbg`, `cppvsdbg`, `lldb`, `codelldb`). Po ustawieniu pomija automatyczne wykrywanie debugera z pamięci podręcznej narzędzia CMake i używa tego typu bezpośrednio. Wszelkie dodatkowe właściwości wymagane przez kartę debugowania można dodać do konfiguracji `#cmake.debugConfig#`.", "cmake-tools.configuration.cmake.debugConfig.symbolSearchPath.description": "Ścieżki wyszukiwania symboli debugera programu Visual Studio.", "cmake-tools.configuration.cmake.debugConfig.additionalSOLibSearchPath.description": "Ścieżki dla programu GDB lub LLDB na potrzeby wyszukiwania plików so.", "cmake-tools.configuration.cmake.debugConfig.externalConsole.description": "Uruchom konsolę zewnętrzną dla programu.", @@ -226,11 +248,13 @@ "cmake-tools.configuration.cmake.automaticReconfigure.description": "Automatycznie konfiguruj katalogi projektu narzędzia CMake po zmianie zestawu lub ustawienia wstępnego konfiguracji.", "cmake-tools.configuration.cmake.pinnedCommands.description": "Lista poleceń narzędzia CMake, które mają być zawsze domyślnie przypinane. Pojawią się one w sekcji \"Przypięte polecenia\" narzędzi CMake Tools.", "cmake-tools.configuration.cmake.enableAutomaticKitScan.description": "Włącz automatyczne skanowanie w poszukiwaniu zestawów, gdy zestaw nie jest wybrany. Będzie to miało wpływ tylko wtedy, gdy nie są używane ustawienia wstępne narzędzia CMake.", + "cmake-tools.configuration.cmake.removeStaleKitsOnScan.description": "Remove compiler-based kits from the user kits file during a full kit scan when they are no longer rediscovered. Set \"keep\": true in a kit entry to preserve it.", "cmake-tools.configuration.cmake.enableLanguageServices.description": "Włącz usługi językowe dla plików narzędzia CMake. Umożliwi to wyróżnianie składni, uzupełnianie kodu i inne funkcje.", "cmake-tools.configuration.cmake.preRunCoverageTarget.description": "Element docelowy do utworzenia przed przeprowadzeniem testów z pokryciem przy użyciu eksploratora testów", "cmake-tools.configuration.cmake.postRunCoverageTarget.description": "Element docelowy do utworzenia po przeprowadzeniu testów z pokryciem przy użyciu eksploratora testów", "cmake-tools.configuration.cmake.coverageInfoFiles.description": "Pliki z informacjami o pokryciu narzędzia LCOV do przetworzenia po przeprowadzeniu testów z pokryciem przy użyciu eksploratora testów.", "cmake-tools.configuration.cmake.useFolderPropertyInBuildTargetDropdown.description": "Określa, czy domyślna lista rozwijana obiektu docelowego kompilacji jest pogrupowana według grup folderów narzędzia CMake.", + "cmake-tools.configuration.cmake.setBuildTargetSameAsLaunchTarget.description": "Po włączeniu ustawienie elementu docelowego uruchamiania/debugowania automatycznie ustawia element docelowy kompilacji tak, by pasował. Element docelowy kompilacji można jednak zmienić niezależnie.", "cmake-tools.debugger.pipeName.description": "Nazwa potoku (w systemie Windows) lub gniazda domeny (w systemie Unix) do użycia na potrzeby komunikacji debugera.", "cmake-tools.debugger.clean.description": "Wyczyść przed skonfigurowaniem.", "cmake-tools.debugger.configureAll.description": "Skonfiguruj dla wszystkich projektów.", @@ -262,6 +286,7 @@ "cmake-tools.configuration.cmake.launchBehavior.breakAndReuseTerminal.markdownDescriptions": "Wystąpienie terminalu uruchamiania jest ponownie uruchamiane, a polecenie `break` jest wysyłane w celu zakończenia wszelkich aktywnych procesów pierwszego planu przed uruchomieniem elementu docelowego.", "cmake-tools.configuration.cmake.launchBehavior.newTerminal.markdownDescriptions": "Tworzone jest nowe wystąpienie terminalu i zostanie w nim uruchomiony element docelowy. Istniejące terminale nie są automatycznie czyszczone.", "cmake-tools.configuration.cmake.loadCompileCommands.description": "Określa, czy rozszerzenie odczytuje plik compile_commands.json, aby włączać kompilację pojedynczego pliku.", + "cmake-tools.configuration.cmake.outlineViewType.description": "Project Outline View`s type. Available options are: \"list\" and \"tree\".", "cmake-tools.command.cmake.projectStatus.update.title": "Odśwież stan projektu", "cmake-tools.command.cmake.pinnedCommands.add.title": "Dodaj polecenie narzędzia CMake do przypięcia", "cmake-tools.command.cmake.pinnedCommands.remove.title": "Odepnij polecenie", @@ -272,5 +297,33 @@ "cmake-tools.debugger.label": "Debuger CMake", "cmake-tools.command.cmake.appendBuildDirectoryToWorkspace.title": "Dołącz katalog kompilacji do bieżącego obszaru roboczego", "cmake-tools.command.workbench.action.tasks.configureTaskRunner.title": "Skonfiguruj zadanie", - "cmake-tools.command.workbench.action.tasks.runTask.title": "Uruchom zadanie" + "cmake-tools.command.workbench.action.tasks.runTask.title": "Uruchom zadanie", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.description": "Add source files to CMake lists when they are created.", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.no.description": "Do not automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.yes.description": "Automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.description": "Remove source files from CMake lists when they are deleted.", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.no.description": "Do not automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.yes.description": "Automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.markdownDescription": "How to choose which `set()` or `list(APPEND/PREPEND/INSERT)` command invocation to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.never.description": "Do not look for variable modification command invocations, only look for source command invocations.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askFirstParentDir.description": "Present a Quick Pick with options from the first `CMakeLists.txt` found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askParentDirs.description": "Present a Quick Pick with options from all `CMakeLists.txt` files found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.sourceVariables.markdownDescription": "Variables to add source files to. Variables appearing earlier in this list will be given higher priority. Only used if `#cmake.modifyLists.variableSelection#` is not `never`. Supports glob patterns.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.description": "How to choose which target to add new source files to when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askNearestSourceDir.description": "Present a Quick Pick with targets whose source directories are closest to location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askParentSourceDirs.description": "Present a Quick Pick with targets whose source directories contain the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.description": "How to choose which of a target's source command invocations to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askFirstParentDir.description": "Present a Quick Pick with options from the CMake list file in the parent directory closest to the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askParentDirs.description": "Present a Quick Pick with options from all CMake list files in the parent directories of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSourceCommands.markdownDescription": "Commands to treat as target source commands when adding source files CMake lists. Commands appearing earlier in this list will be given higher priority. Supports glob patterns.\r\n\r\nIf you are using the File API (see `#cmake.cmakeCommunicationMode#`), user-defined functions and macros which call the commands in this list are detected automatically and added to it.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.description": "How to choose which of a target's visibility scopes, file sets, or source keyword parameters to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.ask.description": "Present a Quick Pick with options from the selected target source command invocation.", + "cmake-tools.configuration.cmake.modifyLists.sourceListKeywords.markdownDescription": "Keyword arguments to user-defined functions and macros which introduce lists of source files. If left empty, all arguments consisting of only upper-case letters and underscores will be considered. Supports glob patterns.", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier" } \ No newline at end of file diff --git a/i18n/plk/schemas/kits-schema.json.i18n.json b/i18n/plk/schemas/kits-schema.json.i18n.json index 04293bdfa8..f8b5af1485 100644 --- a/i18n/plk/schemas/kits-schema.json.i18n.json +++ b/i18n/plk/schemas/kits-schema.json.i18n.json @@ -17,9 +17,11 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Ścieżka do pliku łańcucha narzędzi", "schemas/kits-schema.json.items.properties.visualStudio": "Identyfikator wystąpienia produktu Visual Studio", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Architektura docelowa", + "schemas/kits-schema.json.items.properties.visualStudioArguments": "Arguments to vcvarsall.bat", "schemas/kits-schema.json.items.properties.environmentSetupScript": "Ścieżka bezwzględna do skryptu, który modyfikuje środowisko zestawu", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Wartość zmiennej środowiskowej", - "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Wartość ustawienia narzędzia CMake", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.0": "Wartość ustawienia narzędzia CMake. Średniki w ciągach są znakami ucieczki.", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.1": "Wartości połączone średnikami w celu utworzenia listy narzędzia CMake bez ucieczki.", "schemas/kits-schema.json.items.properties.preferredGenerator": "Ustaw preferowany generator narzędzia CMake dla tego zestawu", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.name": "Nazwa generatora do użycia", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.platform": "Platforma narzędzia CMake dla argumentu -A", diff --git a/i18n/plk/src/cmakeListsModifier.i18n.json b/i18n/plk/src/cmakeListsModifier.i18n.json new file mode 100644 index 0000000000..a3c9d1d6a2 --- /dev/null +++ b/i18n/plk/src/cmakeListsModifier.i18n.json @@ -0,0 +1,51 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "add.newly.created.files": "Add newly created files to CMakeLists.txt", + "error.processing.add.files": "Error processing added files", + "remove.deleted.file": "Remove a deleted file from CMakeLists.txt", + "error.processing.delete.files": "Error processing deleted files", + "add.file.no.code.model": "Adding a file without a valid code model", + "file.already.in.target": "{0} already in target {1}.", + "no.targets.found": "No targets found. {0} not added to build system.", + "no.source.command.invocations": "No source command invocations found. {0} not added to build system.", + "delete.file.no.code.model": "Deleting a file without a valid code model", + "not.modifying.unsaved.delete": "Not modifying {0} to delete {1} because it has unsaved changes.", + "add.to.which.variable": "CMake: Add {0} to which variable?", + "add.to.which.target": "CMake: Add {0} to which target?", + "add.to.which.invocation": "CMake: Add {0} to which command invocation of {1}?", + "add.to.which.scope.fileset.keyword": "CMake: Add {0} to which Scope, File Set, or Keyword?", + "open.file": "Open File", + "not.modifying.unsaved.files": "Cannot modify {0} because it has unsaved changes.", + "skipping.unsaved.files": "Skipping {0} file(s) with unsaved changes: {1}", + "edit.label.remove.source.file": "CMake: Remove deleted source file", + "edit.label.add.source.file": "CMake: Add new source file", + "edits.applied.successfully": "Successfully applied {0} CMake list edit(s).", + "edits.apply.failed": "Failed to apply CMake list edits: {0}", + "not.local.file.add": "{0} is not a local file. Not adding to CMake lists.", + "no.candidates.found": "No suitable locations found to add {0}.", + "not.modifying.unsaved.add": "Not modifying {0} to add {1} because it has unsaved changes.", + "not.local.file.remove": "{0} is not a local file. Not removing from CMake lists.", + "could.not.open.file": "Could not open file {0}: {1}", + "file.not.found.in.cmake.lists": "{0} not found in CMake lists.", + "file.already.in.destination": "{0} already in {1} at {2}:{3}", + "parse.error.examining.cmake.lists": "Parse error while examining CMakeLists.txt files. Details: {0}", + "could.not.open.cmake.lists": "Could not open {0}: {1}", + "parse.error.finding.invocations": "Parse error while finding command invocations to add to. CMake file modified since last configure? Details: {0}", + "unexpected.command.found": "Found \"{0}\", expected \"{1}\". CMake file modified since last configure? Details: {2}:{3}", + "scope.private.detail": "{0} will be used to build {1}", + "scope.public.detail": "{0} will be used to build both {1} and targets that use {1}", + "scope.interface.detail": "{0} will be used to build targets that use {1}", + "fileset.headers.detail": "{0} will be used via a language's #include mechanism", + "fileset.cxx.modules.detail": "{0} contains C++ interface module or partition units.", + "label.fileset": "{0} File Set", + "label.scope": "{0} Scope", + "fileset.type": "Type: {0}", + "scope.with.fileset.detail": "{0} Scope: {1}", + "keyword.of.command": "Keyword of {0} command", + "command.label": "{0} Command", + "add.to.command.arguments": "Add {0} to the list of arguments to {1} command" +} \ No newline at end of file diff --git a/i18n/plk/src/cmakeProject.i18n.json b/i18n/plk/src/cmakeProject.i18n.json index 090ca9e15d..7ea0a7412e 100644 --- a/i18n/plk/src/cmakeProject.i18n.json +++ b/i18n/plk/src/cmakeProject.i18n.json @@ -9,6 +9,7 @@ "generator.changed.restart.driver": "Ponowne uruchamianie sterownika narzędzia CMake po zmianie generatora.", "preferredGenerator.changed.restart.driver": "Ponowne uruchamianie sterownika narzędzia CMake po zmianie ustawienia preferredGenerators.", "bad.executable": "Nieprawidłowy plik wykonywalny narzędzia CMake: {0}. Sprawdź, czy jest zainstalowany lub czy wartość ustawienia {1} zawiera poprawną ścieżkę", + "shell.changed.restart.driver": "Ponowne uruchamianie sterownika narzędzia CMake po zmianie powłoki.", "targests.in.preset": "[Wartości docelowe w ustawieniach wstępnych]", "constructing.cmakeproject": "Konstruowanie nowego wystąpienia CMakeProject", "disposing.driver": "Usuwanie sterownika CMake", @@ -142,9 +143,9 @@ "configure.now.button": "Skonfiguruj teraz", "cache.load.failed": "Nie znaleziono pliku CMakeCache.txt. Najpierw skonfiguruj projekt.", "set.up.before.selecting.target": "Skonfiguruj projekt narzędzia CMake przed wybraniem elementu docelowego.", - "select.active.target.tooltip": "Wybierz domyślny element docelowy kompilowania", "enter.target.name": "Podaj nazwę elementu docelowego", "target.to.build.description": "Element docelowy do skompilowania", + "select.active.target.tooltip": "Wybierz domyślny element docelowy kompilowania", "build.failed": "Kompilacja nie powiodła się.", "driver.died.after.build.succeeded": "Sterownik narzędzia CMake zakończył pracę natychmiast po pomyślnym zakończeniu kompilowania.", "driver.died.before.workflow": "Sterownik narzędzia CMake został przerwany przed uruchomieniem przepływu pracy.", @@ -167,6 +168,7 @@ "target.debugging.unsupported": "Debugowanie elementu docelowego nie jest już obsługiwane w przypadku starszego sterownika", "learn.more.button": "Dowiedz się więcej", "failed.to.prepare.target": "Nie można przygotować docelowego pliku wykonywalnego o nazwie {0}", + "debug.configuration.from.settings": "Debugowanie konfiguracji z poziomu ustawień użytkownika: {0}", "debug.configuration.from.cache": "Debuguj konfigurację z pamięci podręcznej: {0}", "problem.getting.debug": "Wystąpił problem podczas pobierania konfiguracji debugowania z pamięci podręcznej.", "starting.debugger.with": "Uruchamianie debugera z następującą konfiguracją.", diff --git a/i18n/plk/src/ctest.i18n.json b/i18n/plk/src/ctest.i18n.json index 8a597ddf9f..9b695ccbae 100644 --- a/i18n/plk/src/ctest.i18n.json +++ b/i18n/plk/src/ctest.i18n.json @@ -27,6 +27,13 @@ "test.buildingPostRunCoverageTarget": "Tworzenie elementu „{0}” postRunCoverageTarget dla projektu {1} po przeprowadzeniu testów z pokryciem.", "test.postRunCoverageTargetFailure": "Nie można utworzyć elementu docelowego postRunCoverageTarget dla projektu w: {0}. Pomijanie obsługi danych dotyczących pokrycia.", "test.skip.run.build.failure": "Testy nie są uruchamiane z powodu niepowodzenia kompilacji.", + "debug.without.launch.config": "Debuguj bez konfiguracji uruchamiania", + "choose.debug.method": "Wybierz sposób debugowania testu.", + "yes": "Tak", + "no": "Nie", + "never.debug.with.launch.prompt": "Czy chcesz zawsze debugować testy bez konfiguracji uruchamiania w tym obszarze roboczym?", + "no.launch.config": "Nie znaleziono konfiguracji uruchamiania.", + "choose.launch.config": "Wybierz konfigurację uruchamiania do debugowania testu.", "test.skip.debug.build.failure": "Testy nie są debugowane z powodu niepowodzenia kompilacji.", "build.failed": "Kompilacja nie powiodła się", "run.tests.profile": "Uruchamianie testów", diff --git a/i18n/plk/src/drivers/cmakeDriver.i18n.json b/i18n/plk/src/drivers/cmakeDriver.i18n.json index e4607cf241..60db8be99a 100644 --- a/i18n/plk/src/drivers/cmakeDriver.i18n.json +++ b/i18n/plk/src/drivers/cmakeDriver.i18n.json @@ -5,13 +5,14 @@ // Do not edit this file. It is machine generated. { "no.usable.generator.found": "Nie znaleziono generatora, którego można użyć.", - "user.closed.file.compilation.terminal": "Użytkownik zamknął terminal kompilacji pliku", "disposing.base.cmakedriver": "Usuwanie podstawowego elementu CMakeDriver", "async.disposing.cmake.driver": "Asynchroniczne usuwanie sterownika narzędzia CMake", "test.with.overrides": "UWAGA: testujesz ze wstępnie ustawionym {0}, ale niektóre zastąpienia są stosowane z ustawień programu VS Code.", "package.with.overrides": "UWAGA: Pakujesz z ustawieniami wstępnymi {0}, ale stosowane są pewne nadpisania z ustawień programu VS Code.", "compile.with.overrides": "UWAGA: kompilujesz ze wstępnie ustawionym {0}, ale niektóre zastąpienia są stosowane z ustawień programu VS Code.", "file.compilation": "Kompilowanie pliku", + "compile.finished.with.error": "Kompilacja została zakończona z błędami.", + "compile.finished.successfully": "Kompilacja została zakończona pomyślnie.", "removing": "Usuwanie kanału {0}", "unlink.failed": "Nie można usunąć {0} pliku pamięci podręcznej", "switching.to.config.preset": "Przełączanie do predefiniowanej konfiguracji: {0}", diff --git a/i18n/plk/src/extension.i18n.json b/i18n/plk/src/extension.i18n.json index 2ca7115dbc..58a2d49771 100644 --- a/i18n/plk/src/extension.i18n.json +++ b/i18n/plk/src/extension.i18n.json @@ -11,10 +11,11 @@ "configure.now.button": "Skonfiguruj teraz", "configure.recommended": "Zaleca się przeprowadzenie ponownej konfiguracji po uaktualnieniu do nowej definicji zestawów.", "using.cache.to.configure.workspace.on.open": "Próba użycia pamięci podręcznej do skonfigurowania obszaru roboczego {0}", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier", + "failed.to.open.cache.file.on.code.model.update": "Failed to open CMake cache file on code model update", "update.code.model.for.cpptools": "Aktualizuj model kodu dla narzędzi cpptools", "update.intellisense.disabled": "Dostawca konfiguracji nie jest aktualizowany, ponieważ ustawiono {0} do {1}", "failed.to.get.cpptools.api": "Nie można pobrać interfejsu API cppTools", - "filed.to.open.cache.file.on.code.model.update": "Nie można otworzyć pliku pamięci podręcznej narzędzia CMake podczas aktualizacji modelu kodu", "opening.text.editor.for": "Otwieranie edytora tekstu dla pliku {0}", "no.kits.file.what.to.do": "Żaden plik zestawów nie jest dostępny. Co chcesz zrobić?", "scan.for.kits.button": "Skanuj w poszukiwaniu zestawów", @@ -49,6 +50,7 @@ "cmake.finished.returned.unserializable": "Zakończono {0} (zwrócono wartość, której nie można serializować)", "loading.extension.commands": "Ładowanie poleceń rozszerzenia", "register.command": "Zarejestruj polecenie rozszerzenia CMakeTools {0}", + "bookmark.target.not.resolved": "Nie można przypisać zakładki „{0}” do elementu docelowego. Może być konieczne ponowne skonfigurowanie projektu.", "search.project.outline": "Wprowadź wyszukiwany termin, aby filtrować konspekt projektu", "added.to": "dodano do", "removed.from": "usunięto z", diff --git a/i18n/plk/src/proc.i18n.json b/i18n/plk/src/proc.i18n.json index bd125b6be7..4ca27a378a 100644 --- a/i18n/plk/src/proc.i18n.json +++ b/i18n/plk/src/proc.i18n.json @@ -6,11 +6,11 @@ { "executing.command": "Wykonywanie polecenia: {0}", "execution.environment": " ze środowiskiem: {0}", - "process.error": "Polecenie: {0} nie powiodło się z powodu błędu: {1} stos: {2}", - "process.exit.with.signal": "Polecenie: {0} zakończono z kodem: {1} i sygnałem: {2} stos: {3}", - "process.exit": "Polecenie: {0} zakończono z kodem: {1} stos: {2}", - "process.exit.stdout": "Dane wyjściowe polecenia na standardowym wyjściu: {0} stos: {1}", - "process.exit.stderr": "Dane wyjściowe polecenia dotyczące błędu standardowego: {0} stos: {1}", + "process.error": "Polecenie: {0} nie powiodło się z powodu błędu: {1}", + "process.exit.with.signal": "Polecenie: {0} zakończono z kodem: {1} i sygnałem: {2}", + "process.exit": "Polecenie: {0} zostało zakończone z kodem {1}", + "process.exit.stdout": "Dane wyjściowe polecenia na standardowym wyjściu: {0}", + "process.exit.stderr": "Dane wyjściowe polecenia dotyczące błędu standardowego: {0}", "processing.data.event.stdout": "Przetwarzanie zdarzenia {0} z właściwości proc stdout", "processing.data.event.stderr": "Przetwarzanie zdarzenia {0} z właściwości proc stderr", "resolving.close.event": "Rozpoznawanie procesu w zdarzeniu {0}" diff --git a/i18n/plk/src/util.i18n.json b/i18n/plk/src/util.i18n.json index 1fbeaff724..83b4bb98aa 100644 --- a/i18n/plk/src/util.i18n.json +++ b/i18n/plk/src/util.i18n.json @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "invalid.value": "Nieprawidłowa wartość do przekonwertowania na wartość cmake: {0}", "invalid.version.string": "Nieprawidłowy ciąg wersji {0}", "extension.is.undefined": "Rozszerzenie jest niezdefiniowane!", "sourcedirectory.not.a.directory": "Element „sourceDirectory” nie jest katalogiem" diff --git a/i18n/ptb/assets/policies.json.i18n.json b/i18n/ptb/assets/policies.json.i18n.json new file mode 100644 index 0000000000..2992b08c28 --- /dev/null +++ b/i18n/ptb/assets/policies.json.i18n.json @@ -0,0 +1,212 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "assets/policies.json.CMP0000": "Uma versão mínima requerida do CMake deve ser especificada.", + "assets/policies.json.CMP0001": "CMAKE_BACKWARDS_COMPATIBILITY não deve mais ser usado.", + "assets/policies.json.CMP0002": "Os nomes lógicos de alvos devem ser globalmente únicos.", + "assets/policies.json.CMP0003": "Bibliotecas vinculadas por caminho completo não produzem mais caminhos de busca do vinculador.", + "assets/policies.json.CMP0004": "Bibliotecas vinculadas não podem ter espaços em branco no início ou no final.", + "assets/policies.json.CMP0005": "Os valores de definição do pré-processador agora são escapados automaticamente.", + "assets/policies.json.CMP0006": "A instalação de alvos MACOSX_BUNDLE requer um DESTINATION BUNDLE.", + "assets/policies.json.CMP0007": "O comando list não ignora mais elementos vazios.", + "assets/policies.json.CMP0008": "Bibliotecas vinculadas por caminho completo devem ter um nome de arquivo de biblioteca válido.", + "assets/policies.json.CMP0009": "As chamadas FILE GLOB_RECURSE não devem seguir links simbólicos por padrão.", + "assets/policies.json.CMP0010": "Sintaxe de referência de variável inválida é um erro.", + "assets/policies.json.CMP0011": "Scripts incluídos realizam PUSH e POP automáticos de cmake_policy.", + "assets/policies.json.CMP0012": "if reconhece números e constantes boolianas.", + "assets/policies.json.CMP0013": "Diretórios binários duplicados não são permitidos.", + "assets/policies.json.CMP0014": "Os diretórios de entrada devem ter CMakeLists.txt.", + "assets/policies.json.CMP0015": "link_directories trata caminhos relativos ao diretório de origem.", + "assets/policies.json.CMP0016": "target_link_libraries relata erro se seu único argumento não for um alvo.", + "assets/policies.json.CMP0017": "Prefere arquivos do diretório de módulos do CMake ao incluir a partir dele.", + "assets/policies.json.CMP0018": "Ignora a variável CMAKE_SHARED_LIBRARY__FLAGS.", + "assets/policies.json.CMP0019": "Não reexpanda variáveis nas informações de include e link.", + "assets/policies.json.CMP0020": "Vincula automaticamente executáveis Qt ao alvo qtmain no Windows.", + "assets/policies.json.CMP0021": "Erro fatal em caminhos relativos na propriedade de alvo INCLUDE_DIRECTORIES.", + "assets/policies.json.CMP0022": "INTERFACE_LINK_LIBRARIES define a interface de linkagem.", + "assets/policies.json.CMP0023": "Assinaturas simples e por palavra-chave de target_link_libraries não podem ser misturadas.", + "assets/policies.json.CMP0024": "Proíbe a exportação do resultado de include.", + "assets/policies.json.CMP0025": "O identificador do compilador para Apple Clang agora é AppleClang.", + "assets/policies.json.CMP0026": "Proíbe o uso da propriedade LOCATION para alvos de compilação.", + "assets/policies.json.CMP0027": "Alvos importados vinculados condicionalmente com diretórios de inclusão ausentes.", + "assets/policies.json.CMP0028": "Dois dois-pontos no nome do alvo significam alvo ALIAS ou IMPORTED.", + "assets/policies.json.CMP0029": "O comando subdir_depends não deve ser chamado.", + "assets/policies.json.CMP0030": "O comando use_mangled_mesa não deve ser chamado.", + "assets/policies.json.CMP0031": "O comando load_command não deve ser chamado.", + "assets/policies.json.CMP0032": "O output_required_files comando não deve ser chamado.", + "assets/policies.json.CMP0033": "O comando export_library_dependencies não deve ser chamado.", + "assets/policies.json.CMP0034": "O comando utility_source não deve ser chamado.", + "assets/policies.json.CMP0035": "O comando variable_requires não deve ser chamado.", + "assets/policies.json.CMP0036": "O comando build_name não deve ser chamado.", + "assets/policies.json.CMP0037": "Nomes de alvos não devem ser reservados e devem corresponder a um padrão de validade.", + "assets/policies.json.CMP0038": "Alvos não podem se vincular diretamente a si mesmos.", + "assets/policies.json.CMP0039": "Alvos utilitários não podem ter dependências de link.", + "assets/policies.json.CMP0040": "O alvo na assinatura TARGET de add_custom_command deve existir e estar definido no diretório atual.", + "assets/policies.json.CMP0041": "Erro em include relativo com expressão de gerador.", + "assets/policies.json.CMP0042": "MACOSX_RPATH é habilitado por padrão.", + "assets/policies.json.CMP0043": "Ignora as propriedades COMPILE_DEFINITIONS_", + "assets/policies.json.CMP0044": "Expressões de gerador _COMPILER_ID sensíveis a maiúsculas e minúsculas", + "assets/policies.json.CMP0045": "Erro em alvo inexistente em get_target_property.", + "assets/policies.json.CMP0046": "Erro em dependência inexistente em add_dependencies.", + "assets/policies.json.CMP0047": "Usa o identificador de compilador QCC para os drivers qcc no QNX.", + "assets/policies.json.CMP0048": "O comando project gerencia variáveis VERSION.", + "assets/policies.json.CMP0049": "Não expanda variáveis nas entradas de origem de destino.", + "assets/policies.json.CMP0050": "Proíbe assinaturas SOURCE em add_custom_command.", + "assets/policies.json.CMP0051": "Lista TARGET_OBJECTS na propriedade de alvo SOURCES.", + "assets/policies.json.CMP0052": "Rejeita diretórios de origem e de compilação em INTERFACE_INCLUDE_DIRECTORIES instalados.", + "assets/policies.json.CMP0053": "Simplifica a avaliação de referências de variáveis e de sequências de escape.", + "assets/policies.json.CMP0054": "Interpreta os argumentos de if como variáveis ou palavras-chave apenas quando não estão entre aspas.", + "assets/policies.json.CMP0055": "Verificação rigorosa para o comando break.", + "assets/policies.json.CMP0056": "Respeita os sinalizadores de link na assinatura de arquivo de origem do try_compile.", + "assets/policies.json.CMP0057": "Suporta o novo operador IN_LIST no if.", + "assets/policies.json.CMP0058": "O Ninja exige que os subprodutos de add_custom_command sejam explícitos.", + "assets/policies.json.CMP0059": "Não trate DEFINITIONS como uma propriedade de diretório interna.", + "assets/policies.json.CMP0060": "Vincula bibliotecas pelo caminho completo mesmo em diretórios implícitos.", + "assets/policies.json.CMP0061": "Por padrão, o CTest não instrui o make a ignorar erros (-i).", + "assets/policies.json.CMP0062": "Proíbe a instalação do resultado de exportação.", + "assets/policies.json.CMP0063": "Respeita as propriedades de visibilidade para todos os tipos de alvo.", + "assets/policies.json.CMP0064": "Reconhece TEST como um operador para o comando if.", + "assets/policies.json.CMP0065": "Não adiciona sinalizadores para exportar símbolos de executáveis sem a propriedade de alvo ENABLE_EXPORTS.", + "assets/policies.json.CMP0066": "Respeita os sinalizadores por configuração na assinatura de arquivo de origem do try_compile.", + "assets/policies.json.CMP0067": "Respeita o padrão de linguagem na assinatura de arquivo de origem do try_compile.", + "assets/policies.json.CMP0068": "Configurações de RPATH no macOS não afetam install_name.", + "assets/policies.json.CMP0069": "INTERPROCEDURAL_OPTIMIZATION é aplicado quando ativado.", + "assets/policies.json.CMP0070": "Define o comportamento de arquivos para caminhos relativos.", + "assets/policies.json.CMP0071": "Permite que AUTOMOC e AUTOUIC processem arquivos GENERATED.", + "assets/policies.json.CMP0072": "FindOpenGL prefere GLVND por padrão quando disponível.", + "assets/policies.json.CMP0073": "Não produz entradas de cache _LIB_DEPENDS legadas.", + "assets/policies.json.CMP0074": "find_package utiliza variáveis _ROOT.", + "assets/policies.json.CMP0075": "Macros de verificação de arquivo de inclusão respeitam CMAKE_REQUIRED_LIBRARIES.", + "assets/policies.json.CMP0076": "O comando target_sources converte caminhos relativos em absolutos.", + "assets/policies.json.CMP0077": "option respeita variáveis normais.", + "assets/policies.json.CMP0078": "UseSWIG gera nomes de alvos padrão.", + "assets/policies.json.CMP0079": "target_link_libraries permite o uso com alvos em outros diretórios.", + "assets/policies.json.CMP0080": "BundleUtilities não pode ser incluído em tempo de configuração.", + "assets/policies.json.CMP0081": "Caminhos relativos não são permitidos na propriedade de alvo LINK_DIRECTORIES.", + "assets/policies.json.CMP0082": "As regras de instalação de chamadas add_subdirectory são intercaladas com as do chamador.", + "assets/policies.json.CMP0083": "Para controlar a geração de Executável Independente de Posição (PIE) ou não, alguns sinalizadores são necessárias no momento do link.", + "assets/policies.json.CMP0084": "O módulo FindQt não existe para find_package.", + "assets/policies.json.CMP0085": "$ trata itens vazios da lista.", + "assets/policies.json.CMP0086": "UseSWIG respeita SWIG_MODULE_NAME por meio do sinalizador -module.", + "assets/policies.json.CMP0087": "instalar e instalar expressões de gerador de suporte.", + "assets/policies.json.CMP0088": "FindBISON executa o CMAKE_CURRENT_BINARY_DIR durante a execução.", + "assets/policies.json.CMP0089": "O identificador do compilador para compiladores IBM XL baseados em Clang agora é XLClang.", + "assets/policies.json.CMP0090": "A exportação não preenche o registro de pacote por padrão.", + "assets/policies.json.CMP0091": "Os sinalizadores da biblioteca de execução do MSVC são selecionadas por uma abstração.", + "assets/policies.json.CMP0092": "Os sinalizadores de aviso do MSVC não estão em CMAKE__FLAGS por padrão.", + "assets/policies.json.CMP0093": "FindBoost reporta Boost_VERSION no formato x.y.z.", + "assets/policies.json.CMP0094": "Os módulos FindPython3, FindPython2 e FindPython utilizam LOCATION como estratégia de busca.", + "assets/policies.json.CMP0095": "Entradas RPATH são corretamente escapadas no script intermediário de instalação do CMake.", + "assets/policies.json.CMP0096": "O comando project preserva zeros à esquerda nos componentes da versão.", + "assets/policies.json.CMP0097": "ExternalProject_Add com GIT_SUBMODULES \"\" não inicializa submódulos.", + "assets/policies.json.CMP0098": "FindFLEX executa o flex no diretório CMAKE_CURRENT_BINARY_DIR ao ser executado.", + "assets/policies.json.CMP0099": "As propriedades de link são transitivas sobre dependências privadas de bibliotecas estáticas.", + "assets/policies.json.CMP0100": "Permita que AUTOMOC e AUTOUIC processem arquivos de cabeçalho que terminam com a extensão .hh.", + "assets/policies.json.CMP0101": "O target_compile_options agora sempre respeita a palavra-chave BEFORE.", + "assets/policies.json.CMP0102": "O comando mark_as_advanced não cria mais uma entrada de cache se uma ainda não existir.", + "assets/policies.json.CMP0103": "Várias chamadas ao comando export com o mesmo FILE sem APPEND não são mais permitidas.", + "assets/policies.json.CMP0104": "Inicialize CMAKE_CUDA_ARCHITECTURES quando CMAKE_CUDA_COMPILER_ID _COMPILER_ID> for NVIDIA. Gera um erro se CUDA_ARCHITECTURES estiver vazia.", + "assets/policies.json.CMP0105": "As propriedades de alvo LINK_OPTIONS e INTERFACE_LINK_OPTIONS agora são usadas para a etapa de device link.", + "assets/policies.json.CMP0106": "O módulo Documentação é removido.", + "assets/policies.json.CMP0107": "Não é permitido criar um alvo ALIAS com o mesmo nome que outro alvo.", + "assets/policies.json.CMP0108": "Um alvo não pode se vincular a si mesmo, mesmo através de um alvo ALIAS.", + "assets/policies.json.CMP0109": "O comando find_program requer permissão para executar, mas não para ler.", + "assets/policies.json.CMP0110": "O add_test suporta caracteres arbitrários nos nomes dos testes.", + "assets/policies.json.CMP0111": "Um alvo importado sem sua propriedade de localização falha durante a geração.", + "assets/policies.json.CMP0112": "As expressões de geração de componentes de arquivo de alvo não adicionam dependências de alvo.", + "assets/policies.json.CMP0113": "Os geradores Makefile não repetem comandos personalizados das dependências de alvo.", + "assets/policies.json.CMP0114": "Os alvos de etapas do ExternalProject adotam completamente suas etapas.", + "assets/policies.json.CMP0115": "As extensões de arquivo de origem devem ser explícitas.", + "assets/policies.json.CMP0116": "Os geradores Ninja transformam DEPFILEs provenientes do add_custom_command.", + "assets/policies.json.CMP0117": "O sinalizador RTTI /GR do MSVC não é adicionada por padrão às variáveis CMAKE_CXX_FLAGS _FLAGS>.", + "assets/policies.json.CMP0118": "Fontes GENERATED podem ser usadas entre diretórios sem marcação manual.", + "assets/policies.json.CMP0119": "A propriedade de arquivo de origem LANGUAGE compila explicitamente no idioma especificado.", + "assets/policies.json.CMP0120": "O módulo WriteCompilerDetectionHeader foi removido.", + "assets/policies.json.CMP0121": "O comando list agora detecta índices inválidos.", + "assets/policies.json.CMP0122": "O UseSWIG segue as convenções de nomes de biblioteca para a linguagem CSharp.", + "assets/policies.json.CMP0123": "Os sinalizadores de compilação e link para CPU/arquitetura do ARMClang devem ser definidas explicitamente.", + "assets/policies.json.CMP0124": "As variáveis do loop foreach estão disponíveis apenas no escopo do loop.", + "assets/policies.json.CMP0125": "Os comandos find_file, find_path, find_library e find_program armazenam em cache seu resultado na variável especificada pelo seu primeiro argumento. Antes do CMake 3.21, se uma variável de cache com esse nome já existisse antes da chamada, mas a variável de cache não tivesse tipo, qualquer variável não armazenada em cache com o mesmo nome era descartada e a variável de cache era sempre utilizada (veja também CMP0126 para um comportamento diferente, mas semelhante). Isso contradiz a convenção de que uma variável não em cache deve ter precedência sobre uma variável em cache com o mesmo nome. Tal situação pode surgir se um usuário definir uma variável de cache na linha de comando sem especificar um tipo, como em cmake -DMYVAR=blah ... em vez de cmake -DMYVAR:FILEPATH=blah.", + "assets/policies.json.CMP0126": "Quando esta política é definida como NEW, o comando set não remove nenhuma variável normal com o mesmo nome do escopo atual. O comportamento OLD remove qualquer variável normal com o mesmo nome do escopo atual nas seguintes situações:", + "assets/policies.json.CMP0127": "cmake_dependent_option suporta a Sintaxe Completa de Condição.", + "assets/policies.json.CMP0128": "Quando esta política é definida como NOVA:", + "assets/policies.json.CMP0129": "O identificador do compilador para os compiladores MCST LCC agora é LCC, e não mais GNU.", + "assets/policies.json.CMP0130": "enquanto diagnostica erros na avaliação de condições.", + "assets/policies.json.CMP0131": "LINK_LIBRARIES suporta a expressão de geração :genex:`$`.", + "assets/policies.json.CMP0132": "Não defina variáveis de ambiente do compilador na primeira execução.", + "assets/policies.json.CMP0133": "O módulo CPack desativa o SLA por padrão no CPack DragNDrop Generator.", + "assets/policies.json.CMP0134": "A visualização padrão do registro é TARGET para os comandos find_file, find_path, find_library e find_package, e BOTH para o comando find_program.", + "assets/policies.json.CMP0135": "Ao usar o método de download por URL com os comandos ExternalProject_Add ou FetchContent_Declare, o CMake 3.23 e versões anteriores define os carimbos de data/hora dos conteúdos extraídos iguais aos carimbos de data/hora do arquivo. Quando a URL muda, o novo arquivo é baixado e extraído, mas os carimbos de data/hora dos conteúdos extraídos podem não ser mais recentes do que os conteúdos anteriores. Qualquer item que dependa dos conteúdos extraídos pode não ser reconstruído, mesmo que esses conteúdos tenham sido alterados.", + "assets/policies.json.CMP0136": "os sinalizadores da biblioteca de tempo de execução do Watcom são selecionadas por uma abstração.", + "assets/policies.json.CMP0137": "try_compile passa variáveis da plataforma no modo projeto.", + "assets/policies.json.CMP0138": "CheckIPOSupported usa os sinalizadores do projeto chamador.", + "assets/policies.json.CMP0139": "O comando if suporta comparações de caminho usando o operador PATH_EQUAL.", + "assets/policies.json.CMP0140": "O comando return verifica seus parâmetros.", + "assets/policies.json.CMP0141": "Os sinalizadores do formato de informações de depuração do MSVC são selecionadas por uma abstração.", + "assets/policies.json.CMP0142": "O gerador Xcode não adiciona sufixos por configuração aos caminhos de busca de bibliotecas.", + "assets/policies.json.CMP0143": "A propriedade global USE_FOLDERS é tratada como ON por padrão.", + "assets/policies.json.CMP0144": "O comando find_package usa variáveis em maiúsculas _ROOT.", + "assets/policies.json.CMP0145": "Os módulos Dart e FindDart foram removidos.", + "assets/policies.json.CMP0146": "O módulo FindCUDA foi removido.", + "assets/policies.json.CMP0147": "Os geradores do Visual Studio executam comandos personalizados em paralelo.", + "assets/policies.json.CMP0148": "Os módulos FindPythonInterp e FindPythonLibs foram removidos.", + "assets/policies.json.CMP0149": "Os geradores do Visual Studio selecionam o SDK do Windows mais recente por padrão.", + "assets/policies.json.CMP0150": "Os comandos ExternalProject_Add e FetchContent_Declare tratam caminhos relativos de GIT_REPOSITORY como relativos ao repositório remoto do projeto pai.", + "assets/policies.json.CMP0151": "O diretório de inclusão AUTOMOC é, por padrão, um diretório de inclusão do sistema.", + "assets/policies.json.CMP0152": "O comando file resolve links simbólicos antes de simplificar os componentes ../.", + "assets/policies.json.CMP0153": "O comando exec_program não deve ser chamado.", + "assets/policies.json.CMP0154": "Os arquivos gerados são privados por padrão em alvos que usam conjuntos de arquivos.", + "assets/policies.json.CMP0155": "As fontes C++ em alvos com pelo menos C++20 são analisadas para importações quando suportado.", + "assets/policies.json.CMP0156": "Remover duplicação de bibliotecas nas linhas de link com base nas capacidades do vinculador.", + "assets/policies.json.CMP0157": "O modo de compilação Swift é selecionado por uma abstração.", + "assets/policies.json.CMP0158": "add_test respeita CMAKE_CROSSCOMPILING_EMULATOR apenas quando está em compilação cruzada.", + "assets/policies.json.CMP0159": "file com REGEX atualiza CMAKE_MATCH_.", + "assets/policies.json.CMP0160": "Mais propriedades de alvo somente leitura agora geram erro ao tentar defini-las.", + "assets/policies.json.CMP0161": "A variável CPACK_PRODUCTBUILD_DOMAINS tem como padrão o valor true.", + "assets/policies.json.CMP0162": "Os geradores do Visual Studio adicionam indicadores UseDebugLibraries por padrão.", + "assets/policies.json.CMP0163": "A propriedade de arquivo de origem GENERATED agora é visível em todos os diretórios.", + "assets/policies.json.CMP0164": "add_library rejeita bibliotecas SHARED quando não são suportadas pela plataforma.", + "assets/policies.json.CMP0165": "enable_language não deve ser chamado antes do projeto.", + "assets/policies.json.CMP0166": "TARGET_PROPERTY avalia propriedades de link de forma transitiva sobre dependências privadas de bibliotecas estáticas.", + "assets/policies.json.CMP0167": "O módulo FindBoost foi removido.", + "assets/policies.json.CMP0168": "O módulo FetchContent executa os passos diretamente em vez de através de uma subcompilação.", + "assets/policies.json.CMP0169": "Chamar FetchContent_Populate com um único argumento (o nome de uma dependência já declarada) está obsoleto.", + "assets/policies.json.CMP0170": "Quando FETCHCONTENT_FULLY_DISCONNECTED está definido como true, FetchContent_MakeAvailable e FetchContent_Populate aplicam a restrição de que seu diretório de origem já deve estar populado. O requisito sempre foi documentado, mas não era verificado ou aplicado no CMake 3.29 ou versões anteriores. Isso às vezes levava a erros difíceis de rastrear quando um projeto esperava que uma dependência tivesse sido populada, mas sua população foi ignorada silenciosamente.", + "assets/policies.json.CMP0171": "codegen é um nome de alvo reservado.", + "assets/policies.json.CMP0172": "O módulo CPack habilita a instalação por máquina por padrão no CPack WIX Generator.", + "assets/policies.json.CMP0173": "O módulo CMakeFindFrameworks foi removido.", + "assets/policies.json.CMP0174": "cmake_parse_arguments define uma variável como string vazia após uma palavra-chave de valor único.", + "assets/policies.json.CMP0175": "add_custom_command rejeita argumentos inválidos.", + "assets/policies.json.CMP0176": "O ENCODING do execute_process é UTF-8 por padrão.", + "assets/policies.json.CMP0177": "Os caminhos do install DESTINATION são normalizados.", + "assets/policies.json.CMP0178": "As linhas de comando de teste preservam argumentos vazios.", + "assets/policies.json.CMP0179": "A remoção de duplicatas de bibliotecas estáticas nas linhas de link mantém a primeira ocorrência. Esta política é relevante apenas quando a política CMP0156 está definida como NEW.", + "assets/policies.json.CMP0180": "O comando project sempre define _* como variáveis normais.", + "assets/policies.json.CMP0181": "As variáveis CMAKE_EXE_LINKER_FLAGS, CMAKE_EXE_LINKER_FLAGS_, CMAKE_SHARED_LINKER_FLAGS, CMAKE_SHARED_LINKER_FLAGS_, CMAKE_MODULE_LINKER_FLAGS e CMAKE_MODULE_LINKER_FLAGS_ são analisadas e reformatadas, e suportam o prefixo LINKER:.", + "assets/policies.json.CMP0182": "Crie arquivos de biblioteca compartilhada por padrão no AIX.", + "assets/policies.json.CMP0183": "add_feature_info suporta a Sintaxe Completa de Condição.", + "assets/policies.json.CMP0184": "Os sinalizadores de verificação em tempo de execução do MSVC são selecionadas por uma abstração.", + "assets/policies.json.CMP0185": "O FindRuby não fornece mais variáveis RUBY_* em maiúsculas.", + "assets/policies.json.CMP0186": "Expressões regulares correspondem a ^ no máximo uma vez em buscas repetidas.", + "assets/policies.json.CMP0187": "Incluir arquivo de origem sem extensão após outro com o mesmo nome que possui extensão.", + "assets/policies.json.CMP0188": "O módulo FindGCCXML foi removido.", + "assets/policies.json.CMP0189": "TARGET_PROPERTY avalia propriedades LINK_LIBRARIES de forma transitiva.", + "assets/policies.json.CMP0190": "Os módulos FindPython3, FindPython2 e FindPython impõem consistência dos artefatos no modo de compilação cruzada.", + "assets/policies.json.CMP0191": "O módulo FindCABLE foi removido.", + "assets/policies.json.CMP0192": "O GNUInstallDirs usa SYSCONFDIR, LOCALSTATEDIR e RUNSTATEDIR absolutos em prefixos especiais.", + "assets/policies.json.CMP0193": "O GNUInstallDirs armazena em cache CMAKE_INSTALL_* com o prefixo usr/ quando o prefixo de instalação é /.", + "assets/policies.json.CMP0194": "MSVC não é um montador para a linguagem ASM.", + "assets/policies.json.CMP0195": "Os módulos Swift em árvores de compilação usam a estrutura de diretório de módulos Swift.", + "assets/policies.json.CMP0196": "O módulo CMakeDetermineVSServicePack foi removido.", + "assets/policies.json.CMP0197": "O sinalizador MSVC link -machine: não está em CMAKE_*_LINKER_FLAGS.", + "assets/policies.json.CMP0198": "CMAKE_PARENT_LIST_FILE não é definido no CMakeLists.txt.", + "assets/policies.json.CMP0199": ":genex:`$` não corresponde a configurações mapeadas que não estão selecionadas.", + "assets/policies.json.CMP0200": "A seleção de localização e configuração para alvos importados está mais consistente.", + "assets/policies.json.CMP0201": "O Python::NumPy não depende do Python::Development.Module.", + "assets/policies.json.CMP0202": "Os nomes dos arquivos PDB sempre incluem o POSTFIX por configuração do seu alvo.", + "assets/policies.json.CMP0203": "_WINDLL é definido para bibliotecas compartilhadas que têm como alvo o ABI do MSVC.", + "assets/policies.json.CMP0204": "Um conjunto de caracteres é sempre definido ao direcionar para o ABI do MSVC." +} \ No newline at end of file diff --git a/i18n/ptb/package.i18n.json b/i18n/ptb/package.i18n.json index 7b58851de8..e22ac59635 100644 --- a/i18n/ptb/package.i18n.json +++ b/i18n/ptb/package.i18n.json @@ -4,6 +4,8 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "cmake-tools.command.cmake.addFileToCMakeLists.title": "Add File to CMake Lists", + "cmake-tools.command.cmake.removeFileFromCMakeLists.title": "Remove File from CMake Lists", "cmake-tools.command.cmake.openCMakePresets.title": "Open CMakePresets.json", "cmake-tools.command.cmake.addConfigurePreset.title": "Adicionar a Predefinição de Configuração", "cmake-tools.command.cmake.addBuildPreset.title": "Adicionar predefinição de compilação", @@ -46,6 +48,9 @@ "cmake-tools.command.cmake.cleanConfigureWithDebugger.title": "Excluir cache e reconfigurar com o depurador CMake", "cmake-tools.command.cmake.cleanConfigureAll.title": "Excluir o Cache e Reconfigurar Todos os Projetos", "cmake-tools.command.cmake.cleanConfigureAllWithDebugger.title": "Excluir cache e reconfigurar todos os projetos com o depurador CMake", + "cmake-tools.command.cmake.fullCleanConfigure.title": "Excluir o Diretório de Build e Reconfigurar", + "cmake-tools.command.cmake.fullCleanConfigureAll.title": "Excluir o Diretório de Build e Reconfigurar Todos os Projetos", + "cmake-tools.command.cmake.outline.fullCleanConfigureAll.title": "Reconfigurar Totalmente Todos os Projetos", "cmake-tools.command.cmake.editCacheUI.title": "Editar o Cache do CMake (interface do usuário)", "cmake-tools.command.cmake.outline.cleanConfigure.title": "Reconfiguração Limpa", "cmake-tools.command.cmake.outline.cleanConfigureWithDebugger.title": "Reconfiguração limpa com o depurador CMake", @@ -58,6 +63,9 @@ "cmake-tools.command.cmake.cleanConfigureAndBuild.title": "Excluir Cache, Reconfigurar e Compilar", "cmake-tools.command.cmake.cleanConfigureAndBuildAll.title": "Excluir Cache, Reconfigurar e Compilar Todos os Projetos", "cmake-tools.command.cmake.outline.cleanConfigureAndBuildAll.title": "Limpar Reconfigurar e Compilar Todos os Projetos", + "cmake-tools.command.cmake.fullCleanConfigureAndBuild.title": "Excluir o Diretório de Build, Reconfigurar e Compilar", + "cmake-tools.command.cmake.fullCleanConfigureAndBuildAll.title": "Excluir o Diretório de Build, Reconfigurar e Compilar Todos os Projetos", + "cmake-tools.command.cmake.outline.fullCleanConfigureAndBuildAll.title": "Limpar, Reconfigurar e Compilar Totalmente Todos os Projetos", "cmake-tools.command.cmake.ctest.title": "Executar Testes", "cmake-tools.command.cmake.ctestAll.title": "Executar Testes de Todos os Projetos", "cmake-tools.command.cmake.cpack.title": "Executar o CPack", @@ -74,6 +82,7 @@ "cmake-tools.command.cmake.launchTarget.title": "Executar sem Depuração", "cmake-tools.command.cmake.launchTargetAll.title": "Executar Todos os Projetos sem Depuração", "cmake-tools.command.cmake.selectLaunchTarget.title": "Definir Destino de Inicialização/Depuração", + "cmake-tools.command.cmake.selectBuildAndLaunchTarget.title": "Definir destino de compilação e inicialização/depuração", "cmake-tools.command.cmake.stop.title": "Cancelar compilação", "cmake-tools.command.cmake.stopAll.title": "Cancelar o Build de Todos os Projetos", "cmake-tools.command.cmake.resetState.title": "Redefinir o Estado da Extensão do CMake Tools (para solução de problemas)", @@ -105,6 +114,7 @@ "cmake-tools.configuration.cmake.generator.description": "O gerador do CMake a ser usado.", "cmake-tools.configuration.cmake.toolset.description": "O conjunto de ferramentas do CMake a ser usado durante a configuração.", "cmake-tools.configuration.cmake.platform.description": "A plataforma do CMake a ser usada durante a configuração.", + "cmake-tools.configuration.cmake.shell.description": "Caminho para um executável de shell a ser usado ao executar comandos CMake, CTest e CPack (por exemplo, Git Bash ou MSYS2). Quando definido, todas as chamadas a subprocessos são feitas por meio desse shell. Útil para cadeias de ferramentas inseridas que exigem a conversão de caminho POSIX. Quando nulo, o comportamento padrão do shell do sistema é usado.", "cmake-tools.configuration.cmake.configureArgs.description": "Os argumentos adicionais a serem passados para o CMake durante a configuração. Ao usar predefinições do CMake, esses argumentos são anexados temporariamente aos argumentos fornecidos pela predefinição de configuração ativa.", "cmake-tools.configuration.cmake.buildArgs.description": "Os argumentos adicionais a serem passados para o CMake ao compilar. Ao usar predefinições do CMake, esses argumentos são acrescentados temporariamente aos argumentos fornecidos pela predefinição de compilação ativa.", "cmake-tools.configuration.cmake.buildToolArgs.description": "Os argumentos adicionais a serem passados para a ferramenta de compilação subjacente ao compilar. Ao usar predefinições do CMake, esses argumentos são acrescentados temporariamente aos argumentos fornecidos pela predefinição de compilação ativa para invocar a ferramenta de compilação.", @@ -112,7 +122,7 @@ "cmake-tools.configuration.cmake.ctestPath.description": "O caminho para o executável do CTest. Se for nulo, será deduzido por meio do cmake.cmakePath (recomenda-se deixar nulo).", "cmake-tools.configuration.cmake.cpackPath.description": "Caminho para o executável do CPack. Se nulo, será inferido a partir do cmake.cmakePath (recomenda-se deixar nulo). Será ignorado quando forem usados kits em vez de predefinições.", "cmake-tools.configuration.cmake.ctest.parallelJobs.markdownDescription": "O número de trabalhos de teste paralelos. Use zero para usar o valor de `#cmake.parallelJobs#`. Isso só se aplica quando `#cmake.ctest.allowParallelJobs#` é definido como `true`.", - "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "Permite que os ctests sejam executados em paralelo, no entanto, a saída do resultado pode ficar confusa como resultado, e o Gerenciador de Testes pode não refletir com precisão o progresso dos testes.", + "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "Permite que os ctests sejam executados em paralelo, no entanto, a saída do resultado pode ficar confusa como resultado, e o Gerenciador de Testes pode não refletir com precisão o progresso dos testes. Quando desabilitados, os testes são executados sequencialmente em ordem alfabética, correspondendo à ordem de exibição do Gerenciador de Testes.", "cmake-tools.configuration.cmake.ctest.testExplorerIntegrationEnabled.description": "Se a integração com o gerenciador de teste está habilitada ou não. É útil desabilitar esse recurso se você preferir usar uma extensão diferente para a integração de testes.", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiter.markdownDescription": "Delimitador opcional usado para separar os nomes dos conjuntos de testes e agrupar os testes de maneira hierárquica no Gerenciador de Testes. Essa cadeia de caracteres é usada em uma expressão regular, portanto, alguns delimitadores podem precisar de escape. Exemplos: `-` ( Um delimitador: `-`), `\\.|::` (Dois delimitadores: `.` ou `::`. Observe que `.` precisa ser escape.)", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiterMaxOccurrence.markdownDescription": "Número máximo de vezes que o delimitador pode ser usado para dividir o nome do teste. `0` significa sem limite.", @@ -124,9 +134,21 @@ "cmake-tools.configuration.cmake.ctest.failurePatterns.actual": "O índice do grupo de correspondência da saída de teste real. O padrão é indefinido.", "cmake-tools.configuration.cmake.ctest.failurePatterns.expected": "O índice do grupo de correspondência da saída de teste esperada. O padrão é indefinido.", "cmake-tools.configuration.cmake.ctest.debugLaunchTarget.description": "Nome de destino launch.json iniciar ao depurar um teste com CTest. Por padrão e no caso de um destino não existente, isso mostrará um seletor com todos os destinos disponíveis.", + "cmake-tools.configuration.cmake.ctest.neverDebugTestsWithLaunchConfiguration.description": "Quando definido como true, sempre depura testes sem uma configuração de inicialização, ignorando o menu de escolha rápida. O padrão é falso.", "cmake-tools.configuration.cmake.parseBuildDiagnostics.description": "Analisar os avisos e erros da saída do compilador.", "cmake-tools.configuration.cmake.enabledOutputParsers.description": "Os analisadores de saída a serem usados. Analisadores com suporte: `cmake`, `gcc`, `gnuld` para saída do vinculador no estilo GNULD, `msvc` para Microsoft Visual C++, `ghs` para o compilador Green Hills com --no_wrap_diagnostics --brief_diagnostics, `diab` para o compilador Wind River Diab e `iwyu` para o diagnósticos do include-what-you-use.", - "cmake-tools.configuration.cmake.debugConfig.description": "A configuração de depuração a ser usada durante a depuração de um destino.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.markdownDescription": "Correspondências de problemas adicionais para a saída do build. Use isso para exibir o diagnóstico de ferramentas como clang-organiz, PCLint Plus, cppcheck ou scripts personalizados integrados por meio de `add_custom_command`/`add_custom_target` no CMake.\n\nCada entrada define um `name` (usado como o rótulo de origem de diagnóstico), um `regexp` e índices de grupo de captura para `file`, `line`, `column`, `severity`, `message` e `code`.\n\nPor exemplo, para corresponder à saída de clang-tidy como `/path/file.cpp:10:5: warning: some message [check-name]`:\n```json\n[\n {\n \"name\": \"clang-tidy\",\n \"regexp\": \"^(.+?):(\\\\d+):(\\\\d+):\\\\s+(warning|error|note):\\\\s+(.+?)\\\\s*(?:\\\\[(.+)\\\\])?$\",\n \"file\": 1,\n \"line\": 2,\n \"column\": 3,\n \"severity\": 4,\n \"message\": 5,\n \"code\": 6\n }\n]\n```\n\nOs correspondentes personalizados são executados **após** os analisadores internos (`gcc`, `msvc`, etc.) para que eles não roubem linhas de compiladores internos.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.name": "Um nome exclusivo para este correspondente, usado como rótulo da origem do diagnóstico no painel Problemas.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.regexp": "A expressão regular a ser correspondida a cada linha de saída de compilação.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.file": "O índice do grupo de captura para o caminho do arquivo. O padrão é `1`.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.line": "O índice do grupo de captura para o número de linha. O padrão é `2`.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.column": "O índice do grupo de captura para o número da coluna. Opcional.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.group": "O índice do grupo de captura para a severidade (deve capturar \"error\", \"warning\" ou \"info\").", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.fixed": "Uma severidade fixa a ser aplicada a todas as correspondências desse padrão.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.message": "O índice do grupo de captura para a mensagem de diagnóstico. O padrão é `3`.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.code": "O índice do grupo de captura para um código de diagnóstico opcional.", + "cmake-tools.configuration.cmake.debugConfig.description": "A configuração de depuração a ser usada durante a depuração de um destino. Quando `type` é especificado, a configuração do depurador detectado automaticamente é ignorada e apenas uma configuração base mínima (programa, cwd, nome) é gerada a partir do destino. Todas as outras propriedades são aplicadas a partir dessa configuração, permitindo que você tenha controle total sobre a configuração de inicialização de depuração para qualquer adaptador de depuração.", + "cmake-tools.configuration.cmake.debugConfig.type.description": "O tipo de adaptador de depuração a ser usado (por exemplo, `cppdbg`, `cppvsdbg`, `lldb`, `codelldb`). Quando definido, ignora a detecção automática do depurador do cache do CMake e usa esse tipo diretamente. Todas as propriedades adicionais exigidas pelo adaptador de depuração podem ser adicionadas ao `#cmake.debugConfig#`.", "cmake-tools.configuration.cmake.debugConfig.symbolSearchPath.description": "Os caminhos de pesquisa de símbolo do depurador do Visual Studio.", "cmake-tools.configuration.cmake.debugConfig.additionalSOLibSearchPath.description": "Os caminhos para o GDB ou o LLDB a serem usados para pesquisar arquivos .so.", "cmake-tools.configuration.cmake.debugConfig.externalConsole.description": "Iniciar um console externo para o programa.", @@ -226,11 +248,13 @@ "cmake-tools.configuration.cmake.automaticReconfigure.description": "Configure automaticamente os diretórios do projeto CMake quando o kit ou a predefinição de configuração for alterada.", "cmake-tools.configuration.cmake.pinnedCommands.description": "Lista de comandos do CMake para sempre fixar por padrão. Elas aparecerão na seção 'Comandos Fixados' da barra lateral do CMake Tools.", "cmake-tools.configuration.cmake.enableAutomaticKitScan.description": "Habilita a verificação automática de kits quando um kit não é selecionado. Isso só terá efeito quando as predefinições do CMake não estiverem sendo usadas.", + "cmake-tools.configuration.cmake.removeStaleKitsOnScan.description": "Remove compiler-based kits from the user kits file during a full kit scan when they are no longer rediscovered. Set \"keep\": true in a kit entry to preserve it.", "cmake-tools.configuration.cmake.enableLanguageServices.description": "Habilitar serviços de linguagem para arquivos CMake. Isso habilitará o realce de sintaxe, o preenchimento de código e outros recursos.", "cmake-tools.configuration.cmake.preRunCoverageTarget.description": "Destino a ser compilado antes de executar testes com cobertura usando o gerenciador de testes", "cmake-tools.configuration.cmake.postRunCoverageTarget.description": "Destino a ser compilado após a execução de testes com cobertura usando o gerenciador de testes", "cmake-tools.configuration.cmake.coverageInfoFiles.description": "Arquivos de informações de cobertura do LCOV a serem processados após a execução de testes com cobertura usando o explorador de testes.", "cmake-tools.configuration.cmake.useFolderPropertyInBuildTargetDropdown.description": "Controla se a lista suspensa de segmentação de build padrão está agrupada pelos grupos de pastas do CMake.", + "cmake-tools.configuration.cmake.setBuildTargetSameAsLaunchTarget.description": "Quando habilitado, definir o destino de inicialização/depuração define automaticamente o destino de build para corresponder. O destino de build ainda pode ser alterado independentemente.", "cmake-tools.debugger.pipeName.description": "Nome do canal (no Windows) ou soquete de domínio (no Unix) a ser usado para comunicação do depurador.", "cmake-tools.debugger.clean.description": "Limpe antes de configurar.", "cmake-tools.debugger.configureAll.description": "Configure para todos os projetos.", @@ -262,6 +286,7 @@ "cmake-tools.configuration.cmake.launchBehavior.breakAndReuseTerminal.markdownDescriptions": "A instância do terminal de lançamento é reutilizada e um comando `break` é enviado para terminar qualquer processo ativo em primeiro plano antes de lançar o alvo.", "cmake-tools.configuration.cmake.launchBehavior.newTerminal.markdownDescriptions": "Uma nova instância terminal é criada e o alvo é lançado nela. Os terminais existentes não são limpos automaticamente.", "cmake-tools.configuration.cmake.loadCompileCommands.description": "Controla se a extensão lê compile_commands.json para habilitar a compilação de arquivo único.", + "cmake-tools.configuration.cmake.outlineViewType.description": "Project Outline View`s type. Available options are: \"list\" and \"tree\".", "cmake-tools.command.cmake.projectStatus.update.title": "Atualizar o status do projeto", "cmake-tools.command.cmake.pinnedCommands.add.title": "Adicionar um comando CMake para fixar", "cmake-tools.command.cmake.pinnedCommands.remove.title": "Desafixar Comando", @@ -272,5 +297,33 @@ "cmake-tools.debugger.label": "Depurador do CMake", "cmake-tools.command.cmake.appendBuildDirectoryToWorkspace.title": "Anexar o Diretório de Compilação ao Espaço de Trabalho Atual", "cmake-tools.command.workbench.action.tasks.configureTaskRunner.title": "Configurar a Tarefa", - "cmake-tools.command.workbench.action.tasks.runTask.title": "Executar a Tarefa" + "cmake-tools.command.workbench.action.tasks.runTask.title": "Executar a Tarefa", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.description": "Add source files to CMake lists when they are created.", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.no.description": "Do not automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.yes.description": "Automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.description": "Remove source files from CMake lists when they are deleted.", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.no.description": "Do not automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.yes.description": "Automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.markdownDescription": "How to choose which `set()` or `list(APPEND/PREPEND/INSERT)` command invocation to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.never.description": "Do not look for variable modification command invocations, only look for source command invocations.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askFirstParentDir.description": "Present a Quick Pick with options from the first `CMakeLists.txt` found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askParentDirs.description": "Present a Quick Pick with options from all `CMakeLists.txt` files found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.sourceVariables.markdownDescription": "Variables to add source files to. Variables appearing earlier in this list will be given higher priority. Only used if `#cmake.modifyLists.variableSelection#` is not `never`. Supports glob patterns.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.description": "How to choose which target to add new source files to when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askNearestSourceDir.description": "Present a Quick Pick with targets whose source directories are closest to location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askParentSourceDirs.description": "Present a Quick Pick with targets whose source directories contain the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.description": "How to choose which of a target's source command invocations to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askFirstParentDir.description": "Present a Quick Pick with options from the CMake list file in the parent directory closest to the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askParentDirs.description": "Present a Quick Pick with options from all CMake list files in the parent directories of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSourceCommands.markdownDescription": "Commands to treat as target source commands when adding source files CMake lists. Commands appearing earlier in this list will be given higher priority. Supports glob patterns.\r\n\r\nIf you are using the File API (see `#cmake.cmakeCommunicationMode#`), user-defined functions and macros which call the commands in this list are detected automatically and added to it.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.description": "How to choose which of a target's visibility scopes, file sets, or source keyword parameters to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.ask.description": "Present a Quick Pick with options from the selected target source command invocation.", + "cmake-tools.configuration.cmake.modifyLists.sourceListKeywords.markdownDescription": "Keyword arguments to user-defined functions and macros which introduce lists of source files. If left empty, all arguments consisting of only upper-case letters and underscores will be considered. Supports glob patterns.", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier" } \ No newline at end of file diff --git a/i18n/ptb/schemas/kits-schema.json.i18n.json b/i18n/ptb/schemas/kits-schema.json.i18n.json index 24ec22a552..a25090b43c 100644 --- a/i18n/ptb/schemas/kits-schema.json.i18n.json +++ b/i18n/ptb/schemas/kits-schema.json.i18n.json @@ -17,9 +17,11 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Caminho para um arquivo de cadeia de ferramentas", "schemas/kits-schema.json.items.properties.visualStudio": "ID da instância do produto do Visual Studio", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Arquitetura a ser direcionada", + "schemas/kits-schema.json.items.properties.visualStudioArguments": "Arguments to vcvarsall.bat", "schemas/kits-schema.json.items.properties.environmentSetupScript": "O caminho absoluto para um script que modifica o ambiente do Kit", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Valor para a variável de ambiente", - "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Valor para a Configuração do CMake", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.0": "Valor para a Configuração do CMake. Os pontos e vírgulas em cadeias de caracteres são escapados.", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.1": "Valores unidos com ponto e vírgula para formar uma lista do CMake sem escape.", "schemas/kits-schema.json.items.properties.preferredGenerator": "Definir um gerador de CMake preferencial para este Kit", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.name": "Nome do gerador a ser usado", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.platform": "Plataforma CMake para um argumento -A", diff --git a/i18n/ptb/src/cmakeListsModifier.i18n.json b/i18n/ptb/src/cmakeListsModifier.i18n.json new file mode 100644 index 0000000000..a3c9d1d6a2 --- /dev/null +++ b/i18n/ptb/src/cmakeListsModifier.i18n.json @@ -0,0 +1,51 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "add.newly.created.files": "Add newly created files to CMakeLists.txt", + "error.processing.add.files": "Error processing added files", + "remove.deleted.file": "Remove a deleted file from CMakeLists.txt", + "error.processing.delete.files": "Error processing deleted files", + "add.file.no.code.model": "Adding a file without a valid code model", + "file.already.in.target": "{0} already in target {1}.", + "no.targets.found": "No targets found. {0} not added to build system.", + "no.source.command.invocations": "No source command invocations found. {0} not added to build system.", + "delete.file.no.code.model": "Deleting a file without a valid code model", + "not.modifying.unsaved.delete": "Not modifying {0} to delete {1} because it has unsaved changes.", + "add.to.which.variable": "CMake: Add {0} to which variable?", + "add.to.which.target": "CMake: Add {0} to which target?", + "add.to.which.invocation": "CMake: Add {0} to which command invocation of {1}?", + "add.to.which.scope.fileset.keyword": "CMake: Add {0} to which Scope, File Set, or Keyword?", + "open.file": "Open File", + "not.modifying.unsaved.files": "Cannot modify {0} because it has unsaved changes.", + "skipping.unsaved.files": "Skipping {0} file(s) with unsaved changes: {1}", + "edit.label.remove.source.file": "CMake: Remove deleted source file", + "edit.label.add.source.file": "CMake: Add new source file", + "edits.applied.successfully": "Successfully applied {0} CMake list edit(s).", + "edits.apply.failed": "Failed to apply CMake list edits: {0}", + "not.local.file.add": "{0} is not a local file. Not adding to CMake lists.", + "no.candidates.found": "No suitable locations found to add {0}.", + "not.modifying.unsaved.add": "Not modifying {0} to add {1} because it has unsaved changes.", + "not.local.file.remove": "{0} is not a local file. Not removing from CMake lists.", + "could.not.open.file": "Could not open file {0}: {1}", + "file.not.found.in.cmake.lists": "{0} not found in CMake lists.", + "file.already.in.destination": "{0} already in {1} at {2}:{3}", + "parse.error.examining.cmake.lists": "Parse error while examining CMakeLists.txt files. Details: {0}", + "could.not.open.cmake.lists": "Could not open {0}: {1}", + "parse.error.finding.invocations": "Parse error while finding command invocations to add to. CMake file modified since last configure? Details: {0}", + "unexpected.command.found": "Found \"{0}\", expected \"{1}\". CMake file modified since last configure? Details: {2}:{3}", + "scope.private.detail": "{0} will be used to build {1}", + "scope.public.detail": "{0} will be used to build both {1} and targets that use {1}", + "scope.interface.detail": "{0} will be used to build targets that use {1}", + "fileset.headers.detail": "{0} will be used via a language's #include mechanism", + "fileset.cxx.modules.detail": "{0} contains C++ interface module or partition units.", + "label.fileset": "{0} File Set", + "label.scope": "{0} Scope", + "fileset.type": "Type: {0}", + "scope.with.fileset.detail": "{0} Scope: {1}", + "keyword.of.command": "Keyword of {0} command", + "command.label": "{0} Command", + "add.to.command.arguments": "Add {0} to the list of arguments to {1} command" +} \ No newline at end of file diff --git a/i18n/ptb/src/cmakeProject.i18n.json b/i18n/ptb/src/cmakeProject.i18n.json index 9348363cbd..9f6a6a5a2f 100644 --- a/i18n/ptb/src/cmakeProject.i18n.json +++ b/i18n/ptb/src/cmakeProject.i18n.json @@ -9,6 +9,7 @@ "generator.changed.restart.driver": "Reiniciando o driver do CMake após uma alteração de gerador.", "preferredGenerator.changed.restart.driver": "Reiniciando o driver do CMake após uma alteração de preferredGenerators.", "bad.executable": "Executável incorreto do CMake: {0}. Verifique se ele está instalado ou se o valor da configuração {1} contém o caminho correto", + "shell.changed.restart.driver": "Reiniciando o driver do CMake após uma alteração de shell.", "targests.in.preset": "[Alvos em Predefinição]", "constructing.cmakeproject": "Construindo a nova instância CMakeProject", "disposing.driver": "Descartando o driver do CMake", @@ -142,9 +143,9 @@ "configure.now.button": "Configurar Agora", "cache.load.failed": "Não foi encontrado nenhum arquivo CMakeCache.txt. Configure o projeto primeiro.", "set.up.before.selecting.target": "Configure o seu projeto do CMake antes de selecionar um destino.", - "select.active.target.tooltip": "Selecionar o destino padrão de compilação", "enter.target.name": "Insira um nome de destino", "target.to.build.description": "Destino a ser compilado", + "select.active.target.tooltip": "Selecionar o destino padrão de compilação", "build.failed": "Ocorreu um erro na compilação.", "driver.died.after.build.succeeded": "O driver do CMake foi encerrado imediatamente após o êxito do build.", "driver.died.before.workflow": "O driver do CMake foi encerrado antes de iniciar o fluxo de trabalho.", @@ -167,6 +168,7 @@ "target.debugging.unsupported": "Não há mais suporte para depuração de destino com o driver herdado", "learn.more.button": "Saiba mais", "failed.to.prepare.target": "Falha ao preparar o destino executável com o nome {0}", + "debug.configuration.from.settings": "Depurar a configuração das configurações do usuário: {0}", "debug.configuration.from.cache": "Depurar configuração do cache: {0}", "problem.getting.debug": "Problema ao obter a configuração de depuração do cache.", "starting.debugger.with": "Iniciando o depurador com a configuração a seguir.", diff --git a/i18n/ptb/src/ctest.i18n.json b/i18n/ptb/src/ctest.i18n.json index 27c86b926a..ae5bbff6d0 100644 --- a/i18n/ptb/src/ctest.i18n.json +++ b/i18n/ptb/src/ctest.i18n.json @@ -27,6 +27,13 @@ "test.buildingPostRunCoverageTarget": "Compilando o postRunCoverageTarget \"{0}\" para o projeto {1} depois que os testes forem executados com cobertura.", "test.postRunCoverageTargetFailure": "Falha ao criar o destino postRunCoverageTarget no projeto em {0}. Ignorando o tratamento de dados de cobertura.", "test.skip.run.build.failure": "Não está executando testes devido a uma falha de compilação.", + "debug.without.launch.config": "Depurar sem configuração de inicialização", + "choose.debug.method": "Escolha como depurar o teste.", + "yes": "Sim", + "no": "Não", + "never.debug.with.launch.prompt": "Deseja sempre depurar testes sem uma configuração de inicialização neste workspace?", + "no.launch.config": "Nenhuma configuração de inicialização encontrada.", + "choose.launch.config": "Escolha uma configuração de inicialização para depurar o teste.", "test.skip.debug.build.failure": "Não está depurando testes devido a uma falha de compilação.", "build.failed": "Ocorreu um erro na compilação", "run.tests.profile": "Executar Testes", diff --git a/i18n/ptb/src/drivers/cmakeDriver.i18n.json b/i18n/ptb/src/drivers/cmakeDriver.i18n.json index 0e03b11a12..d726278ec8 100644 --- a/i18n/ptb/src/drivers/cmakeDriver.i18n.json +++ b/i18n/ptb/src/drivers/cmakeDriver.i18n.json @@ -5,13 +5,14 @@ // Do not edit this file. It is machine generated. { "no.usable.generator.found": "Nenhum gerador utilizável localizado.", - "user.closed.file.compilation.terminal": "O usuário fechou um terminal de compilação de arquivo", "disposing.base.cmakedriver": "Descartando CMakeDriver de base", "async.disposing.cmake.driver": "Driver CMake de descarte assíncrono", "test.with.overrides": "OBSERVAÇÃO: você está testando com a predefinição {0}, mas há algumas substituições sendo aplicadas nas configurações do VS Code.", "package.with.overrides": "OBSERVAÇÃO: você está empacotando com a predefinição {0}, mas há algumas substituições sendo aplicadas nas configurações do VS Code.", "compile.with.overrides": "OBSERVAÇÃO: você está compilando com a predefinição {0}, mas há algumas substituições sendo aplicadas nas configurações do VS Code.", "file.compilation": "Compilação de Arquivos", + "compile.finished.with.error": "Compilação concluída com erros.", + "compile.finished.successfully": "Compilação concluída com sucesso.", "removing": "Removendo {0}", "unlink.failed": "Falha ao remover arquivo de cache {0}", "switching.to.config.preset": "Mudando para a predefinição de configuração: {0}", diff --git a/i18n/ptb/src/extension.i18n.json b/i18n/ptb/src/extension.i18n.json index 8e8efaf240..6f176f2e32 100644 --- a/i18n/ptb/src/extension.i18n.json +++ b/i18n/ptb/src/extension.i18n.json @@ -11,10 +11,11 @@ "configure.now.button": "Configurar Agora", "configure.recommended": "É recomendável reconfigurar após atualizar para uma nova definição de kits.", "using.cache.to.configure.workspace.on.open": "Tentando usar o cache para configurar o workspace {0}", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier", + "failed.to.open.cache.file.on.code.model.update": "Failed to open CMake cache file on code model update", "update.code.model.for.cpptools": "Atualizar o modelo de código para cpptools", "update.intellisense.disabled": "Não está atualizando o provedor de configuração porque {0} está definido como {1}", "failed.to.get.cpptools.api": "Falha ao obter cppTools API", - "filed.to.open.cache.file.on.code.model.update": "Falha ao abrir o arquivo de cache do CMake na atualização do modelo de código", "opening.text.editor.for": "Abrindo o editor de texto para {0}", "no.kits.file.what.to.do": "Nenhum arquivo de kits está presente. O que você deseja fazer?", "scan.for.kits.button": "Examinar em busca de kits", @@ -49,6 +50,7 @@ "cmake.finished.returned.unserializable": "{0} concluído (retornou um valor não serializável)", "loading.extension.commands": "Carregando comandos de extensão", "register.command": "Registrar o comando de extensão de CMakeTools {0}", + "bookmark.target.not.resolved": "O indicador \"{0}\" não pôde ser resolvido para um destino. Talvez seja necessário reconfigurar o projeto.", "search.project.outline": "Insira um termo de pesquisa para filtrar a Estrutura de Tópicos do Projeto", "added.to": "adicionado a", "removed.from": "removido de", diff --git a/i18n/ptb/src/proc.i18n.json b/i18n/ptb/src/proc.i18n.json index 4c550b68ae..8173db041d 100644 --- a/i18n/ptb/src/proc.i18n.json +++ b/i18n/ptb/src/proc.i18n.json @@ -6,11 +6,11 @@ { "executing.command": "Executando o comando: {0}", "execution.environment": " com ambiente: {0}", - "process.error": "O comando: {0} falhou com o erro: {1} pilha: {2}", - "process.exit.with.signal": "O comando: {0} saiu com o código: {1} e sinal: {2} pilha: {3}", - "process.exit": "O comando: {0} saiu com o código: {1} pilha: {2}", - "process.exit.stdout": "Saída do comando na saída padrão: {0} pilha: {1}", - "process.exit.stderr": "Saída do comando no erro padrão: {0} pilha: {1}", + "process.error": "O comando: {0} falhou com erro: {1}", + "process.exit.with.signal": "O comando: {0} saiu com o código: {1} e sinal: {2}", + "process.exit": "O comando: {0} saiu com o código: {1}", + "process.exit.stdout": "Saída do comando na saída padrão: {0}", + "process.exit.stderr": "Saída de comando no erro padrão: {0}", "processing.data.event.stdout": "Processando o evento {0} do proc stdout", "processing.data.event.stderr": "Processando o evento {0} de proc stderr", "resolving.close.event": "Resolvendo o processo no evento {0}" diff --git a/i18n/ptb/src/util.i18n.json b/i18n/ptb/src/util.i18n.json index 7f83d5631c..c43897ced4 100644 --- a/i18n/ptb/src/util.i18n.json +++ b/i18n/ptb/src/util.i18n.json @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "invalid.value": "Valor inválido a ser convertido em valor de cmake: {0}", "invalid.version.string": "Cadeia de caracteres da versão inválida {0}", "extension.is.undefined": "A extensão não está definida!", "sourcedirectory.not.a.directory": "\"sourceDirectory\" não é um diretório" diff --git a/i18n/rus/assets/policies.json.i18n.json b/i18n/rus/assets/policies.json.i18n.json new file mode 100644 index 0000000000..b63e14935d --- /dev/null +++ b/i18n/rus/assets/policies.json.i18n.json @@ -0,0 +1,212 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "assets/policies.json.CMP0000": "Требовать указания минимальной необходимой версии CMake.", + "assets/policies.json.CMP0001": "CMAKE_BACKWARDS_COMPATIBILITY больше не следует использовать.", + "assets/policies.json.CMP0002": "Имена логических целей должны быть уникальными в глобальном масштабе.", + "assets/policies.json.CMP0003": "Библиотеки, связанные по полному пути, больше не создают пути поиска компоновщика.", + "assets/policies.json.CMP0004": "Подключенные библиотеки не должны содержать пробелы ни в начале, ни в конце.", + "assets/policies.json.CMP0005": "Значения определений препроцессора теперь экранируются автоматически.", + "assets/policies.json.CMP0006": "Для установки целей MACOSX_BUNDLE требуется указать BUNDLE DESTINATION.", + "assets/policies.json.CMP0007": "Команда list больше не игнорирует пустые элементы.", + "assets/policies.json.CMP0008": "Библиотеки, связанные по полному пути, должны иметь корректное имя файла библиотеки.", + "assets/policies.json.CMP0009": "Вызовы FILE GLOB_RECURSE по умолчанию не должны следовать за символическими ссылками.", + "assets/policies.json.CMP0010": "Неправильный синтаксис ссылки на переменную считается ошибкой.", + "assets/policies.json.CMP0011": "Включаемые скрипты автоматически выполняют операции PUSH и POP для cmake_policy.", + "assets/policies.json.CMP0012": "Команда if распознаёт числа и логические константы.", + "assets/policies.json.CMP0013": "Дубликаты каталогов для бинарных файлов не допускаются.", + "assets/policies.json.CMP0014": "Входные каталоги должны содержать CMakeLists.txt.", + "assets/policies.json.CMP0015": "link_directories считает пути относительными для исходного каталога.", + "assets/policies.json.CMP0016": "target_link_libraries сообщает об ошибке, если единственный аргумент не является целью.", + "assets/policies.json.CMP0017": "Если включены файлы из каталога модуля CMake, предпочтение отдаётся файлам из этого каталога.", + "assets/policies.json.CMP0018": "Игнорировать переменную CMAKE_SHARED_LIBRARY__FLAGS.", + "assets/policies.json.CMP0019": "Не разворачивать переменные повторно в информации о включении и связывании.", + "assets/policies.json.CMP0020": "Автоматически связывать исполняемые файлы Qt с целевой библиотекой qtmain в Windows.", + "assets/policies.json.CMP0021": "Неустранимая ошибка при использовании относительных путей в свойстве цели INCLUDE_DIRECTORIES.", + "assets/policies.json.CMP0022": "INTERFACE_LINK_LIBRARIES определяет интерфейс связывания.", + "assets/policies.json.CMP0023": "В сигнатурах target_link_libraries нельзя смешивать обычные слова с зарезервированными.", + "assets/policies.json.CMP0024": "Запретить включение результата экспорта.", + "assets/policies.json.CMP0025": "Компиляторы Apple Clang теперь имеют идентификатор AppleClang.", + "assets/policies.json.CMP0026": "Запретить использование свойства LOCATION для целевых объектов сборки.", + "assets/policies.json.CMP0027": "Условно связанные импортированные цели с отсутствующими каталогами включаемых файлов.", + "assets/policies.json.CMP0028": "Двойное двоеточие в имени целевого объекта означает цель типа ALIAS или IMPORTED.", + "assets/policies.json.CMP0029": "Команду subdir_depends вызывать не следует.", + "assets/policies.json.CMP0030": "Команду use_mangled_mesa вызывать не следует.", + "assets/policies.json.CMP0031": "Команду load_command вызывать не следует.", + "assets/policies.json.CMP0032": "Команду output_required_files вызывать не следует.", + "assets/policies.json.CMP0033": "Команду export_library_dependencies вызывать не следует.", + "assets/policies.json.CMP0034": "Команду utility_source вызывать не следует.", + "assets/policies.json.CMP0035": "Команду variable_requires вызывать не следует.", + "assets/policies.json.CMP0036": "Команду build_name вызывать не следует.", + "assets/policies.json.CMP0037": "Имена целей не должны быть зарезервированными и должны соответствовать шаблону допустимых имён.", + "assets/policies.json.CMP0038": "Целевые объекты не могут ссылаться на себя напрямую.", + "assets/policies.json.CMP0039": "Служебные цели не могут иметь зависимостей по ссылкам.", + "assets/policies.json.CMP0040": "Цель в сигнатуре TARGET команды add_custom_command должна существовать и должна быть определена в текущем каталоге.", + "assets/policies.json.CMP0041": "Ошибка при использовании относительного пути включения с выражением генератора.", + "assets/policies.json.CMP0042": "MACOSX_RPATH включён по умолчанию.", + "assets/policies.json.CMP0043": "Игнорировать свойства COMPILE_DEFINITIONS_", + "assets/policies.json.CMP0044": "Учитывать регистр в выражениях генератора _COMPILER_ID", + "assets/policies.json.CMP0045": "Ошибка при обращении к несуществующей цели в get_target_property.", + "assets/policies.json.CMP0046": "Ошибка при обращении к несуществующей зависимости в add_dependencies.", + "assets/policies.json.CMP0047": "Использовать идентификатор компилятора QCC для драйверов qcc на QNX.", + "assets/policies.json.CMP0048": "Команда project управляет переменными VERSION.", + "assets/policies.json.CMP0049": "Не разворачивать переменные в записях исходников целевых объектов.", + "assets/policies.json.CMP0050": "Запретить использование сигнатур SOURCE в add_custom_command.", + "assets/policies.json.CMP0051": "Перечислять TARGET_OBJECTS в свойстве SOURCES цели.", + "assets/policies.json.CMP0052": "Исключать исходные каталоги и каталоги сборки из установленных INTERFACE_INCLUDE_DIRECTORIES.", + "assets/policies.json.CMP0053": "Упрощать вычисление ссылок на переменные и escape-последовательностей.", + "assets/policies.json.CMP0054": "Интерпретировать аргументы как переменные или ключевые слова, только если они не заключены в кавычки.", + "assets/policies.json.CMP0055": "Строгая проверка наличия команды break.", + "assets/policies.json.CMP0056": "Учитывать флаги компоновки в сигнатуре исходного файла try_compile.", + "assets/policies.json.CMP0057": "Поддерживать новый оператор if IN_LIST.", + "assets/policies.json.CMP0058": "Ninja требует явного указания побочных продуктов пользовательских команд.", + "assets/policies.json.CMP0059": "Не рассматривать DEFINITIONS как встроенное свойство каталога.", + "assets/policies.json.CMP0060": "Связывать библиотеки по полному пути даже в неявных каталогах.", + "assets/policies.json.CMP0061": "По умолчанию CTest не передаёт в make флаг игнорирования ошибок (-i).", + "assets/policies.json.CMP0062": "Запретить установку результата экспорта.", + "assets/policies.json.CMP0063": "Учитывать свойства видимости для всех типов целей.", + "assets/policies.json.CMP0064": "Распознавать TEST как оператор для команды if.", + "assets/policies.json.CMP0065": "Не добавлять флаги для экспорта символов из исполняемых файлов без свойства цели ENABLE_EXPORTS.", + "assets/policies.json.CMP0066": "Учитывать флаги для каждой конфигурации в подписи исходного файла try_compile.", + "assets/policies.json.CMP0067": "Учитывать стандарт языка в сигнатуре исходного файла try_compile.", + "assets/policies.json.CMP0068": "Настройки RPATH в macOS не влияют на install_name.", + "assets/policies.json.CMP0069": "INTERPROCEDURAL_OPTIMIZATION применяется принудительно, если включена.", + "assets/policies.json.CMP0070": "Определить поведение файла для относительных путей.", + "assets/policies.json.CMP0071": "Разрешить AUTOMOC и AUTOUIC обрабатывать файлы GENERATED.", + "assets/policies.json.CMP0072": "FindOpenGL по умолчанию предпочитает библиотеку GLVND, если она доступна.", + "assets/policies.json.CMP0073": "Не создавать устаревшие записи кэша _LIB_DEPENDS.", + "assets/policies.json.CMP0074": "find_package использует переменные _ROOT.", + "assets/policies.json.CMP0075": "Макросы проверки включаемых файлов должны учитывать CMAKE_REQUIRED_LIBRARIES.", + "assets/policies.json.CMP0076": "Команда target_sources преобразует относительные пути в абсолютные.", + "assets/policies.json.CMP0077": "Параметр option учитывает обычные переменные.", + "assets/policies.json.CMP0078": "UseSWIG генерирует стандартные имена целей.", + "assets/policies.json.CMP0079": "target_link_libraries можно использовать вместе с целями из других каталогов.", + "assets/policies.json.CMP0080": "BundleUtilities нельзя включать во время конфигурации.", + "assets/policies.json.CMP0081": "Относительные пути не допускаются в свойстве цели LINK_DIRECTORIES.", + "assets/policies.json.CMP0082": "Правила установки из вызовов add_subdirectory чередуются с правилами вызывающего.", + "assets/policies.json.CMP0083": "Для указания, следует ли генерировать Position Independent Executable (PIE), требуются определённые флаги во время компоновки.", + "assets/policies.json.CMP0084": "Модуль FindQt для find_package не существует.", + "assets/policies.json.CMP0085": "$ обрабатывает пустые элементы списка.", + "assets/policies.json.CMP0086": "UseSWIG учитывает SWIG_MODULE_NAME через флаг -module.", + "assets/policies.json.CMP0087": "install и install поддерживают выражения генератора.", + "assets/policies.json.CMP0088": "FindBISON запускает bison в каталоге CMAKE_CURRENT_BINARY_DIR при выполнении.", + "assets/policies.json.CMP0089": "Компиляторы IBM XL на основе Clang теперь имеют идентификатор XLClang.", + "assets/policies.json.CMP0090": "Команда export по умолчанию не заполняет реестр пакетов.", + "assets/policies.json.CMP0091": "Флаги библиотеки среды выполнения MSVC выбираются через абстракцию.", + "assets/policies.json.CMP0092": "Флаги предупреждений MSVC по умолчанию не входят в CMAKE__FLAGS.", + "assets/policies.json.CMP0093": "FindBoost выводит Boost_VERSION в формате x.y.z.", + "assets/policies.json.CMP0094": "Модули FindPython3, FindPython2 и FindPython используют LOCATION для стратегии поиска.", + "assets/policies.json.CMP0095": "Записи RPATH корректно экранируются в промежуточном скрипте установки CMake.", + "assets/policies.json.CMP0096": "Команда project сохраняет начальные нули в компонентах версии.", + "assets/policies.json.CMP0097": "ExternalProject_Add с GIT_SUBMODULES \"\" не инициализирует подмодули.", + "assets/policies.json.CMP0098": "FindFLEX запускает flex в каталоге CMAKE_CURRENT_BINARY_DIR при выполнении.", + "assets/policies.json.CMP0099": "Свойства связи транзитивны для приватных зависимостей статических библиотек.", + "assets/policies.json.CMP0100": "Разрешить обработку заголовочных файлов с расширением .hh в AUTOMOC и AUTOUIC.", + "assets/policies.json.CMP0101": "target_compile_options теперь всегда учитывает ключевое слово BEFORE.", + "assets/policies.json.CMP0102": "Команда mark_as_advanced больше не создает запись в кэше, если такая запись еще не существует.", + "assets/policies.json.CMP0103": "Несколько вызовов команды export с одним и тем же FILE без APPEND больше не разрешены.", + "assets/policies.json.CMP0104": "Инициализировать CMAKE_CUDA_ARCHITECTURES, если для CMAKE_CUDA_COMPILER_ID _COMPILER_ID> задано значение NVIDIA. Выдавать ошибку, если параметр CUDA_ARCHITECTURES пуст.", + "assets/policies.json.CMP0105": "Свойства цели LINK_OPTIONS и INTERFACE_LINK_OPTIONS теперь применяются на этапе связывания устройства.", + "assets/policies.json.CMP0106": "Модуль Documentation удален.", + "assets/policies.json.CMP0107": "Создание ALIAS-цели с именем, совпадающим с другим целевым объектом, запрещено.", + "assets/policies.json.CMP0108": "Целевой объект не может ссылаться на себя даже через ALIAS-цель.", + "assets/policies.json.CMP0109": "find_program требует разрешения на выполнение, но не на чтение.", + "assets/policies.json.CMP0110": "add_test поддерживает любые символы в именах тестов.", + "assets/policies.json.CMP0111": "Импортированная цель без указанного свойства расположения вызывает ошибку при генерировании.", + "assets/policies.json.CMP0112": "Выражения генератора компонентов целевого файла не добавляют зависимости цели.", + "assets/policies.json.CMP0113": "Генераторы Makefile не повторяют пользовательские команды из зависимостей цели.", + "assets/policies.json.CMP0114": "Целевые объекты шагов ExternalProject полностью содержат свои шаги.", + "assets/policies.json.CMP0115": "Расширения исходных файлов должны быть явными.", + "assets/policies.json.CMP0116": "Генераторы Ninja преобразуют DEPFILE из add_custom_command.", + "assets/policies.json.CMP0117": "Флаг MSVC RTTI /GR по умолчанию не добавляется в CMAKE_CXX_FLAGS _FLAGS>.", + "assets/policies.json.CMP0118": "Источники GENERATED можно использовать в разных каталогах без маркировки вручную.", + "assets/policies.json.CMP0119": "Свойство LANGUAGE исходного файла явно компилируется как указание языка.", + "assets/policies.json.CMP0120": "Модуль WriteCompilerDetectionHeader удален.", + "assets/policies.json.CMP0121": "Команда list теперь обнаруживает недействительные индексы.", + "assets/policies.json.CMP0122": "UseSWIG использует соглашения об именах библиотек для языка CSharp.", + "assets/policies.json.CMP0123": "Флаги компиляции и компоновки ARMClang для cpu/arch должны задаваться явно.", + "assets/policies.json.CMP0124": "Переменные цикла foreach доступны только в области видимости самого цикла.", + "assets/policies.json.CMP0125": "Команды find_file, find_path, find_library и find_program кэшируют результат в переменной, указанной в первом аргументе. В версиях CMake до 3.21, если переменная кэша с определенным именем уже существовала до вызова, но не имела типа, любая переменная вне кэша с таким же именем удалялась и всегда использовалась переменная кэша (см. также CMP0126, где описано схожее, но не идентичное поведение). Это противоречит соглашению о том, что переменная вне кэша должна иметь приоритет над переменной кэша с тем же именем. Такая ситуация может возникнуть, если пользователь задаёт переменную кэша в командной строке без указания типа, например cmake -DMYVAR=blah вместо cmake -DMYVAR:FILEPATH=blah.", + "assets/policies.json.CMP0126": "Если для этой политики установлено значение NEW, команда set не удаляет обычные переменные с таким же именем из текущей области видимости. Поведение OLD (старое) удаляет все обычные переменные с тем же именем из текущей области в следующих ситуациях:", + "assets/policies.json.CMP0127": "cmake_dependent_option поддерживает полный синтаксис условий.", + "assets/policies.json.CMP0128": "Если для этой политики установлено значение NEW:", + "assets/policies.json.CMP0129": "Компиляторы MCST LCC теперь имеют идентификатор LCC, а не GNU.", + "assets/policies.json.CMP0130": "при диагностике ошибок вычисления условий.", + "assets/policies.json.CMP0131": "LINK_LIBRARIES поддерживает выражение генератора :genex:`$`.", + "assets/policies.json.CMP0132": "Не устанавливать переменные среды компилятора при первом запуске.", + "assets/policies.json.CMP0133": "Модуль CPack по умолчанию отключает SLA в генераторе DragNDrop в CPack.", + "assets/policies.json.CMP0134": "Представление реестра по умолчанию — TARGET для команд find_file, find_path, find_library и find_package; BOTH для команды find_program.", + "assets/policies.json.CMP0135": "При использовании метода загрузки по URL с командами ExternalProject_Add и FetchContent_Declare в CMake 3.23 и более ранних версий устанавливаются метки времени извлеченного содержимого, идентичные меткам в архиве. При изменении URL новый архив скачивается и извлекается, но метки времени извлечённого содержимого могут не быть новее предыдущих. В результате для компонентов, зависящих от извлеченного содержимого, повторная сборка может не выполняться, даже если содержимое изменилось.", + "assets/policies.json.CMP0136": "Флаги библиотеки среды выполнения Watcom выбираются через абстракцию.", + "assets/policies.json.CMP0137": "try_compile передаёт переменные платформы в режиме проекта.", + "assets/policies.json.CMP0138": "CheckIPOSupported использует флаги вызывающего проекта.", + "assets/policies.json.CMP0139": "Команда if поддерживает сравнение путей с помощью оператора PATH_EQUAL.", + "assets/policies.json.CMP0140": "Команда return проверяет свои параметры.", + "assets/policies.json.CMP0141": "Флаги формата отладочной информации MSVC выбираются через абстракцию.", + "assets/policies.json.CMP0142": "Генератор Xcode не добавляет суффиксы для каждой конфигурации к путям поиска библиотек.", + "assets/policies.json.CMP0143": "Глобальное свойство USE_FOLDERS по умолчанию считается включённым (ON).", + "assets/policies.json.CMP0144": "find_package использует переменные _ROOT верхнего регистра.", + "assets/policies.json.CMP0145": "Модули Dart и FindDart удалены.", + "assets/policies.json.CMP0146": "Модуль FindCUDA удален.", + "assets/policies.json.CMP0147": "Генераторы Visual Studio выполняют сборку пользовательских команд параллельно.", + "assets/policies.json.CMP0148": "Модули FindPythonInterp и FindPythonLibs удалены.", + "assets/policies.json.CMP0149": "Генераторы Visual Studio по умолчанию выбирают последнюю версию Windows SDK.", + "assets/policies.json.CMP0150": "Команды ExternalProject_Add и FetchContent_Declare рассматривают относительные пути GIT_REPOSITORY как относительные к удалённому репозиторию родительского проекта.", + "assets/policies.json.CMP0151": "Каталогом включаемых файлов AUTOMOC по умолчанию считается системный каталог включаемых файлов.", + "assets/policies.json.CMP0152": "Команда file разрешает символические ссылки перед свертыванием компонентов ../.", + "assets/policies.json.CMP0153": "Команду exec_program вызывать не следует.", + "assets/policies.json.CMP0154": "Сгенерированные файлы являются приватными по умолчанию в целевых объектах, использующих наборы файлов.", + "assets/policies.json.CMP0155": "Исходники C++ в целевых объектах с версией языка не ниже C++20, если таковые поддерживаются, сканируются на наличие импортов.", + "assets/policies.json.CMP0156": "Дедупликация библиотек в строках связывания выполняется с учётом возможностей компоновщика.", + "assets/policies.json.CMP0157": "Режим компиляции Swift выбирается через абстракцию.", + "assets/policies.json.CMP0158": "add_test учитывает CMAKE_CROSSCOMPILING_EMULATOR только при перекрестной компиляции.", + "assets/policies.json.CMP0159": "Команда file с REGEX обновляет CMAKE_MATCH_.", + "assets/policies.json.CMP0160": "При попытке установить дополнительные свойства цели, доступные только для чтения, теперь возникает ошибка.", + "assets/policies.json.CMP0161": "Для переменной CPACK_PRODUCTBUILD_DOMAINS по умолчанию задано значение true.", + "assets/policies.json.CMP0162": "Генераторы Visual Studio по умолчанию добавляют индикаторы UseDebugLibraries.", + "assets/policies.json.CMP0163": "Свойство GENERATED исходных файлов теперь видно во всех каталогах.", + "assets/policies.json.CMP0164": "add_library отклоняет библиотеки SHARED, если платформа их не поддерживает.", + "assets/policies.json.CMP0165": "enable_language не следует вызывать до определения проекта.", + "assets/policies.json.CMP0166": "TARGET_PROPERTY транзитивно вычисляет свойства компоновки по приватным зависимостям статических библиотек.", + "assets/policies.json.CMP0167": "Модуль FindBoost удален.", + "assets/policies.json.CMP0168": "Модуль FetchContent реализует шаги напрямую, без использования дочерней сборки.", + "assets/policies.json.CMP0169": "Вызов FetchContent_Populate с одним аргументом (именем объявленной зависимости) не рекомендуется к использованию.", + "assets/policies.json.CMP0170": "Если для FETCHCONTENT_FULLY_DISCONNECTED задано значение true, команды FetchContent_MakeAvailable и FetchContent_Populate принудительно обеспечивают выполнение требования, чтобы их исходный каталог уже был заполнен. Это требование всегда было задокументировано, но в CMake 3.29 и более ранних версий оно не проверялось и не применялось. Это иногда приводило к трудности отслеживания ошибок, если проект ожидал, что зависимость уже заполнена, но её заполнение было пропущено без уведомления.", + "assets/policies.json.CMP0171": "codegen является зарезервированным именем целевого объекта.", + "assets/policies.json.CMP0172": "Модуль CPack по умолчанию включает в генераторе CPack WIX установку на уровне компьютера.", + "assets/policies.json.CMP0173": "Модуль CMakeFindFrameworks удален.", + "assets/policies.json.CMP0174": "cmake_parse_arguments определяет переменную с пустой строкой после ключевого слова single-value.", + "assets/policies.json.CMP0175": "add_custom_command отклоняет недопустимые аргументы.", + "assets/policies.json.CMP0176": "Значение ENCODING в execute_process по умолчанию равно UTF-8.", + "assets/policies.json.CMP0177": "Пути команды install DESTINATION нормализуются.", + "assets/policies.json.CMP0178": "Командные строки теста сохраняют пустые аргументы.", + "assets/policies.json.CMP0179": "При дедупликации статических библиотек в строках связывания сохраняется первое вхождение. Эта политика актуальна, только если для CMP0156 задано значение NEW.", + "assets/policies.json.CMP0180": "project всегда задаёт переменные _* как обычные.", + "assets/policies.json.CMP0181": "Переменные CMAKE_EXE_LINKER_FLAGS, CMAKE_EXE_LINKER_FLAGS_, CMAKE_SHARED_LINKER_FLAGS, CMAKE_SHARED_LINKER_FLAGS_, CMAKE_MODULE_LINKER_FLAGS и CMAKE_MODULE_LINKER_FLAGS_ подвергаются разбору и повторной экранировке и поддерживают префикс LINKER:.", + "assets/policies.json.CMP0182": "По умолчанию создавать архивы общих библиотек на AIX.", + "assets/policies.json.CMP0183": "add_feature_info поддерживает полный синтаксис условий.", + "assets/policies.json.CMP0184": "Флаги проверок среды выполнения MSVC выбираются через абстракцию.", + "assets/policies.json.CMP0185": "FindRuby больше не предоставляет переменные RUBY_* в верхнем регистре.", + "assets/policies.json.CMP0186": "Регулярные выражения учитывают совпадение с ^ не более одного раза при повторных поисках.", + "assets/policies.json.CMP0187": "Включайте исходный файл без расширения после файла с тем же именем и с расширением.", + "assets/policies.json.CMP0188": "Модуль FindGCCXML удален.", + "assets/policies.json.CMP0189": "TARGET_PROPERTY транзитивно вычисляет свойства LINK_LIBRARIES.", + "assets/policies.json.CMP0190": "Модули FindPython3, FindPython2 и FindPython обеспечивают согласованность артефактов в режиме перекрестной компиляции.", + "assets/policies.json.CMP0191": "Модуль FindCABLE удален.", + "assets/policies.json.CMP0192": "GNUInstallDirs использует абсолютные пути SYSCONFDIR, LOCALSTATEDIR и RUNSTATEDIR в специальных префиксах.", + "assets/policies.json.CMP0193": "GNUInstallDirs кэширует CMAKE_INSTALL_* с префиксом usr/ для префикса установки /.", + "assets/policies.json.CMP0194": "MSVC не является ассемблером для языка ASM.", + "assets/policies.json.CMP0195": "Модули Swift в деревьях сборки используют структуру каталогов модулей Swift.", + "assets/policies.json.CMP0196": "Модуль CMakeDetermineVSServicePack удален.", + "assets/policies.json.CMP0197": "Флаг MSVC link -machine: отсутствует в CMAKE_*_LINKER_FLAGS.", + "assets/policies.json.CMP0198": "Переменная CMAKE_PARENT_LIST_FILE не определена в CMakeLists.txt.", + "assets/policies.json.CMP0199": ":genex:`$` не соответствует сопоставленным, но не выбранным конфигурациям.", + "assets/policies.json.CMP0200": "Выбор расположения и конфигурации для импортированных целей стал более согласованным.", + "assets/policies.json.CMP0201": "Python::NumPy не зависит от Python::Development.Module.", + "assets/policies.json.CMP0202": "Имена PDB-файлов всегда включают постфикс конкретной конфигурации целевого объекта.", + "assets/policies.json.CMP0203": "Макрос _WINDLL определен для общих библиотек, целевым объектом которых является MSVC ABI.", + "assets/policies.json.CMP0204": "Набор символов всегда определяется, когда целевым объектом является MSVC ABI." +} \ No newline at end of file diff --git a/i18n/rus/package.i18n.json b/i18n/rus/package.i18n.json index 3b9c983da9..0cc2392790 100644 --- a/i18n/rus/package.i18n.json +++ b/i18n/rus/package.i18n.json @@ -4,6 +4,8 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "cmake-tools.command.cmake.addFileToCMakeLists.title": "Add File to CMake Lists", + "cmake-tools.command.cmake.removeFileFromCMakeLists.title": "Remove File from CMake Lists", "cmake-tools.command.cmake.openCMakePresets.title": "Открытие файла CMakePresets.json", "cmake-tools.command.cmake.addConfigurePreset.title": "Добавление предустановки конфигурации", "cmake-tools.command.cmake.addBuildPreset.title": "Добавление предустановки сборки", @@ -46,6 +48,9 @@ "cmake-tools.command.cmake.cleanConfigureWithDebugger.title": "Удаление кэша и перенастройка с помощью отладчика CMake", "cmake-tools.command.cmake.cleanConfigureAll.title": "Удаление кэша и перенастройка всех проектов", "cmake-tools.command.cmake.cleanConfigureAllWithDebugger.title": "Удаление кэша и перенастройка всех проектов с помощью отладчика CMake", + "cmake-tools.command.cmake.fullCleanConfigure.title": "Удалить каталог сборки и перенастроить", + "cmake-tools.command.cmake.fullCleanConfigureAll.title": "Удалить каталог сборки и перенастроить все проекты", + "cmake-tools.command.cmake.outline.fullCleanConfigureAll.title": "Перенастройка с полной очисткой всех проектов", "cmake-tools.command.cmake.editCacheUI.title": "Изменение кэша CMake (пользовательский интерфейс)", "cmake-tools.command.cmake.outline.cleanConfigure.title": "Перенастройка с очисткой", "cmake-tools.command.cmake.outline.cleanConfigureWithDebugger.title": "Чистая перенастройка с помощью отладчика CMake", @@ -58,6 +63,9 @@ "cmake-tools.command.cmake.cleanConfigureAndBuild.title": "Удалить кэш, перенастроить и собрать", "cmake-tools.command.cmake.cleanConfigureAndBuildAll.title": "Удалить кэш, перенастроить и собрать все проекты", "cmake-tools.command.cmake.outline.cleanConfigureAndBuildAll.title": "Очистить, перенастроить и собрать все проекты", + "cmake-tools.command.cmake.fullCleanConfigureAndBuild.title": "Удалить каталог сборки, перенастроить и собрать", + "cmake-tools.command.cmake.fullCleanConfigureAndBuildAll.title": "Удалить каталог сборки, перенастроить и собрать все проекты", + "cmake-tools.command.cmake.outline.fullCleanConfigureAndBuildAll.title": "Перенастройка с полной очисткой и сборка всех проектов", "cmake-tools.command.cmake.ctest.title": "Запустить тесты", "cmake-tools.command.cmake.ctestAll.title": "Запуск тестов для всех проектов", "cmake-tools.command.cmake.cpack.title": "Запустить CPack", @@ -74,6 +82,7 @@ "cmake-tools.command.cmake.launchTarget.title": "Запуск без отладки", "cmake-tools.command.cmake.launchTargetAll.title": "Выполнение всех проектов без отладки", "cmake-tools.command.cmake.selectLaunchTarget.title": "Настройка запуска/отладки целевого объекта", + "cmake-tools.command.cmake.selectBuildAndLaunchTarget.title": "Укажите целевой объект сборки и запуска/отладки", "cmake-tools.command.cmake.stop.title": "Отменить сборку", "cmake-tools.command.cmake.stopAll.title": "Отмена сборки для всех проектов", "cmake-tools.command.cmake.resetState.title": "Сброс состояния расширения CMake Tools (для устранения неполадок)", @@ -105,6 +114,7 @@ "cmake-tools.configuration.cmake.generator.description": "Используемый генератор CMake.", "cmake-tools.configuration.cmake.toolset.description": "Набор инструментов CMake, используемый при настройке.", "cmake-tools.configuration.cmake.platform.description": "Платформа CMake для использования при настройке.", + "cmake-tools.configuration.cmake.shell.description": "Путь к исполняемому файлу оболочки, используемой при выполнении команд CMake, CTest и CPack (например, Git Bash или MSYS2). Если этот параметр задан, то все вызовы подпроцессов будут выполняться через эту оболочку. Это полезно для встроенных цепочек инструментов, которым требуется преобразование путей в формат POSIX. Если задано значение \"null\", используется поведение системной оболочки по умолчанию.", "cmake-tools.configuration.cmake.configureArgs.description": "Дополнительные аргументы для передачи CMake при настройке. При использовании предустановок CMake эти аргументы временно добавляются к аргументам, предоставленным активной предустановкой конфигурации.", "cmake-tools.configuration.cmake.buildArgs.description": "Дополнительные аргументы для передачи CMake при сборке. При использовании предустановок CMake эти аргументы временно добавляются к аргументам, предоставленным активной предустановкой сборки.", "cmake-tools.configuration.cmake.buildToolArgs.description": "Дополнительные аргументы для передачи базовому инструменту сборки при сборке. При использовании предустановок CMake эти аргументы временно добавляются к аргументам, предоставляемым активной предустановкой сборки, для вызова инструмента сборки.", @@ -112,7 +122,7 @@ "cmake-tools.configuration.cmake.ctestPath.description": "Путь к исполняемому файлу CTest. Если он равен NULL, значение будет выводиться из cmake.cmakePath (рекомендуется оставить NULL).", "cmake-tools.configuration.cmake.cpackPath.description": "Путь к исполняемому файлу CPack. Если он равен NULL, значение будет выводиться из cmake.cmakePath (рекомендуется оставить NULL). Игнорируется при использовании наборов вместо предустановок.", "cmake-tools.configuration.cmake.ctest.parallelJobs.markdownDescription": "Число параллельных тестовых заданий. Используйте ноль, чтобы использовать значение `#cmake.parallelJobs#`. Это применимо, только если для `#cmake.ctest.allowParallelJobs#` установлено `true`.", - "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "Позволяет запускать несколько ctest параллельно, однако выходной результат может быть искажен, а Обозреватель тестов может неточно отражать ход выполнения теста.", + "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "Позволяет запускать несколько ctest параллельно, однако выходной результат может быть искажен, а Обозреватель тестов может неточно отражать ход выполнения теста. Если отключено, тесты выполняются последовательно в алфавитном порядке, соответствующем порядку отображения в Обозревателе тестов.", "cmake-tools.configuration.cmake.ctest.testExplorerIntegrationEnabled.description": "Включена ли интеграция с обозревателем тестов. Это удобно отключить, если вы предпочитаете использовать другое расширение для интеграции тестов.", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiter.markdownDescription": "Необязательный разделитель, используемый для разделения имен наборов тестов и иерархического группирования тестов в Обозревателе тестов. Эта строка используется в регулярном выражении, поэтому для некоторых разделителей может потребоваться экранирование. Примеры: `-` (один разделитель: `-`), `\\.|::` (два разделителя: `.` или `::`. Обратите внимание, что `.` необходимо экранировать).", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiterMaxOccurrence.markdownDescription": "Максимально возможное число использований разделителя для разделения названия теста. `0` означает отсутствие ограничений.", @@ -124,9 +134,21 @@ "cmake-tools.configuration.cmake.ctest.failurePatterns.actual": "Индекс группы соответствия фактического результата теста. Значения по умолчанию не определены.", "cmake-tools.configuration.cmake.ctest.failurePatterns.expected": "Индекс группы соответствия ожидаемого результата теста. Значения по умолчанию не определены.", "cmake-tools.configuration.cmake.ctest.debugLaunchTarget.description": "Имя целевого объекта из launch.json, который будет запущен при отладке теста с помощью CTest. По умолчанию и при отсутствии целевого объекта будет отображаться средство выбора со всеми доступными целевыми объектами.", + "cmake-tools.configuration.cmake.ctest.neverDebugTestsWithLaunchConfiguration.description": "Если задано значение \"истина\", тесты всегда отлаживаются без конфигурации запуска и без использования меню быстрого выбора. Значение по умолчанию: ложь.", "cmake-tools.configuration.cmake.parseBuildDiagnostics.description": "Анализ вывода компилятора на наличие предупреждений и ошибок.", "cmake-tools.configuration.cmake.enabledOutputParsers.description": "Используемые синтаксические анализаторы выходных данных. Поддерживаемые синтаксические анализаторы `cmake`, `gcc`, `gnuld` для выходных данных компоновщика в стиле GNULD, `msvc` для Microsoft Visual C++, `ghs` для компиляторов Green Hills с --no_wrap_diagnostics --brief_diagnostics, `diab` для компилятора Wind River Diab и `iwyu` для диагностики include-what-you-use.", - "cmake-tools.configuration.cmake.debugConfig.description": "Конфигурация, используемая при отладке целевого объекта.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.markdownDescription": "Дополнительные сопоставители проблем для вывода сборки. Используйте их для вывода диагностики инструментов, таких как clang-tidy, PCLint Plus, cppcheck и настраиваемых сценариев, интегрированных с помощью `add_custom_command` и `add_custom_target` в CMake.\n\nКаждая запись определяет `name` (используется как метка источника диагностики), `regexp` и индексы групп захвата для `file`, `line`, `column`, `severity`, `message` и `code`.\n\nНапример, для сопоставления выходных данных clang-tidy, таких как `/path/file.cpp:10:5: warning: some message [check-name]`:\n```json\n[\n {\n \"name\": \"clang-tidy\",\n \"regexp\": \"^(.+?):(\\\\d+):(\\\\d+):\\\\s+(warning|error|note):\\\\s+(.+?)\\\\s*(?:\\\\[(.+)\\\\])?$\",\n \"file\": 1,\n \"line\": 2,\n \"column\": 3,\n \"severity\": 4,\n \"message\": 5,\n \"code\": 6\n }\n]\n```\n\nНастраиваемые сопоставители выполняются **после** встроенных анализаторов (`gcc`, `msvc` и т. д.), поэтому они не забирают строки у встроенных компиляторов.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.name": "Уникальное имя этого сопоставителя. Оно используется в качестве метки источника диагностики на панели \"Проблемы\".", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.regexp": "Регулярное выражение для сопоставления с каждой строкой вывода сборки.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.file": "Индекс группы записи для пути к файлу. Значение по умолчанию: `1`.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.line": "Индекс группы записи для номера строки. Значение по умолчанию: `2`.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.column": "Индекс группы записи для номера столбца. Необязательно.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.group": "Индекс группы записи для серьезности (следует записывать данные с уровнем серьезности \"error\", \"warning\" или \"info\").", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.fixed": "Фиксированный уровень серьезности, применяемый ко всем совпадениям этого шаблона.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.message": "Индекс группы записи для диагностического сообщения. Значение по умолчанию: `3`.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.code": "Индекс группы записи для необязательного диагностического кода.", + "cmake-tools.configuration.cmake.debugConfig.description": "Конфигурация отладки, используемая при отладке целевого объекта. Если указан параметр `type`, автоматически определяемая конфигурация отладчика пропускается и из целевого объекта генерируется только минимальная базовая конфигурация (программа, cwd, имя). Все остальные применяемые свойства берутся из этой настройки, что позволяет полностью контролировать конфигурацию запуска отладки для любого адаптера отладки.", + "cmake-tools.configuration.cmake.debugConfig.type.description": "Тип адаптера отладки, который следует использовать (например, `cppdbg`, `cppvsdbg`, `lldb`, `codelldb`). Когда эта настройка задана, автоматическое обнаружение отладчика из кэша CMake пропускается и указанный тип используется напрямую. Все дополнительные свойства, нужные адаптеру отладки, можно добавить в `#cmake.debugConfig#`.", "cmake-tools.configuration.cmake.debugConfig.symbolSearchPath.description": "Пути для поиска символов отладчика Visual Studio.", "cmake-tools.configuration.cmake.debugConfig.additionalSOLibSearchPath.description": "Пути для поиска файлов SO для отладчиков GDB или LLDB.", "cmake-tools.configuration.cmake.debugConfig.externalConsole.description": "Запуск внешней консоли для программы.", @@ -226,11 +248,13 @@ "cmake-tools.configuration.cmake.automaticReconfigure.description": "Автоматически настраивать каталоги проектов CMake при изменении набора или предустановки конфигурации.", "cmake-tools.configuration.cmake.pinnedCommands.description": "Список команд CMake, которые всегда закрепляют по умолчанию. Они будут отображаться в разделе \"Закрепленные команды\" CMake Tools.", "cmake-tools.configuration.cmake.enableAutomaticKitScan.description": "Включить автоматическую проверку наборов, если набор не выбран. Это вступит в силу только в том случае, если не используются предустановки CMake.", + "cmake-tools.configuration.cmake.removeStaleKitsOnScan.description": "Remove compiler-based kits from the user kits file during a full kit scan when they are no longer rediscovered. Set \"keep\": true in a kit entry to preserve it.", "cmake-tools.configuration.cmake.enableLanguageServices.description": "Включите языковые службы для файлов CMake. Это позволит включить выделение синтаксиса, завершение кода и другие функции.", "cmake-tools.configuration.cmake.preRunCoverageTarget.description": "Целевой объект для сборки перед выполнением тестов с охватом с помощью обозревателя тестов", "cmake-tools.configuration.cmake.postRunCoverageTarget.description": "Целевой объект для сборки после выполнения тестов с охватом с помощью обозревателя тестов", "cmake-tools.configuration.cmake.coverageInfoFiles.description": "Файлы LCOV со сведениями об охвате будут обработаны после выполнения тестов с охватом с помощью обозревателя тестов.", "cmake-tools.configuration.cmake.useFolderPropertyInBuildTargetDropdown.description": "Управляет распределением раскрывающегося списка целей сборки по умолчанию по группам папок CMake.", + "cmake-tools.configuration.cmake.setBuildTargetSameAsLaunchTarget.description": "Если этот параметр включен, то при выборе целевого объекта запуска или отладки автоматически включается сопоставление целевого объекта сборки. При этом целевой объект сборки по-прежнему можно изменить независимо.", "cmake-tools.debugger.pipeName.description": "Имя канала (в Windows) или сокета домена (в Unix), используемого для связи отладчика.", "cmake-tools.debugger.clean.description": "Очистка перед настройкой.", "cmake-tools.debugger.configureAll.description": "Настройка для всех проектов.", @@ -262,6 +286,7 @@ "cmake-tools.configuration.cmake.launchBehavior.breakAndReuseTerminal.markdownDescriptions": "Экземпляр терминала запуска используется повторно, и в терминал отправляется команда `break` перед запуском целевого объекта, чтобы завершить все активные процессы переднего плана.", "cmake-tools.configuration.cmake.launchBehavior.newTerminal.markdownDescriptions": "Создан новый экземпляр терминала, в котором запущен целевой объект. Существующие терминалы не очищаются автоматически.", "cmake-tools.configuration.cmake.loadCompileCommands.description": "Управляет чтением расширения compile_commands.json, чтобы включить компиляцию одного файла.", + "cmake-tools.configuration.cmake.outlineViewType.description": "Project Outline View`s type. Available options are: \"list\" and \"tree\".", "cmake-tools.command.cmake.projectStatus.update.title": "Обновить состояние проекта", "cmake-tools.command.cmake.pinnedCommands.add.title": "Добавьте команду CMake для закрепления", "cmake-tools.command.cmake.pinnedCommands.remove.title": "Открепить команду", @@ -272,5 +297,33 @@ "cmake-tools.debugger.label": "Отладчик CMake", "cmake-tools.command.cmake.appendBuildDirectoryToWorkspace.title": "Добавить каталог сборки в текущую рабочую область", "cmake-tools.command.workbench.action.tasks.configureTaskRunner.title": "Настроить задачу", - "cmake-tools.command.workbench.action.tasks.runTask.title": "Выполнить задачу" + "cmake-tools.command.workbench.action.tasks.runTask.title": "Выполнить задачу", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.description": "Add source files to CMake lists when they are created.", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.no.description": "Do not automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.yes.description": "Automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.description": "Remove source files from CMake lists when they are deleted.", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.no.description": "Do not automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.yes.description": "Automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.markdownDescription": "How to choose which `set()` or `list(APPEND/PREPEND/INSERT)` command invocation to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.never.description": "Do not look for variable modification command invocations, only look for source command invocations.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askFirstParentDir.description": "Present a Quick Pick with options from the first `CMakeLists.txt` found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askParentDirs.description": "Present a Quick Pick with options from all `CMakeLists.txt` files found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.sourceVariables.markdownDescription": "Variables to add source files to. Variables appearing earlier in this list will be given higher priority. Only used if `#cmake.modifyLists.variableSelection#` is not `never`. Supports glob patterns.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.description": "How to choose which target to add new source files to when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askNearestSourceDir.description": "Present a Quick Pick with targets whose source directories are closest to location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askParentSourceDirs.description": "Present a Quick Pick with targets whose source directories contain the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.description": "How to choose which of a target's source command invocations to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askFirstParentDir.description": "Present a Quick Pick with options from the CMake list file in the parent directory closest to the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askParentDirs.description": "Present a Quick Pick with options from all CMake list files in the parent directories of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSourceCommands.markdownDescription": "Commands to treat as target source commands when adding source files CMake lists. Commands appearing earlier in this list will be given higher priority. Supports glob patterns.\r\n\r\nIf you are using the File API (see `#cmake.cmakeCommunicationMode#`), user-defined functions and macros which call the commands in this list are detected automatically and added to it.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.description": "How to choose which of a target's visibility scopes, file sets, or source keyword parameters to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.ask.description": "Present a Quick Pick with options from the selected target source command invocation.", + "cmake-tools.configuration.cmake.modifyLists.sourceListKeywords.markdownDescription": "Keyword arguments to user-defined functions and macros which introduce lists of source files. If left empty, all arguments consisting of only upper-case letters and underscores will be considered. Supports glob patterns.", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier" } \ No newline at end of file diff --git a/i18n/rus/schemas/kits-schema.json.i18n.json b/i18n/rus/schemas/kits-schema.json.i18n.json index df87bb4b86..a8ed26faf3 100644 --- a/i18n/rus/schemas/kits-schema.json.i18n.json +++ b/i18n/rus/schemas/kits-schema.json.i18n.json @@ -17,9 +17,11 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Путь к файлу цепочки инструментов", "schemas/kits-schema.json.items.properties.visualStudio": "Идентификатор экземпляра продукта Visual Studio", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Целевая архитектура", + "schemas/kits-schema.json.items.properties.visualStudioArguments": "Arguments to vcvarsall.bat", "schemas/kits-schema.json.items.properties.environmentSetupScript": "Абсолютный путь к сценарию, изменяющему среду для набора", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Значение переменной среды", - "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Значение параметра CMake", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.0": "Значение параметра CMake. Точки с запятой в строках экранируются.", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.1": "Значения, объединенные при помощи точек с запятой, для формирования списка CMake без экранирования.", "schemas/kits-schema.json.items.properties.preferredGenerator": "Установить предпочтительный генератор CMake для этого набора", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.name": "Имя используемого генератора", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.platform": "Платформа CMake для аргумента -A", diff --git a/i18n/rus/src/cmakeListsModifier.i18n.json b/i18n/rus/src/cmakeListsModifier.i18n.json new file mode 100644 index 0000000000..a3c9d1d6a2 --- /dev/null +++ b/i18n/rus/src/cmakeListsModifier.i18n.json @@ -0,0 +1,51 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "add.newly.created.files": "Add newly created files to CMakeLists.txt", + "error.processing.add.files": "Error processing added files", + "remove.deleted.file": "Remove a deleted file from CMakeLists.txt", + "error.processing.delete.files": "Error processing deleted files", + "add.file.no.code.model": "Adding a file without a valid code model", + "file.already.in.target": "{0} already in target {1}.", + "no.targets.found": "No targets found. {0} not added to build system.", + "no.source.command.invocations": "No source command invocations found. {0} not added to build system.", + "delete.file.no.code.model": "Deleting a file without a valid code model", + "not.modifying.unsaved.delete": "Not modifying {0} to delete {1} because it has unsaved changes.", + "add.to.which.variable": "CMake: Add {0} to which variable?", + "add.to.which.target": "CMake: Add {0} to which target?", + "add.to.which.invocation": "CMake: Add {0} to which command invocation of {1}?", + "add.to.which.scope.fileset.keyword": "CMake: Add {0} to which Scope, File Set, or Keyword?", + "open.file": "Open File", + "not.modifying.unsaved.files": "Cannot modify {0} because it has unsaved changes.", + "skipping.unsaved.files": "Skipping {0} file(s) with unsaved changes: {1}", + "edit.label.remove.source.file": "CMake: Remove deleted source file", + "edit.label.add.source.file": "CMake: Add new source file", + "edits.applied.successfully": "Successfully applied {0} CMake list edit(s).", + "edits.apply.failed": "Failed to apply CMake list edits: {0}", + "not.local.file.add": "{0} is not a local file. Not adding to CMake lists.", + "no.candidates.found": "No suitable locations found to add {0}.", + "not.modifying.unsaved.add": "Not modifying {0} to add {1} because it has unsaved changes.", + "not.local.file.remove": "{0} is not a local file. Not removing from CMake lists.", + "could.not.open.file": "Could not open file {0}: {1}", + "file.not.found.in.cmake.lists": "{0} not found in CMake lists.", + "file.already.in.destination": "{0} already in {1} at {2}:{3}", + "parse.error.examining.cmake.lists": "Parse error while examining CMakeLists.txt files. Details: {0}", + "could.not.open.cmake.lists": "Could not open {0}: {1}", + "parse.error.finding.invocations": "Parse error while finding command invocations to add to. CMake file modified since last configure? Details: {0}", + "unexpected.command.found": "Found \"{0}\", expected \"{1}\". CMake file modified since last configure? Details: {2}:{3}", + "scope.private.detail": "{0} will be used to build {1}", + "scope.public.detail": "{0} will be used to build both {1} and targets that use {1}", + "scope.interface.detail": "{0} will be used to build targets that use {1}", + "fileset.headers.detail": "{0} will be used via a language's #include mechanism", + "fileset.cxx.modules.detail": "{0} contains C++ interface module or partition units.", + "label.fileset": "{0} File Set", + "label.scope": "{0} Scope", + "fileset.type": "Type: {0}", + "scope.with.fileset.detail": "{0} Scope: {1}", + "keyword.of.command": "Keyword of {0} command", + "command.label": "{0} Command", + "add.to.command.arguments": "Add {0} to the list of arguments to {1} command" +} \ No newline at end of file diff --git a/i18n/rus/src/cmakeProject.i18n.json b/i18n/rus/src/cmakeProject.i18n.json index 7f67cf6686..342b6c7e27 100644 --- a/i18n/rus/src/cmakeProject.i18n.json +++ b/i18n/rus/src/cmakeProject.i18n.json @@ -9,6 +9,7 @@ "generator.changed.restart.driver": "Перезапуск драйвера CMake после изменения генератора.", "preferredGenerator.changed.restart.driver": "Перезапуск драйвера CMake после изменения preferredGenerators (предпочитаемых генераторов).", "bad.executable": "Неверный исполняемый файл CMake: {0}. Убедитесь, что он установлен или что значение параметра {1} содержит правильный путь", + "shell.changed.restart.driver": "Перезапуск драйвера CMake после изменения оболочки.", "targests.in.preset": "[Целевые значения в предустановке]", "constructing.cmakeproject": "Создание нового экземпляра CMakeProject", "disposing.driver": "Удаление драйвера CMake", @@ -142,9 +143,9 @@ "configure.now.button": "Настроить сейчас", "cache.load.failed": "Файл CMakeCache.txt не найден. Сначала настройте проект.", "set.up.before.selecting.target": "Настройте проект CMake перед выбором целевого объекта.", - "select.active.target.tooltip": "Выбрать целевой объект сборки по умолчанию", "enter.target.name": "Введите имя целевого объекта.", "target.to.build.description": "Целевой объект для сборки", + "select.active.target.tooltip": "Выбрать целевой объект сборки по умолчанию", "build.failed": "Сбой сборки.", "driver.died.after.build.succeeded": "Драйвер CMake завершил работу сразу же после успешного завершения сборки.", "driver.died.before.workflow": "Драйвер CMake прекратил работу перед запуском рабочего процесса.", @@ -167,6 +168,7 @@ "target.debugging.unsupported": "Отладка целевых объектов с устаревшим драйвером больше не поддерживается.", "learn.more.button": "Дополнительные сведения", "failed.to.prepare.target": "Не удалось подготовить исполняемый целевой объект с именем {0}", + "debug.configuration.from.settings": "Конфигурация отладки на основе настроек пользователя: {0}", "debug.configuration.from.cache": "Конфигурация отладки из кэша: {0}", "problem.getting.debug": "Возникла проблема при получении конфигурации отладки из кэша.", "starting.debugger.with": "Запуск отладчика со следующей конфигурацией.", diff --git a/i18n/rus/src/ctest.i18n.json b/i18n/rus/src/ctest.i18n.json index f0a8433580..b9ab460c4d 100644 --- a/i18n/rus/src/ctest.i18n.json +++ b/i18n/rus/src/ctest.i18n.json @@ -27,6 +27,13 @@ "test.buildingPostRunCoverageTarget": "Сборка postRunCoverageTarget \"{0}\" для проекта {1} после выполнения тестов с охватом.", "test.postRunCoverageTargetFailure": "Не удалось создать целевой объект postRunCoverageTarget для проекта в {0}. Обработка данных об охвате пропускается.", "test.skip.run.build.failure": "Нет запущенных тестов из-за сбоя сборки.", + "debug.without.launch.config": "Отладка без конфигурации запуска", + "choose.debug.method": "Выберите способ отладки теста.", + "yes": "Да", + "no": "Нет", + "never.debug.with.launch.prompt": "Всегда отлаживать тесты без конфигурации запуска в этой рабочей области?", + "no.launch.config": "Конфигурации запуска не найдены.", + "choose.launch.config": "Выберите конфигурацию запуска для отладки теста.", "test.skip.debug.build.failure": "Нет отлаживаемых тестов из-за сбоя сборки.", "build.failed": "Сбой сборки", "run.tests.profile": "Запуск тестов", diff --git a/i18n/rus/src/drivers/cmakeDriver.i18n.json b/i18n/rus/src/drivers/cmakeDriver.i18n.json index 865c007529..7f394ecf58 100644 --- a/i18n/rus/src/drivers/cmakeDriver.i18n.json +++ b/i18n/rus/src/drivers/cmakeDriver.i18n.json @@ -5,13 +5,14 @@ // Do not edit this file. It is machine generated. { "no.usable.generator.found": "Подходящий генератор не найден.", - "user.closed.file.compilation.terminal": "Пользователь закрыл терминал, в котором выполнялась компиляция файлов.", "disposing.base.cmakedriver": "Удаление базового драйвера CMakeDriver.", "async.disposing.cmake.driver": "Асинхронное удаление драйвера CMake", "test.with.overrides": "ПРИМЕЧАНИЕ. Вы проводите тестирование с предустановкой {0}, но в настройках VS Code применяются некоторые переопределения.", "package.with.overrides": "ПРИМЕЧАНИЕ. Вы выполняете упаковку с предустановкой {0}, но в настройках VS Code применяются некоторые переопределения.", "compile.with.overrides": "ПРИМЕЧАНИЕ. Вы выполняете компиляцию с предустановкой {0}, но в настройках VS Code применяются некоторые переопределения.", "file.compilation": "Компиляция файла", + "compile.finished.with.error": "Компиляция завершена с ошибками.", + "compile.finished.successfully": "Компиляция завершена.", "removing": "Идет удаление {0}", "unlink.failed": "Не удалось удалить файл кэша {0}", "switching.to.config.preset": "Переключение на предустановку конфигурации: {0}", diff --git a/i18n/rus/src/extension.i18n.json b/i18n/rus/src/extension.i18n.json index a7dc338f10..4fce69c2e3 100644 --- a/i18n/rus/src/extension.i18n.json +++ b/i18n/rus/src/extension.i18n.json @@ -11,10 +11,11 @@ "configure.now.button": "Настроить сейчас", "configure.recommended": "Рекомендуется повторно настроить проект после обновления на новое определение наборов.", "using.cache.to.configure.workspace.on.open": "Попытка использовать кэш для настройки рабочей области {0}.", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier", + "failed.to.open.cache.file.on.code.model.update": "Failed to open CMake cache file on code model update", "update.code.model.for.cpptools": "Обновление модели кода для cpptools", "update.intellisense.disabled": "Поставщик конфигурации не обновляется, так как для {0} установлено значение {1}", "failed.to.get.cpptools.api": "Сбой при получении API cppTools", - "filed.to.open.cache.file.on.code.model.update": "Не удалось открыть файл кэша CMake при обновлении модели кода.", "opening.text.editor.for": "Открытие текстового редактора для {0}.", "no.kits.file.what.to.do": "Файл наборов отсутствует. Что вы хотели бы сделать?", "scan.for.kits.button": "Поиск наборов", @@ -49,6 +50,7 @@ "cmake.finished.returned.unserializable": "{0} завершено (возвращено несериализуемое значение).", "loading.extension.commands": "Загрузка команд расширения.", "register.command": "Регистрация команды расширения CMakeTools {0}", + "bookmark.target.not.resolved": "Не удалось преобразовать закладку \"{0}\" в целевой объект. Возможно, необходимо заново настроить проект.", "search.project.outline": "Введите поисковый термин, чтобы отфильтровать контур проекта", "added.to": "добавлено в", "removed.from": "удалено из", diff --git a/i18n/rus/src/proc.i18n.json b/i18n/rus/src/proc.i18n.json index 7e66eebef3..2185c57dcf 100644 --- a/i18n/rus/src/proc.i18n.json +++ b/i18n/rus/src/proc.i18n.json @@ -6,11 +6,11 @@ { "executing.command": "Выполнение команды: {0}", "execution.environment": " со средой: {0}", - "process.error": "Команда {0} завершилась сбоем с ошибкой {1} стек: {2}", - "process.exit.with.signal": "Выполнен выход из команды {0} с кодом {1} и сигналом {2} стек: {3}", - "process.exit": "Выход из команды {0} с кодом {1} стек: {2}", - "process.exit.stdout": "Вывод команды при стандартных выходных данных: {0}, стек: {1}", - "process.exit.stderr": "Вывод команды при стандартной ошибке: {0}, стек: {1}", + "process.error": "Команда {0} завершилась сбоем с ошибкой {1}", + "process.exit.with.signal": "Выполнен выход из команды {0} с кодом {1} и сигналом {2}", + "process.exit": "Выход из команды {0} с кодом {1}", + "process.exit.stdout": "Вывод команды при стандартных выходных данных: {0}", + "process.exit.stderr": "Вывод команды при стандартной ошибке: {0}", "processing.data.event.stdout": "Обработка события {0} из стандартного потока вывода процесса", "processing.data.event.stderr": "Обработка события {0} из стандартного потока ошибок процесса", "resolving.close.event": "Разрешение процесса на событии {0}" diff --git a/i18n/rus/src/util.i18n.json b/i18n/rus/src/util.i18n.json index fea2b32381..fb54b5acbf 100644 --- a/i18n/rus/src/util.i18n.json +++ b/i18n/rus/src/util.i18n.json @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "invalid.value": "Недопустимое значение для преобразования в значение cmake: {0}", "invalid.version.string": "Недопустимая строка версии {0}", "extension.is.undefined": "Расширение не определено!", "sourcedirectory.not.a.directory": "\"sourceDirectory\" не является каталогом." diff --git a/i18n/trk/assets/policies.json.i18n.json b/i18n/trk/assets/policies.json.i18n.json new file mode 100644 index 0000000000..56f11d679f --- /dev/null +++ b/i18n/trk/assets/policies.json.i18n.json @@ -0,0 +1,212 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "assets/policies.json.CMP0000": "Gerekli minimum CMake sürümü belirtilmelidir.", + "assets/policies.json.CMP0001": "CMAKE_BACKWARDS_COMPATIBILITY artık kullanılmamalı.", + "assets/policies.json.CMP0002": "Mantıksal hedef adları evrensel olarak benzersiz olmalıdır.", + "assets/policies.json.CMP0003": "Tam yol ile bağlanan kitaplıklar artık bağlayıcı arama yolları oluşturmaz.", + "assets/policies.json.CMP0004": "Bağlantılı kitaplıklarda başta veya sonda boşluk olmamalıdır.", + "assets/policies.json.CMP0005": "Önişlemci tanım değerleri artık otomatik olarak kaçış karakteri ile işlenir.", + "assets/policies.json.CMP0006": "MACOSX_BUNDLE hedeflerini yüklemek için BUNDLE DESTINATION gereklidir.", + "assets/policies.json.CMP0007": "list komutu artık boş öğeleri yoksaymaz.", + "assets/policies.json.CMP0008": "Tam yol ile bağlanan kitaplıkların geçerli bir kitaplık dosya adına sahip olması gerekir.", + "assets/policies.json.CMP0009": "FILE GLOB_RECURSE çağrıları varsayılan olarak sembolik bağlantıları takip etmez.", + "assets/policies.json.CMP0010": "Hatalı değişken referans sözdizimi hata olarak kabul edilir.", + "assets/policies.json.CMP0011": "Dahil edilen betikler otomatik olarak cmake_policy PUSH ve POP yapar.", + "assets/policies.json.CMP0012": "if sayıları ve boolean sabitlerini tanır.", + "assets/policies.json.CMP0013": "Yinelenen ikili dizinlere izin verilmez.", + "assets/policies.json.CMP0014": "Giriş dizinlerinde CMakeLists.txt dosyası olmalıdır.", + "assets/policies.json.CMP0015": "link_directories yolları kaynak dizine göreli olarak işler.", + "assets/policies.json.CMP0016": "target_link_libraries komutu tek bağımsız değişkeni hedef değilse hata verir.", + "assets/policies.json.CMP0017": "CMake modül dizininden dahil edilen dosyalar tercih edilir.", + "assets/policies.json.CMP0018": "CMAKE_SHARED_LIBRARY__FLAGS değişkeni yoksayılır.", + "assets/policies.json.CMP0019": "Ekleme ve bağlantı bilgilerindeki değişkenler yeniden genişletilmemelidir.", + "assets/policies.json.CMP0020": "Qt yürütülebilir dosyaları Windows'ta qtmain hedefine otomatik olarak bağlanır.", + "assets/policies.json.CMP0021": "INCLUDE_DIRECTORIES hedef özelliğinde göreli yollarla ilgili kritik hata oluştu.", + "assets/policies.json.CMP0022": "INTERFACE_LINK_LIBRARIES bağlantı arabirimini tanımlar.", + "assets/policies.json.CMP0023": "Düz ve anahtar kelimeli target_link_libraries imzaları karıştırılamaz.", + "assets/policies.json.CMP0024": "include export sonucu eklenmesine izin verilmez.", + "assets/policies.json.CMP0025": "Apple Clang derleyici kimliği artık AppleClang olarak geçer.", + "assets/policies.json.CMP0026": "Derleme hedefleri için LOCATION özelliğinin kullanımı yasaktır.", + "assets/policies.json.CMP0027": "Eksik ekleme dizinleri olan koşullu olarak bağlanmış içe aktarılan hedefler.", + "assets/policies.json.CMP0028": "Hedef adında çift iki nokta üst üste ALIAS veya IMPORTED hedef anlamına gelir.", + "assets/policies.json.CMP0029": "subdir_depends komutu çağrılmamalıdır.", + "assets/policies.json.CMP0030": "use_mangled_mesa komutu çağrılmamalıdır.", + "assets/policies.json.CMP0031": "load_command komutu çağrılmamalıdır.", + "assets/policies.json.CMP0032": "output_required_files komutu çağrılmamalıdır.", + "assets/policies.json.CMP0033": "export_library_dependencies komutu çağrılmamalıdır.", + "assets/policies.json.CMP0034": "utility_source komutu çağrılmamalıdır.", + "assets/policies.json.CMP0035": "variable_requires komutu çağrılmamalıdır.", + "assets/policies.json.CMP0036": "build_name komutu çağrılmamalıdır.", + "assets/policies.json.CMP0037": "Hedef adları ayrılmış olmamalı ve geçerlilik desenine uymalıdır.", + "assets/policies.json.CMP0038": "Hedefler kendilerine doğrudan bağlanamaz.", + "assets/policies.json.CMP0039": "Yardımcı hedeflerin bağlantı bağımlılıkları olamaz.", + "assets/policies.json.CMP0040": "add_custom_command komutundaki TARGET imzasındaki hedef mevcut olmalı ve geçerli dizinde tanımlanmalıdır.", + "assets/policies.json.CMP0041": "Oluşturucu ifadesi ile göreli ekleme hatası oluşur.", + "assets/policies.json.CMP0042": "MACOSX_RPATH varsayılan olarak etkindir.", + "assets/policies.json.CMP0043": "COMPILE_DEFINITIONS_ özellikleri yoksayılır", + "assets/policies.json.CMP0044": "Büyük/küçük harfe duyarlı _COMPILER_ID oluşturucu ifadeleri", + "assets/policies.json.CMP0045": "get_target_property komutunda var olmayan hedef için hata oluşur.", + "assets/policies.json.CMP0046": "add_dependencies komutunda var olmayan bağımlılık için hata oluşur.", + "assets/policies.json.CMP0047": "QNX'deki qcc sürücüleri için QCC derleyici kimliği kullanılır.", + "assets/policies.json.CMP0048": "project komutu VERSION değişkenlerini yönetir.", + "assets/policies.json.CMP0049": "Hedef kaynak girdilerindeki değişkenler genişletilmez.", + "assets/policies.json.CMP0050": "add_custom_command komutunda SOURCE imzalarına izin verilmez.", + "assets/policies.json.CMP0051": "TARGET_OBJECTS, SOURCES hedef özelliğinde listelenir.", + "assets/policies.json.CMP0052": "Yüklü INTERFACE_INCLUDE_DIRECTORIES içinde kaynak ve derleme dizinleri reddedilir.", + "assets/policies.json.CMP0053": "Değişken başvurusu ve kaçış dizisi değerlendirmesi basitleştirildi.", + "assets/policies.json.CMP0054": "Bağımsız değişkenler tırnak işareti yoksa değişken veya anahtar kelime olarak yorumlanır.", + "assets/policies.json.CMP0055": "break komutu için sıkı denetim uygulanır.", + "assets/policies.json.CMP0056": "try_compile kaynak dosya imzasında bağlantı bayraklarına saygı gösterilir.", + "assets/policies.json.CMP0057": "Yeni if IN_LIST işleci desteklenir.", + "assets/policies.json.CMP0058": "Ninja, özel komut yan ürünlerinin açık olmasını gerektirir.", + "assets/policies.json.CMP0059": "DEFINITIONS yerleşik bir dizin özelliği olarak değerlendirilmez.", + "assets/policies.json.CMP0060": "Kitaplıklar örtük dizinlerde bile tam yol ile bağlanır.", + "assets/policies.json.CMP0061": "CTest varsayılan olarak make komutuna hataları yoksaymasını (-i) söylemez.", + "assets/policies.json.CMP0062": "export sonucu yüklenmesine izin verilmez.", + "assets/policies.json.CMP0063": "Tüm hedef türleri için görünürlük özelliklerine uyulur.", + "assets/policies.json.CMP0064": "if komutu için TEST işleci tanınır.", + "assets/policies.json.CMP0065": "ENABLE_EXPORTS hedef özelliği olmayan yürütülebilir dosyalardan sembolleri dışa aktarmak için bayrak eklenmez.", + "assets/policies.json.CMP0066": "try_compile kaynak dosya imzasında yapılandırmaya özel bayraklara saygı gösterilir.", + "assets/policies.json.CMP0067": "try_compile kaynak dosya imzasında dil standardına uyulur.", + "assets/policies.json.CMP0068": "macOS'ta RPATH ayarları install_name değerini etkilemez.", + "assets/policies.json.CMP0069": "INTERPROCEDURAL_OPTIMIZATION etkinleştirildiğinde zorunlu hale gelir.", + "assets/policies.json.CMP0070": "Göreli yollar için dosya davranışı tanımlanır.", + "assets/policies.json.CMP0071": "AUTOMOC ve AUTOUIC GENERATED dosyalarını işlemelidir.", + "assets/policies.json.CMP0072": "FindOpenGL, mevcutsa varsayılan olarak GLVND'yi tercih eder.", + "assets/policies.json.CMP0073": "Eski _LIB_DEPENDS önbellek girdileri oluşturulmaz.", + "assets/policies.json.CMP0074": "find_package _ROOT değişkenlerini kullanır.", + "assets/policies.json.CMP0075": "Dosya ekleme kontrolü makroları CMAKE_REQUIRED_LIBRARIES değerine saygı gösterir.", + "assets/policies.json.CMP0076": "target_sources komutu göreli yolları mutlak yollara dönüştürür.", + "assets/policies.json.CMP0077": "option normal değişkenlere saygı gösterir.", + "assets/policies.json.CMP0078": "UseSWIG standart hedef adları oluşturur.", + "assets/policies.json.CMP0079": "target_link_libraries diğer dizinlerdeki hedeflerle kullanılabilir.", + "assets/policies.json.CMP0080": "BundleUtilities yapılandırma zamanında eklenemez.", + "assets/policies.json.CMP0081": "LINK_DIRECTORIES hedef özelliğinde göreli yollar kullanılamaz.", + "assets/policies.json.CMP0082": "add_subdirectory çağrılarından gelen kurallar çağıranın kurallarıyla iç içe geçer.", + "assets/policies.json.CMP0083": "Konumdan Bağımsız Yürütülebilir Dosya (PIE) oluşturulmasını kontrol etmek için bağlantı sırasında bazı bayraklar gereklidir.", + "assets/policies.json.CMP0084": "FindQt modülü find_package için mevcut değil.", + "assets/policies.json.CMP0085": "$ boş liste öğelerini işler.", + "assets/policies.json.CMP0086": "UseSWIG, SWIG_MODULE_NAME değerini -module bayrağıyla dikkate alır.", + "assets/policies.json.CMP0087": "install ve install destek oluşturucu ifadeleri destekler.", + "assets/policies.json.CMP0088": "FindBISON, çalıştırılırken CMAKE_CURRENT_BINARY_DIR dizininde bison çalıştırır.", + "assets/policies.json.CMP0089": "IBM Clang tabanlı XL derleyiciler için derleyici kimliği artık XLClang olarak geçer.", + "assets/policies.json.CMP0090": "export komutu varsayılan olarak paket kayıt defterini doldurmaz.", + "assets/policies.json.CMP0091": "MSVC çalışma zamanı kitaplık bayrakları bir soyutlama katmanı tarafından seçilir.", + "assets/policies.json.CMP0092": "MSVC uyarı bayrakları varsayılan olarak CMAKE__FLAGS içinde yer almaz.", + "assets/policies.json.CMP0093": "FindBoost, Boost_VERSION değerini x.y.z formatında raporlar.", + "assets/policies.json.CMP0094": "FindPython3, FindPython2 ve FindPython modülleri arama stratejisi için LOCATION kullanır.", + "assets/policies.json.CMP0095": "Ara CMake yükleme betiğinde RPATH girdileri doğru şekilde kaçış karakteri ile işlenir.", + "assets/policies.json.CMP0096": "project komutu sürüm bileşenlerindeki baştaki sıfırları korur.", + "assets/policies.json.CMP0097": "ExternalProject_Add komutunda GIT_SUBMODULES \"\" alt modül başlatmaz.", + "assets/policies.json.CMP0098": "FindFLEX, çalıştırılırken CMAKE_CURRENT_BINARY_DIR dizininde flex çalıştırır.", + "assets/policies.json.CMP0099": "Bağlantı özellikleri statik kitaplıkların özel bağımlılıkları üzerinde geçişkendir.", + "assets/policies.json.CMP0100": "AUTOMOC ve AUTOUIC, .hh uzantısıyla biten başlık dosyalarını işlemeye izin verir.", + "assets/policies.json.CMP0101": "target_compile_options komutu artık her zaman BEFORE anahtar sözcüğüne uyar.", + "assets/policies.json.CMP0102": "mark_as_advanced komutu, önbellekte zaten yoksa yeni bir giriş oluşturmaz.", + "assets/policies.json.CMP0103": "APPEND olmadan aynı FILE ile birden çok export komutu çağrısına artık izin verilmez.", + "assets/policies.json.CMP0104": "CMAKE_CUDA_COMPILER_ID _COMPILER_ID NVIDIA ise CMAKE_CUDA_ARCHITECTURES başlatılır. CUDA_ARCHITECTURES boşsa hata verilir.", + "assets/policies.json.CMP0105": "LINK_OPTIONS ve INTERFACE_LINK_OPTIONS hedef özellikleri artık cihaz bağlantısı aşamasında kullanılır.", + "assets/policies.json.CMP0106": "Belgeler modülü kaldırıldı.", + "assets/policies.json.CMP0107": "Başka bir hedefle aynı ada sahip bir ALIAS hedefi oluşturulamaz.", + "assets/policies.json.CMP0108": "Bir hedefin, ALIAS hedefi aracılığıyla bile kendisine bağlanmasına izin verilmez.", + "assets/policies.json.CMP0109": "find_program yürütme izni gerektirir ancak okuma izni gerektirmez.", + "assets/policies.json.CMP0110": "add_test, test adlarında rastgele karakterleri destekler.", + "assets/policies.json.CMP0111": "Konum özelliği eksik olan içe aktarılan hedef oluşturma sırasında başarısız olur.", + "assets/policies.json.CMP0112": "Hedef dosya bileşeni oluşturucu ifadeleri hedef bağımlılıkları eklemez.", + "assets/policies.json.CMP0113": "Makefile oluşturucuları hedef bağımlılıklarından gelen özel komutları tekrar etmez.", + "assets/policies.json.CMP0114": "ExternalProject adım hedefleri adımlarını tamamen benimser.", + "assets/policies.json.CMP0115": "Kaynak dosya uzantıları açık olmalıdır.", + "assets/policies.json.CMP0116": "Ninja oluşturucuları, add_custom_command'dan gelen DEPFILE'ları dönüştürür.", + "assets/policies.json.CMP0117": "MSVC RTTI bayrağı /GR varsayılan olarak CMAKE_CXX_FLAGS _FLAGS içine eklenmez.", + "assets/policies.json.CMP0118": "GENERATED kaynaklar dizinler arasında manuel işaretleme olmadan kullanılabilir.", + "assets/policies.json.CMP0119": "LANGUAGE kaynak dosyası özelliği, belirtilen dil olarak açıkça derlenir.", + "assets/policies.json.CMP0120": "WriteCompilerDetectionHeader modülü kaldırıldı.", + "assets/policies.json.CMP0121": "list komutu artık geçersiz dizinleri algılar.", + "assets/policies.json.CMP0122": "UseSWIG, CSharp dili için kitaplık adı kurallarını kullanır.", + "assets/policies.json.CMP0123": "ARMClang cpu/arch derleme ve bağlantı bayrakları açıkça ayarlanmalıdır.", + "assets/policies.json.CMP0124": "foreach döngü değişkenleri yalnızca döngü kapsamı içinde kullanılabilir.", + "assets/policies.json.CMP0125": "find_file, find_path, find_library ve find_program komutları, sonuçlarını ilk bağımsız değişkenlerinde belirtilen değişkende önbelleğe alır. CMake 3.21'den önce, aynı ada sahip bir önbellek değişkeni çağrıdan önce mevcutsa ancak bu önbellek değişkeninin türü yoksa, aynı ada sahip önbellek olmayan değişkenler atılır ve her zaman önbellek değişkeni kullanılırdı (benzer ancak farklı bir davranış için CMP0126'ya bakınız). Bu durum, aynı ada sahip önbellek olmayan bir değişkenin önbellek değişkenine göre öncelikli olması gerektiği kuralıyla çelişir. Böyle bir durum, kullanıcı komut satırında tür belirtmeden cmake -DMYVAR=değer ... şeklinde önbellek değişkeni ayarladığında ortaya çıkabilir; örneğin cmake -DMYVAR:FILEPATH=değer yerine.", + "assets/policies.json.CMP0126": "Bu ilke NEW olarak ayarlandığında set komutu aynı ada sahip normal değişkenleri mevcut kapsamdan kaldırmaz. Eski davranışta aşağıdaki durumlarda aynı ada sahip normal değişkenler mevcut kapsamdan kaldırılır:", + "assets/policies.json.CMP0127": "cmake_dependent_option tam Koşul Söz Dizimini destekler.", + "assets/policies.json.CMP0128": "Bu ilke NEW olarak ayarlandığında:", + "assets/policies.json.CMP0129": "MCST LCC derleyicileri için derleyici kimliği artık GNU değil LCC'dir.", + "assets/policies.json.CMP0130": "while koşul değerlendirme hatalarını tanılar.", + "assets/policies.json.CMP0131": "LINK_LIBRARIES, :genex:`$` oluşturucu ifadesini destekler.", + "assets/policies.json.CMP0132": "İlk çalıştırmada derleyici ortam değişkenleri ayarlanmaz.", + "assets/policies.json.CMP0133": "CPack modülü CPack DragNDrop oluşturucusunda varsayılan olarak SLA'yı devre dışı bırakır.", + "assets/policies.json.CMP0134": "Varsayılan kayıt defteri görünümü find_file, find_path, find_library ve find_package komutları için TARGET, find_program komutu için ise BOTH olarak ayarlanmıştır.", + "assets/policies.json.CMP0135": "ExternalProject_Add veya FetchContent_Declare komutlarıyla URL indirme yöntemi kullanıldığında, CMake 3.23 ve önceki sürümler ayıklanan içeriklerin zaman damgalarını arşivdeki zaman damgalarıyla aynı olacak şekilde ayarlar. URL değiştiğinde yeni arşiv indirilir ve ayıklanır, ancak ayıklanan içeriklerin zaman damgaları önceki içeriklerden daha yeni olmayabilir. Ayıklanan içeriklere bağlı olan her şey, içerikler değişse bile yeniden oluşturulmayabilir.", + "assets/policies.json.CMP0136": "MSVC çalışma zamanı kitaplık bayrakları bir soyutlama katmanı tarafından seçilir.", + "assets/policies.json.CMP0137": "try_compile komutu platform değişkenlerini proje modunda geçirir.", + "assets/policies.json.CMP0138": "CheckIPOSupported, çağıran projenin bayraklarını kullanır.", + "assets/policies.json.CMP0139": "If komutu, PATH_EQUAL operatörünü kullanarak yol karşılaştırmalarını destekler.", + "assets/policies.json.CMP0140": "return komutu parametrelerini denetler.", + "assets/policies.json.CMP0141": "MSVC hata ayıklama bilgisi biçim bayrakları bir soyutlama tarafından seçilir.", + "assets/policies.json.CMP0142": "Xcode oluşturucusu, kitaplık arama yollarına yapılandırma başına sonek eklemez.", + "assets/policies.json.CMP0143": "USE_FOLDERS genel özelliği varsayılan olarak AÇIK kabul edilir.", + "assets/policies.json.CMP0144": "find_package büyük harf _ROOT değişkenlerini kullanır.", + "assets/policies.json.CMP0145": "Dart ve FindDart modülleri kaldırıldı.", + "assets/policies.json.CMP0146": "FindCUDA modülü kaldırıldı.", + "assets/policies.json.CMP0147": "Visual Studio oluşturucuları özel komutları paralel olarak derler.", + "assets/policies.json.CMP0148": "FindPythonInterp ve FindPythonLibs modülleri kaldırıldı.", + "assets/policies.json.CMP0149": "Visual Studio oluşturucuları varsayılan olarak en son Windows SDK'sını seçer.", + "assets/policies.json.CMP0150": "ExternalProject_Add ve FetchContent_Declare komutları göreli GIT_REPOSITORY yollarını üst projenin uzak deposuna göreli kabul eder.", + "assets/policies.json.CMP0151": "AUTOMOC ekleme dizini varsayılan olarak sistem ekleme dizinidir.", + "assets/policies.json.CMP0152": "file komutu, ../ bileşenlerini daraltmadan önce sembolik bağlantıları çözer.", + "assets/policies.json.CMP0153": "exec_program komutu çağrılmamalıdır.", + "assets/policies.json.CMP0154": "Dosya kümelerini kullanan hedeflerde oluşturulan dosyalar varsayılan olarak özeldir.", + "assets/policies.json.CMP0155": "En az C++20 kullanan hedeflerdeki C++ kaynakları, destekleniyorsa içe aktarımlar için taranır.", + "assets/policies.json.CMP0156": "Bağlayıcı özelliklerine göre bağlantı satırlarındaki yinelenen kitaplıklar kaldırılır.", + "assets/policies.json.CMP0157": "Swift derleme modu bir soyutlama tarafından seçilir.", + "assets/policies.json.CMP0158": "add_test komutu yalnızca çapraz derleme yapıldığında CMAKE_CROSSCOMPILING_EMULATOR değişkenini dikkate alır.", + "assets/policies.json.CMP0159": "REGEX içeren dosya CMAKE_MATCH_ değerlerini güncelleştirir.", + "assets/policies.json.CMP0160": "Daha fazla salt okunur hedef özelliği ayarlanmaya çalışıldığında hata verir.", + "assets/policies.json.CMP0161": "CPACK_PRODUCTBUILD_DOMAINS değişkeninin varsayılan değeri true'dur.", + "assets/policies.json.CMP0162": "Visual Studio oluşturucuları varsayılan olarak UseDebugLibraries göstergeleri ekler.", + "assets/policies.json.CMP0163": "GENERATED kaynak dosyası özelliği artık tüm dizinlerde görünür.", + "assets/policies.json.CMP0164": "add_library platform tarafından desteklenmeyen PAYLAŞILAN kitaplıkları reddeder.", + "assets/policies.json.CMP0165": "enable_language proje çağrılmadan önce çağrılmamalıdır.", + "assets/policies.json.CMP0166": "TARGET_PROPERTY, statik kitaplıkların özel bağımlılıkları üzerinden bağlantı özelliklerini geçişli olarak değerlendirir.", + "assets/policies.json.CMP0167": "FindBoost modülü kaldırıldı.", + "assets/policies.json.CMP0168": "FetchContent modülü adımları alt derleme yerine doğrudan uygular.", + "assets/policies.json.CMP0169": "FetchContent_Populate çağrısına tek argümanla (bildirilen bağımlılığın adı) yapılması kullanım dışıdır.", + "assets/policies.json.CMP0170": "FETCHCONTENT_FULLY_DISCONNECTED true olarak ayarlandığında, FetchContent_MakeAvailable ve FetchContent_Populate kaynak dizininin zaten doldurulmuş olması gerektiği kısıtlamasını uygular. Bu gereksinim her zaman belgelenmişti ancak CMake 3.29 ve önceki sürümlerde kontrol edilmez veya zorlanmazdı. Bu durum, bir projenin bir bağımlılığın doldurulmuş olmasını beklediği ancak doldurmanın sessizce atlandığı durumlarda izlenmesi zor hatalara yol açabiliyordu.", + "assets/policies.json.CMP0171": "codegen ayrılmış bir hedef adıdır.", + "assets/policies.json.CMP0172": "CPack modülü CPack WIX oluşturucusunda varsayılan olarak makine başına yüklemeyi etkinleştirir.", + "assets/policies.json.CMP0173": "CMakeFindFrameworks modülü kaldırıldı.", + "assets/policies.json.CMP0174": "cmake_parse_arguments tek değerli anahtar sözcükten sonra boş dize için değişken tanımlar.", + "assets/policies.json.CMP0175": "add_custom_command geçersiz bağımsız değişkenleri reddeder.", + "assets/policies.json.CMP0176": "execute_process ENCODING varsayılan olarak UTF-8'dir.", + "assets/policies.json.CMP0177": "install HEDEF yolları normalleştirildi.", + "assets/policies.json.CMP0178": "Test komut satırları boş argümanları korur.", + "assets/policies.json.CMP0179": "Bağlantı satırlarındaki statik kitaplıkların yinelenenleri kaldırılırken ilk oluşum korunur. Bu politika yalnızca CMP0156 politikası NEW olarak ayarlandığında geçerlidir.", + "assets/policies.json.CMP0180": "project her zaman _* öğesini normal değişkenler olarak ayarlar.", + "assets/policies.json.CMP0181": "CMAKE_EXE_LINKER_FLAGS, CMAKE_EXE_LINKER_FLAGS_, CMAKE_SHARED_LINKER_FLAGS, CMAKE_SHARED_LINKER_FLAGS_, CMAKE_MODULE_LINKER_FLAGS ve CMAKE_MODULE_LINKER_FLAGS_ değişkenleri ayrıştırılır, yeniden tırnaklanır ve LINKER: önekini destekler.", + "assets/policies.json.CMP0182": "AIX üzerinde varsayılan olarak paylaşılan kütüphane arşivleri oluşturulur.", + "assets/policies.json.CMP0183": "add_feature_info tam Koşul Söz Dizimini destekler.", + "assets/policies.json.CMP0184": "MSVC çalışma zamanı denetim bayrakları bir soyutlama tarafından seçilir.", + "assets/policies.json.CMP0185": "FindRuby artık büyük harf RUBY_* değişkenlerini sağlamaz.", + "assets/policies.json.CMP0186": "Düzenli ifadeler, yinelenen aramalarda ^ karakteriyle en fazla bir kez eşleşir.", + "assets/policies.json.CMP0187": "Uzantılı dosyayla aynı ada sahip uzantısız kaynak dosya eklenir.", + "assets/policies.json.CMP0188": "FindGCCXML modülü kaldırıldı.", + "assets/policies.json.CMP0189": "TARGET_PROPERTY, LINK_LIBRARIES özelliklerini geçişli olarak değerlendirir.", + "assets/policies.json.CMP0190": "FindPython3, FindPython2 ve FindPython modülleri çapraz derleme modunda yapıtların tutarlılığını sağlar.", + "assets/policies.json.CMP0191": "FindCABLE modülü kaldırıldı.", + "assets/policies.json.CMP0192": "GNUInstallDirs özel ön eklerde mutlak SYSCONFDIR, LOCALSTATEDIR ve RUNSTATEDIR kullanır.", + "assets/policies.json.CMP0193": "GNUInstallDirs, CMAKE_INSTALL_* ön ekini / için usr/ ile önbelleğe alır.", + "assets/policies.json.CMP0194": "MSVC, ASM dili için bir derleyici değildir.", + "assets/policies.json.CMP0195": "Derleme ağaçlarındaki Swift modülleri Swift modül dizin yapısını kullanır.", + "assets/policies.json.CMP0196": "CMakeDetermineVSServicePack modülü kaldırıldı.", + "assets/policies.json.CMP0197": "MSVC bağlantı -machine: bayrağı CMAKE_*_LINKER_FLAGS içinde değildir.", + "assets/policies.json.CMP0198": "CMAKE_PARENT_LIST_FILE, CMakeLists.txt içinde tanımlı değildir.", + "assets/policies.json.CMP0199": ":genex:`$` seçili olmayan eşlenmiş yapılandırmalarla eşleşmez.", + "assets/policies.json.CMP0200": "İçe aktarılan hedefler için konum ve yapılandırma seçimi daha tutarlıdır.", + "assets/policies.json.CMP0201": "Python::NumPy, Python::Development.Module'a bağımlı değildir.", + "assets/policies.json.CMP0202": "PDB dosya adları her zaman hedefin yapılandırma başına POSTFIX'ini içerir.", + "assets/policies.json.CMP0203": "_WINDLL, MSVC ABI hedefleyen paylaşılan kitaplıklar için tanımlanmıştır.", + "assets/policies.json.CMP0204": "MSVC ABI hedeflenirken her zaman bir karakter kümesi tanımlanır." +} \ No newline at end of file diff --git a/i18n/trk/package.i18n.json b/i18n/trk/package.i18n.json index b4ce125764..a001e7edd7 100644 --- a/i18n/trk/package.i18n.json +++ b/i18n/trk/package.i18n.json @@ -4,6 +4,8 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "cmake-tools.command.cmake.addFileToCMakeLists.title": "Add File to CMake Lists", + "cmake-tools.command.cmake.removeFileFromCMakeLists.title": "Remove File from CMake Lists", "cmake-tools.command.cmake.openCMakePresets.title": "CMakePresets.json Öğesini Aç", "cmake-tools.command.cmake.addConfigurePreset.title": "Yapılandırma Ön Ayarı Ekle", "cmake-tools.command.cmake.addBuildPreset.title": "Derleme Ön Ayarı Ekle", @@ -46,6 +48,9 @@ "cmake-tools.command.cmake.cleanConfigureWithDebugger.title": "CMake Hata Ayıklayıcısı ile Önbelleği Sil ve Yeniden Yapılandır", "cmake-tools.command.cmake.cleanConfigureAll.title": "Önbelleği Sil ve Tüm Projeleri Yeniden Yapılandır", "cmake-tools.command.cmake.cleanConfigureAllWithDebugger.title": "CMake Hata Ayıklayıcısı ile Önbelleği Sil ve Tüm Projeleri Yeniden Yapılandır", + "cmake-tools.command.cmake.fullCleanConfigure.title": "Derleme Dizinini Sil ve Yeniden Yapılandır", + "cmake-tools.command.cmake.fullCleanConfigureAll.title": "Derleme Dizinini Sil ve Tüm Projeleri Yeniden Yapılandır", + "cmake-tools.command.cmake.outline.fullCleanConfigureAll.title": "Tüm Projeleri Tam Temiz Bir Şekilde Yeniden Yapılandır", "cmake-tools.command.cmake.editCacheUI.title": "CMake Önbelleğini Düzenle (UI)", "cmake-tools.command.cmake.outline.cleanConfigure.title": "Yeniden Yapılandırmayı Temizle", "cmake-tools.command.cmake.outline.cleanConfigureWithDebugger.title": "CMake Hata Ayıklayıcısı ile Yeniden Yapılandırmayı Temizle", @@ -58,6 +63,9 @@ "cmake-tools.command.cmake.cleanConfigureAndBuild.title": "Önbelleği Sil, Yeniden Yapılandır ve Derle", "cmake-tools.command.cmake.cleanConfigureAndBuildAll.title": "Önbelleği Sil, Tüm Projeleri Yeniden Yapılandır ve Derle", "cmake-tools.command.cmake.outline.cleanConfigureAndBuildAll.title": "Temizle, Tüm Projeleri Yeniden Yapılandır ve Derle", + "cmake-tools.command.cmake.fullCleanConfigureAndBuild.title": "Derleme Dizinini Sil, Yeniden Yapılandır ve Derle", + "cmake-tools.command.cmake.fullCleanConfigureAndBuildAll.title": "Derleme Dizinini Sil, Yeniden Yapılandır ve Tüm Projeleri Derle", + "cmake-tools.command.cmake.outline.fullCleanConfigureAndBuildAll.title": "Tüm Projeleri Tam Temiz Bir Şekilde Yeniden Yapılandır ve Derle", "cmake-tools.command.cmake.ctest.title": "Testleri Çalıştır", "cmake-tools.command.cmake.ctestAll.title": "Tüm Projeler için Testleri Çalıştır", "cmake-tools.command.cmake.cpack.title": "CPack’i çalıştır", @@ -74,6 +82,7 @@ "cmake-tools.command.cmake.launchTarget.title": "Hata Ayıklama Olmadan Çalıştır", "cmake-tools.command.cmake.launchTargetAll.title": "Tüm Projeleri Hata Ayıklama Olmadan Çalıştır", "cmake-tools.command.cmake.selectLaunchTarget.title": "Başlatma/Hata Ayıklama Hedefini Ayarla", + "cmake-tools.command.cmake.selectBuildAndLaunchTarget.title": "Derleme ve Hedef Başlatma/Hata Ayıklamayı ayarla", "cmake-tools.command.cmake.stop.title": "Derlemeyi İptal Et", "cmake-tools.command.cmake.stopAll.title": "Tüm Projeler için Derlemeyi İptal Et", "cmake-tools.command.cmake.resetState.title": "Cmake Tools Uzantısı Durumunu Sıfırla (Sorun giderme için)", @@ -105,6 +114,7 @@ "cmake-tools.configuration.cmake.generator.description": "Kullanılacak CMake oluşturucusu.", "cmake-tools.configuration.cmake.toolset.description": "Yapılandırma sırasında kullanılacak CMake araç takımı.", "cmake-tools.configuration.cmake.platform.description": "Yapılandırma sırasında kullanılacak CMake platformu.", + "cmake-tools.configuration.cmake.shell.description": "CMake, CTest ve CPack komutlarını çalıştırırken kullanılacak bir kabuk yürütülebilir dosyasının yolu (ör. Git Bash veya MSYS2). Bu ayar yapıldığında, tüm alt işlem çağrıları bu kabuk üzerinden yönlendirilir. POSIX yol çevirisi gerektiren gömülü araç zincirleri için kullanışlıdır. Değer boş bırakıldığında, varsayılan sistem kabuğu davranışı kullanılır.", "cmake-tools.configuration.cmake.configureArgs.description": "Yapılandırma sırasında CMake'e geçirilecek ek bağımsız değişkenler. CMake Ön Ayarları kullanıldığında, bu bağımsız değişkenler geçici olarak etkin yapılandırma ön ayarı tarafından sağlanan bağımsız değişkenlere eklenir.", "cmake-tools.configuration.cmake.buildArgs.description": "Derleme sırasında CMake'e geçirilecek ek bağımsız değişkenler. CMake Ön Ayarları kullanıldığında, bu bağımsız değişkenler geçici olarak etkin derleme ön ayarı tarafından sağlanan bağımsız değişkenlere eklenir.", "cmake-tools.configuration.cmake.buildToolArgs.description": "Derleme sırasında temel alınan derleme aracına geçirilecek ek bağımsız değişkenler. CMake Ön Ayarları kullanılırken bu bağımsız değişkenler, derleme aracını çağırmak için geçici olarak etkin derleme ön ayarı tarafından sağlanan bağımsız değişkenlere eklenir.", @@ -112,7 +122,7 @@ "cmake-tools.configuration.cmake.ctestPath.description": "CTest yürütülebilir dosyasının yolu. Değer null ise cmake.cmakePath değerinden çıkarsanır. (null olarak bırakılması önerilir.)", "cmake-tools.configuration.cmake.cpackPath.description": "CPack yürütülebilir dosyasının yolu. Değer null ise cmake.cmakePath değerinden çıkarsanır. (null olarak bırakılması önerilir.) Ön ayarlar yerine setler kullanıldığında yoksayılır.", "cmake-tools.configuration.cmake.ctest.parallelJobs.markdownDescription": "Paralel test işlerinin sayısı. `#cmake.parallelJobs#` değerini kullanmak için sıfır kullanın. Bu yalnızca `#cmake.ctest.allowParallelJobs#` değeri `true` olarak ayarlandığında geçerlidir.", - "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "Testlerin paralel olarak çalıştırılmasına izin verir, ancak bunun sonucunda sonuç çıktısı bozulabilir ve Test Gezgini test ilerlemesini doğru şekilde yansıtmayabilir.", + "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "Testlerin paralel olarak çalıştırılmasına izin verir, ancak bunun sonucunda sonuç çıktısı bozulabilir ve Test Gezgini test ilerlemesini doğru şekilde yansıtmayabilir. Devre dışı bırakıldığında, testler Test Gezgini görüntüleme sırasına uygun olarak alfabetik sırayla çalıştırılır.", "cmake-tools.configuration.cmake.ctest.testExplorerIntegrationEnabled.description": "Test gezginiyle tümleştirmenin etkinleştirilip etkinleştirilmediği. Test tümleştirmesi için farklı bir uzantı kullanmayı tercih ediyorsanız devre dışı bırakmak faydalıdır.", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiter.markdownDescription": "Test Listesi Düzenleyicisi’nde test paketi adlarını ve grup testlerini hiyerarşik olarak ayırmak için kullanılan isteğe bağlı sınırlayıcı. Bu dize bir Normal İfadede kullanıldığından bazı sınırlayıcılar kaçış karakteri gerektirebilir. Örnekler: `-` (Bir sınırlayıcı: `-`), `\\.|::` (İki sınırlayıcı: `.` veya `::`. `.` için kaçış karakteri eklenmesi gerektiğini unutmayın.)", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiterMaxOccurrence.markdownDescription": "Testin adını bölmek için sınırlayıcının en fazla kaç kez kullanılabileceğini belirtir. `0` sınır olmadığı anlamına gelir.", @@ -124,9 +134,21 @@ "cmake-tools.configuration.cmake.ctest.failurePatterns.actual": "Gerçek test çıktısının eşleşme grubu dizini. Varsayılan değer tanımlanmamıştır.", "cmake-tools.configuration.cmake.ctest.failurePatterns.expected": "Beklenen test çıktısının eşleşme grubu dizini. Varsayılan değer tanımlanmamıştır.", "cmake-tools.configuration.cmake.ctest.debugLaunchTarget.description": "CTest ile bir testte hata ayıklarken, launch.json'daki başlatılacak hedefin adı. Varsayılan değer olarak ve mevcut olmayan bir hedef olması durumunda, bu işlem mevcut tüm hedeflerle birlikte bir seçiciyi gösterecektir.", + "cmake-tools.configuration.cmake.ctest.neverDebugTestsWithLaunchConfiguration.description": "“true” olarak ayarlandığında, hızlı seçim menüsünü atlayarak testleri her zaman bir başlatma yapılandırması olmadan hata ayıklama modunda çalıştır. Varsayılan değer ‘false’ değeridir.", "cmake-tools.configuration.cmake.parseBuildDiagnostics.description": "Uyarılar ve hatalar için derleyici çıkışını ayrıştır.", "cmake-tools.configuration.cmake.enabledOutputParsers.description": "Kullanılacak çıkış ayrıştırıcıları. Desteklenen ayrıştırıcılar: GNULD tarzı bağlayıcı çıktısı için `cmake`, `gcc`, `gnuld`, Microsoft Visual C++ için `msvc`, --no_wrap_diagnostics --brief_diagnostics ile Green Hills derleyicisi için `ghs`, Wind River Diab derleyicisi için `diab` ve include-what-you-use tanılama için `iwyu`.", - "cmake-tools.configuration.cmake.debugConfig.description": "Bir hedefte hata ayıklanırken kullanılacak hata ayıklama yapılandırması.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.markdownDescription": "Derleme çıktısı için ek sorun eşleştiriciler. Bunu, clang-tidy, PCLint Plus, cppcheck gibi araçlardan veya CMake'te `add_custom_command`/`add_custom_target` aracılığıyla tümleştirilmiş özel betiklerden elde edilen tanılama bilgilerini görüntülemek için kullanın.\n\nHer bir giriş, bir `name` (tanı kaynağı etiketi olarak kullanılır), bir `regexp` ve `file`, `line`, `column`, `severity`, `message` ve `code` için yakalama grubu dizinlerini tanımlar.\n\nÖrneğin, `/path/file.cpp:10:5: warning: some message [check-name]` gibi clang-tidy çıktısını eşleştirmek için:\n```json\n[\n {\n \"name\": \"clang-tidy\",\n \"regexp\": \"^(.+?):(\\\\d+):(\\\\d+):\\\\s+(warning|error|note):\\\\s+(.+?)\\\\s*(?:\\\\[(.+)\\\\])?$\",\n \"file\": 1,\n \"line\": 2,\n \"column\": 3,\n \"severity\": 4,\n \"message\": 5,\n \"code\": 6\n }\n]\n```\n\nÖzel eşleştiriciler, yerleşik ayrıştırıcıların (`gcc`, `msvc` vb.) **ardından** çalıştırılır; bu sayede yerleşik derleyicilerin satırlarını ele geçirmezler.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.name": "Bu eşleştirici için benzersiz bir ad; Sorunlar bölmesinde tanılama kaynağı etiketi olarak kullanılır.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.regexp": "Her bir derleme çıktısı satırıyla eşleşecek düzenli ifade.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.file": "Dosya yolu için yakalama grubu dizini. Varsayılan değer `1`'dir.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.line": "Satır numarası için yakalama grubu dizini. Varsayılan değer `2`'dir.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.column": "Sütun numarası için yakalama grubu dizini. İsteğe bağlı.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.group": "Ciddiyet derecesi için yakalama grubu dizini (burada ‘hata’, ‘uyarı’ veya ‘bilgi’ değerleri bulunmalıdır).", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.severity.fixed": "Bu kalıptaki tüm eşleşmelere uygulanacak sabit bir önem derecesi.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.message": "Tanılama mesajının yakalama grubu dizini. Varsayılan değer `3`'tür.", + "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.code": "İsteğe bağlı bir tanılama koduna ait yakalama grubu dizini.", + "cmake-tools.configuration.cmake.debugConfig.description": "Bir hedefte hata ayıklanırken kullanılacak hata ayıklama yapılandırması. `type` belirtildiğinde, otomatik algılanan hata ayıklayıcı yapılandırması atlanır ve hedeften yalnızca temel bir yapılandırma (program, cwd, ad) oluşturulur. Diğer tüm özellikler bu ayardan uygulanır ve böylece herhangi bir hata ayıklama bağdaştırıcısı için hata ayıklama başlatma yapılandırması üzerinde tam kontrol sağlanır.", + "cmake-tools.configuration.cmake.debugConfig.type.description": "Kullanılacak hata ayıklama bağdaştırıcısı türü (örneğin, `cppdbg`, `cppvsdbg`, `lldb`, `codelldb`). Ayarlandığında, CMake önbelleğinden otomatik hata ayıklayıcı algılamasını atlar ve bu türü doğrudan kullanır. Hata ayıklama bağdaştırıcısının gerektirdiği ek özellikler `#cmake.debugConfig#` içine eklenebilir.", "cmake-tools.configuration.cmake.debugConfig.symbolSearchPath.description": "Visual Studio hata ayıklayıcısı sembolü arama yolları.", "cmake-tools.configuration.cmake.debugConfig.additionalSOLibSearchPath.description": ".so dosyalarının aranacağı GDB veya LLDB yolları.", "cmake-tools.configuration.cmake.debugConfig.externalConsole.description": "Program için bir dış konsol başlatın.", @@ -226,11 +248,13 @@ "cmake-tools.configuration.cmake.automaticReconfigure.description": "Set veya yapılandırma ön ayarı değiştirildiğinde CMake proje dizinlerini otomatik olarak yapılandır.", "cmake-tools.configuration.cmake.pinnedCommands.description": "Varsayılan olarak her zaman sabitlenen CMake komutlarının listesi. Bunlar Cmake Tools kenar çubuğu 'Sabitlenmiş Komutlar' bölümünde görünür.", "cmake-tools.configuration.cmake.enableAutomaticKitScan.description": "Set seçilmediğinde setler için otomatik taramayı etkinleştirin. Bu, yalnızca CMake Önayarları kullanılmadığında devreye girer.", + "cmake-tools.configuration.cmake.removeStaleKitsOnScan.description": "Remove compiler-based kits from the user kits file during a full kit scan when they are no longer rediscovered. Set \"keep\": true in a kit entry to preserve it.", "cmake-tools.configuration.cmake.enableLanguageServices.description": "CMake dosyaları için dil hizmetlerini etkinleştirin. Bu, sözdizimi vurgulamayı, kod tamamlama ve diğer özellikleri etkinleştirir.", "cmake-tools.configuration.cmake.preRunCoverageTarget.description": "Test gezginini kullanarak kapsamı olan testleri çalıştırmadan önce oluşturma hedefi", "cmake-tools.configuration.cmake.postRunCoverageTarget.description": "Test gezginini kullanarak kapsamı olan testleri çalıştırdıktan sonra oluşturma hedefi", "cmake-tools.configuration.cmake.coverageInfoFiles.description": "Test gezginini kullanarak kapsamı olan testleri çalıştırdıktan sonra işlenecek LCOV kapsam bilgisi dosyaları.", "cmake-tools.configuration.cmake.useFolderPropertyInBuildTargetDropdown.description": "Varsayılan derleme hedefi açılır listesinin CMake klasör gruplarına göre gruplanıp gruplanmadığını denetler.", + "cmake-tools.configuration.cmake.setBuildTargetSameAsLaunchTarget.description": "Bu özellik etkinleştirildiğinde, başlatma/hata ayıklama hedefi ayarlandığında derleme hedefi de buna uygun olarak otomatik olarak ayarlanır. Derleme hedefi yine de bağımsız olarak değiştirilebilir.", "cmake-tools.debugger.pipeName.description": "Hata ayıklayıcı iletişimi için kullanılacak kanalın (Windows'da) veya etki alanı yuvasının (Unix üzerinde) adı.", "cmake-tools.debugger.clean.description": "Yapılandırmadan önce temizleyin.", "cmake-tools.debugger.configureAll.description": "Tüm projeler için yapılandırın.", @@ -262,6 +286,7 @@ "cmake-tools.configuration.cmake.launchBehavior.breakAndReuseTerminal.markdownDescriptions": "Başlatma terminali örneği yeniden kullanılır ve hedefi başlatmadan önce herhangi bir etkin ön plan sürecini sonlandırmak için bir `break` komutu gönderilir.", "cmake-tools.configuration.cmake.launchBehavior.newTerminal.markdownDescriptions": "Yeni bir terminal örneği oluşturulur ve içinde hedef başlatılır. Mevcut terminaller otomatik olarak temizlenmez.", "cmake-tools.configuration.cmake.loadCompileCommands.description": "Tek dosya derlemesini etkinleştirmek için uzantının compile_commands.json dosyasını okuyup okumadığını denetler.", + "cmake-tools.configuration.cmake.outlineViewType.description": "Project Outline View`s type. Available options are: \"list\" and \"tree\".", "cmake-tools.command.cmake.projectStatus.update.title": "Proje durumunu yenileyin", "cmake-tools.command.cmake.pinnedCommands.add.title": "Sabitlemek için bir CMake komutu ekleyin", "cmake-tools.command.cmake.pinnedCommands.remove.title": "Komutu Kaldır", @@ -272,5 +297,33 @@ "cmake-tools.debugger.label": "CMake Hata Ayıklayıcısı", "cmake-tools.command.cmake.appendBuildDirectoryToWorkspace.title": "Derleme Dizinini Geçerli Çalışma Alanına Ekleme", "cmake-tools.command.workbench.action.tasks.configureTaskRunner.title": "Görevi Yapılandırma", - "cmake-tools.command.workbench.action.tasks.runTask.title": "Görevi Çalıştır" + "cmake-tools.command.workbench.action.tasks.runTask.title": "Görevi Çalıştır", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.description": "Add source files to CMake lists when they are created.", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.no.description": "Do not automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.yes.description": "Automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.description": "Remove source files from CMake lists when they are deleted.", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.no.description": "Do not automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.yes.description": "Automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.markdownDescription": "How to choose which `set()` or `list(APPEND/PREPEND/INSERT)` command invocation to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.never.description": "Do not look for variable modification command invocations, only look for source command invocations.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askFirstParentDir.description": "Present a Quick Pick with options from the first `CMakeLists.txt` found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askParentDirs.description": "Present a Quick Pick with options from all `CMakeLists.txt` files found when searching up from the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.sourceVariables.markdownDescription": "Variables to add source files to. Variables appearing earlier in this list will be given higher priority. Only used if `#cmake.modifyLists.variableSelection#` is not `never`. Supports glob patterns.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.description": "How to choose which target to add new source files to when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askNearestSourceDir.description": "Present a Quick Pick with targets whose source directories are closest to location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askParentSourceDirs.description": "Present a Quick Pick with targets whose source directories contain the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.description": "How to choose which of a target's source command invocations to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askFirstParentDir.description": "Present a Quick Pick with options from the CMake list file in the parent directory closest to the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askParentDirs.description": "Present a Quick Pick with options from all CMake list files in the parent directories of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSourceCommands.markdownDescription": "Commands to treat as target source commands when adding source files CMake lists. Commands appearing earlier in this list will be given higher priority. Supports glob patterns.\r\n\r\nIf you are using the File API (see `#cmake.cmakeCommunicationMode#`), user-defined functions and macros which call the commands in this list are detected automatically and added to it.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.description": "How to choose which of a target's visibility scopes, file sets, or source keyword parameters to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.ask.description": "Present a Quick Pick with options from the selected target source command invocation.", + "cmake-tools.configuration.cmake.modifyLists.sourceListKeywords.markdownDescription": "Keyword arguments to user-defined functions and macros which introduce lists of source files. If left empty, all arguments consisting of only upper-case letters and underscores will be considered. Supports glob patterns.", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier" } \ No newline at end of file diff --git a/i18n/trk/schemas/kits-schema.json.i18n.json b/i18n/trk/schemas/kits-schema.json.i18n.json index 400cbbcfff..65444d1ba7 100644 --- a/i18n/trk/schemas/kits-schema.json.i18n.json +++ b/i18n/trk/schemas/kits-schema.json.i18n.json @@ -17,9 +17,11 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Araç zinciri dosyasının yolu", "schemas/kits-schema.json.items.properties.visualStudio": "Visual Studio ürününün örnek kimliği", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Hedeflenecek mimari", + "schemas/kits-schema.json.items.properties.visualStudioArguments": "Arguments to vcvarsall.bat", "schemas/kits-schema.json.items.properties.environmentSetupScript": "Set için ortamı değiştiren betiğin mutlak yolu", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Ortam değişkeninin değeri", - "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "CMake Ayarının değeri", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.0": "CMake Ayarının değeri. Dizelerdeki noktalı virgüller kaçış karakteriyle belirtilir.", + "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*.oneOf.1": "Değerler noktalı virgülle birleştirilerek kaçış karakteri olmayan bir CMake listesi oluşturur.", "schemas/kits-schema.json.items.properties.preferredGenerator": "Bu Set için tercih edilen bir CMake oluşturucusu ayarlayın", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.name": "Kullanılacak oluşturucunun adı", "schemas/kits-schema.json.items.properties.preferredGenerator.properties.platform": "-A bağımsız değişkeni için CMake platformu", diff --git a/i18n/trk/src/cmakeListsModifier.i18n.json b/i18n/trk/src/cmakeListsModifier.i18n.json new file mode 100644 index 0000000000..a3c9d1d6a2 --- /dev/null +++ b/i18n/trk/src/cmakeListsModifier.i18n.json @@ -0,0 +1,51 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "add.newly.created.files": "Add newly created files to CMakeLists.txt", + "error.processing.add.files": "Error processing added files", + "remove.deleted.file": "Remove a deleted file from CMakeLists.txt", + "error.processing.delete.files": "Error processing deleted files", + "add.file.no.code.model": "Adding a file without a valid code model", + "file.already.in.target": "{0} already in target {1}.", + "no.targets.found": "No targets found. {0} not added to build system.", + "no.source.command.invocations": "No source command invocations found. {0} not added to build system.", + "delete.file.no.code.model": "Deleting a file without a valid code model", + "not.modifying.unsaved.delete": "Not modifying {0} to delete {1} because it has unsaved changes.", + "add.to.which.variable": "CMake: Add {0} to which variable?", + "add.to.which.target": "CMake: Add {0} to which target?", + "add.to.which.invocation": "CMake: Add {0} to which command invocation of {1}?", + "add.to.which.scope.fileset.keyword": "CMake: Add {0} to which Scope, File Set, or Keyword?", + "open.file": "Open File", + "not.modifying.unsaved.files": "Cannot modify {0} because it has unsaved changes.", + "skipping.unsaved.files": "Skipping {0} file(s) with unsaved changes: {1}", + "edit.label.remove.source.file": "CMake: Remove deleted source file", + "edit.label.add.source.file": "CMake: Add new source file", + "edits.applied.successfully": "Successfully applied {0} CMake list edit(s).", + "edits.apply.failed": "Failed to apply CMake list edits: {0}", + "not.local.file.add": "{0} is not a local file. Not adding to CMake lists.", + "no.candidates.found": "No suitable locations found to add {0}.", + "not.modifying.unsaved.add": "Not modifying {0} to add {1} because it has unsaved changes.", + "not.local.file.remove": "{0} is not a local file. Not removing from CMake lists.", + "could.not.open.file": "Could not open file {0}: {1}", + "file.not.found.in.cmake.lists": "{0} not found in CMake lists.", + "file.already.in.destination": "{0} already in {1} at {2}:{3}", + "parse.error.examining.cmake.lists": "Parse error while examining CMakeLists.txt files. Details: {0}", + "could.not.open.cmake.lists": "Could not open {0}: {1}", + "parse.error.finding.invocations": "Parse error while finding command invocations to add to. CMake file modified since last configure? Details: {0}", + "unexpected.command.found": "Found \"{0}\", expected \"{1}\". CMake file modified since last configure? Details: {2}:{3}", + "scope.private.detail": "{0} will be used to build {1}", + "scope.public.detail": "{0} will be used to build both {1} and targets that use {1}", + "scope.interface.detail": "{0} will be used to build targets that use {1}", + "fileset.headers.detail": "{0} will be used via a language's #include mechanism", + "fileset.cxx.modules.detail": "{0} contains C++ interface module or partition units.", + "label.fileset": "{0} File Set", + "label.scope": "{0} Scope", + "fileset.type": "Type: {0}", + "scope.with.fileset.detail": "{0} Scope: {1}", + "keyword.of.command": "Keyword of {0} command", + "command.label": "{0} Command", + "add.to.command.arguments": "Add {0} to the list of arguments to {1} command" +} \ No newline at end of file diff --git a/i18n/trk/src/cmakeProject.i18n.json b/i18n/trk/src/cmakeProject.i18n.json index 3cbd886e19..38319c683e 100644 --- a/i18n/trk/src/cmakeProject.i18n.json +++ b/i18n/trk/src/cmakeProject.i18n.json @@ -9,6 +9,7 @@ "generator.changed.restart.driver": "Oluşturucu değişikliğinden sonra CMake sürücüsü yeniden başlatılıyor.", "preferredGenerator.changed.restart.driver": "PreferredGenerators değişikliğinden sonra CMake sürücüsü yeniden başlatılıyor.", "bad.executable": "Hatalı CMake yürütülebilir dosyası: {0}. Yüklü olduğundan veya {1} ayarının değerinin doğru yolu içerdiğinden emin olmak için kontrol edin.", + "shell.changed.restart.driver": "Kabuk değişikliğinden sonra CMake sürücüsü yeniden başlatılıyor.", "targests.in.preset": "[Önceden Ayarlanmış Hedefler]", "constructing.cmakeproject": "Yeni CMakeProject örneği oluşturuluyor", "disposing.driver": "CMake sürücüsü atılıyor", @@ -142,9 +143,9 @@ "configure.now.button": "Şimdi Yapılandır", "cache.load.failed": "CMakeCache.txt dosyası bulunamadı. Lütfen önce projeyi yapılandırın!", "set.up.before.selecting.target": "Bir hedef seçmeden önce CMake projenizi ayarlayın.", - "select.active.target.tooltip": "Varsayılan derleme hedefini seçin", "enter.target.name": "Hedef adı girin", "target.to.build.description": "Derlenecek hedef", + "select.active.target.tooltip": "Varsayılan derleme hedefini seçin", "build.failed": "Derleme başarısız.", "driver.died.after.build.succeeded": "CMake sürücüsü, derleme başarılı olduktan hemen sonra sonlandırıldı.", "driver.died.before.workflow": "CMake sürücüsü iş akışı başlatmadan önce sonlandı.", @@ -167,6 +168,7 @@ "target.debugging.unsupported": "Hedef hata ayıklama artık eski sürücüyle desteklenmiyor", "learn.more.button": "Daha fazla bilgi", "failed.to.prepare.target": "{0} adlı yürütülebilir hedef hazırlanamadı", + "debug.configuration.from.settings": "Kullanıcı ayarlarından hata ayıklama yapılandırması: {0}", "debug.configuration.from.cache": "Önbellekteki yapılandırmada hata ayıkla: {0}", "problem.getting.debug": "Önbellekten hata ayıklama yapılandırması alınırken sorun oluştu.", "starting.debugger.with": "Hata ayıklayıcı şu yapılandırmayla başlatılıyor.", diff --git a/i18n/trk/src/ctest.i18n.json b/i18n/trk/src/ctest.i18n.json index 66431f452b..dbc1a25835 100644 --- a/i18n/trk/src/ctest.i18n.json +++ b/i18n/trk/src/ctest.i18n.json @@ -27,6 +27,13 @@ "test.buildingPostRunCoverageTarget": "Testler kapsamla çalıştırıldıktan sonra {1} projesi için '{0}' postRunCoverageTarget oluşturuluyor.", "test.postRunCoverageTargetFailure": "{0} içindeki proje üzerinde hedef postRunCoverageTarget oluşturma başarısız oldu. Kapsam verilerinin işlenmesi atlanıyor.", "test.skip.run.build.failure": "Derleme hatası nedeniyle testler çalıştırılamıyor.", + "debug.without.launch.config": "Çalıştırma yapılandırması olmadan hata ayıkla", + "choose.debug.method": "Testin hata ayıklama yöntemini seçin.", + "yes": "Evet", + "no": "Hayır", + "never.debug.with.launch.prompt": "Bu çalışma alanında testleri her zaman bir başlatma yapılandırması olmadan hata ayıklamak ister misiniz?", + "no.launch.config": "Başlatma yapılandırması bulunamadı.", + "choose.launch.config": "Testte hata ayıklamak için bir başlatma yapılandırması seçin.", "test.skip.debug.build.failure": "Derleme hatası nedeniyle testlerde hata ayıklama gerçekleştirilemiyor.", "build.failed": "Derleme başarısız", "run.tests.profile": "Testleri Çalıştır", diff --git a/i18n/trk/src/drivers/cmakeDriver.i18n.json b/i18n/trk/src/drivers/cmakeDriver.i18n.json index 14d0acf6f4..bbff2d7132 100644 --- a/i18n/trk/src/drivers/cmakeDriver.i18n.json +++ b/i18n/trk/src/drivers/cmakeDriver.i18n.json @@ -5,13 +5,14 @@ // Do not edit this file. It is machine generated. { "no.usable.generator.found": "Kullanılabilir oluşturucu bulunamadı.", - "user.closed.file.compilation.terminal": "Kullanıcı bir dosya derleme terminalini kapattı", "disposing.base.cmakedriver": "Temel CMakeDriver atılıyor", "async.disposing.cmake.driver": "CMake sürücüsü zaman uyumsuz şekilde atılıyor", "test.with.overrides": "NOT: Ön ayarlı {0} ile test yapıyorsunuz ancak VS Code ayarlarınızdan uygulanan bazı geçersiz kılmalar var.", "package.with.overrides": "NOT: {0} ön ayarlı ile paketliyorsunuz ancak VS Code ayarlarınızdan uygulanan bazı geçersiz kılmalar var.", "compile.with.overrides": "NOT: Ön ayarlı {0} ile derleme yapıyorsunuz ancak VS Code ayarlarınızdan uygulanan bazı geçersiz kılmalar var.", "file.compilation": "Dosya Derlemesi", + "compile.finished.with.error": "Derleme hatalarla tamamlandı.", + "compile.finished.successfully": "Derleme başarıyla tamamlandı.", "removing": "{0} kaldırılıyor", "unlink.failed": "Önbellek dosyası {0} kaldırılamadı", "switching.to.config.preset": "Yapılandırmak ön ayarına geçiliyor: {0}", diff --git a/i18n/trk/src/extension.i18n.json b/i18n/trk/src/extension.i18n.json index da4dab506c..c8dea2ad38 100644 --- a/i18n/trk/src/extension.i18n.json +++ b/i18n/trk/src/extension.i18n.json @@ -11,10 +11,11 @@ "configure.now.button": "Şimdi Yapılandır", "configure.recommended": "Yeni bir set tanımına yükselttikten sonra yeniden yapılandırmanız önerilir.", "using.cache.to.configure.workspace.on.open": "{0} çalışma alanını yapılandırmak için önbellek kullanılmaya çalışılıyor", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier", + "failed.to.open.cache.file.on.code.model.update": "Failed to open CMake cache file on code model update", "update.code.model.for.cpptools": "cpptools için kod modelini güncelleştir", "update.intellisense.disabled": "{0}, {1} olarak ayarlandığından yapılandırma sağlayıcısı güncelleştirilemedi", "failed.to.get.cpptools.api": "cppTools API'si alınamadı", - "filed.to.open.cache.file.on.code.model.update": "Kod modeli güncelleştirmesinde CMake önbellek dosyası açılamadı", "opening.text.editor.for": "{0} için metin düzenleyici açılıyor", "no.kits.file.what.to.do": "Set dosyası yok. Ne yapmak istiyorsunuz?", "scan.for.kits.button": "Setler için tara", @@ -49,6 +50,7 @@ "cmake.finished.returned.unserializable": "{0} tamamlandı (seri hale getirilemeyen bir değer döndürüldü)", "loading.extension.commands": "Uzantı komutları yükleniyor", "register.command": "{0} CMake Araçları uzantısını komutunu kaydet", + "bookmark.target.not.resolved": "“{0}” yer imi bir hedefe çözümlenemedi. Projenin yeniden yapılandırılması gerekebilir.", "search.project.outline": "Proje Taslağını filtrelemek için bir arama terimi girin", "added.to": "şuraya eklendi:", "removed.from": "şuradan kaldırıldı:", diff --git a/i18n/trk/src/proc.i18n.json b/i18n/trk/src/proc.i18n.json index 611bf84f03..95aa68b7ad 100644 --- a/i18n/trk/src/proc.i18n.json +++ b/i18n/trk/src/proc.i18n.json @@ -6,11 +6,11 @@ { "executing.command": "{0} komutu yürütülüyor", "execution.environment": " ortam ile: {0}", - "process.error": "{0} komutu, {1} hatası ve {2} yığınıyla başarısız oldu", - "process.exit.with.signal": "{0} komutundan şu kodla çıkıldı: {1} ve sinyal: {2} yığın: {3}", - "process.exit": "{0} komutundan {1} kodu ve {2} yığınıyla çıkıldı", - "process.exit.stdout": "Standart çıkışta komut çıktısı: {0} yığın: {1}", - "process.exit.stderr": "Standart hatada komut çıktısı: {0} yığın: {1}", + "process.error": "Komut: {0}, şu hatayla başarısız oldu: {1}", + "process.exit.with.signal": "Komut: {0}, şu kodla çıkıldı: {1} ve sinyal: {2}", + "process.exit": "{0} komutundan {1} koduyla çıkıldı.", + "process.exit.stdout": "Standart çıkışta komut çıktısı: {0}", + "process.exit.stderr": "Standart hatada komut çıktısı: {0}", "processing.data.event.stdout": "proc stdout konumundaki {0} olayı işleniyor", "processing.data.event.stderr": "proc stderr konumundaki {0} olayı işleniyor", "resolving.close.event": "{0} olayında işlem çözümleniyor" diff --git a/i18n/trk/src/util.i18n.json b/i18n/trk/src/util.i18n.json index 73d3a16fdd..17db6e0aae 100644 --- a/i18n/trk/src/util.i18n.json +++ b/i18n/trk/src/util.i18n.json @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "invalid.value": "Cmake değerine dönüştürmek için geçersiz değer: {0}", "invalid.version.string": "Geçersiz sürüm dizesi: {0}", "extension.is.undefined": "Uzantı tanımsız!", "sourcedirectory.not.a.directory": "\"sourceDirectory\" bir dizin değil" diff --git a/package.json b/package.json index 374d08b8f9..f5fef85269 100644 --- a/package.json +++ b/package.json @@ -575,6 +575,20 @@ "title": "%cmake-tools.command.cmake.outline.cleanConfigureAllWithDebugger.title%", "enablement": "cmake:cmakeDebuggerAvailable" }, + { + "command": "cmake.fullCleanConfigure", + "title": "%cmake-tools.command.cmake.fullCleanConfigure.title%", + "category": "CMake" + }, + { + "command": "cmake.fullCleanConfigureAll", + "title": "%cmake-tools.command.cmake.fullCleanConfigureAll.title%", + "category": "CMake" + }, + { + "command": "cmake.outline.fullCleanConfigureAll", + "title": "%cmake-tools.command.cmake.outline.fullCleanConfigureAll.title%" + }, { "command": "cmake.clean", "title": "%cmake-tools.command.cmake.clean.title%", @@ -638,6 +652,20 @@ "command": "cmake.outline.cleanConfigureAndBuildAll", "title": "%cmake-tools.command.cmake.outline.cleanConfigureAndBuildAll.title%" }, + { + "command": "cmake.fullCleanConfigureAndBuild", + "title": "%cmake-tools.command.cmake.fullCleanConfigureAndBuild.title%", + "category": "CMake" + }, + { + "command": "cmake.fullCleanConfigureAndBuildAll", + "title": "%cmake-tools.command.cmake.fullCleanConfigureAndBuildAll.title%", + "category": "CMake" + }, + { + "command": "cmake.outline.fullCleanConfigureAndBuildAll", + "title": "%cmake-tools.command.cmake.outline.fullCleanConfigureAndBuildAll.title%" + }, { "command": "cmake.editCacheUI", "when": "cmake:enableFullFeatureSet", @@ -735,6 +763,16 @@ "title": "%cmake-tools.command.cmake.quickStart.title%", "category": "CMake" }, + { + "command": "cmake.addFileToCMakeLists", + "title": "%cmake-tools.command.cmake.addFileToCMakeLists.title%", + "category": "CMake" + }, + { + "command": "cmake.removeFileFromCMakeLists", + "title": "%cmake-tools.command.cmake.removeFileFromCMakeLists.title%", + "category": "CMake" + }, { "command": "cmake.debugTarget", "title": "%cmake-tools.command.cmake.debugTarget.title%", @@ -970,6 +1008,8 @@ "configure", "install", "test", + "package", + "workflow", "clean", "cleanRebuild" ], @@ -1361,6 +1401,13 @@ "command": "cmake.cleanConfigureAllWithDebugger", "when": "cmake:multiProject && cmake:cmakeDebuggerAvailable" }, + { + "command": "cmake.fullCleanConfigure" + }, + { + "command": "cmake.fullCleanConfigureAll", + "when": "cmake:multiProject" + }, { "command": "cmake.clean", "when": "cmake:enableFullFeatureSet" @@ -1384,6 +1431,13 @@ "command": "cmake.cleanConfigureAndBuildAll", "when": "cmake:multiProject" }, + { + "command": "cmake.fullCleanConfigureAndBuild" + }, + { + "command": "cmake.fullCleanConfigureAndBuildAll", + "when": "cmake:multiProject" + }, { "command": "cmake.editCacheUI", "when": "cmake:enableFullFeatureSet" @@ -1512,6 +1566,10 @@ "command": "cmake.outline.cleanConfigureAllWithDebugger", "when": "never" }, + { + "command": "cmake.outline.fullCleanConfigureAll", + "when": "never" + }, { "command": "cmake.outline.clean", "when": "never" @@ -1536,6 +1594,10 @@ "command": "cmake.outline.cleanConfigureAndBuildAll", "when": "never" }, + { + "command": "cmake.outline.fullCleanConfigureAndBuildAll", + "when": "never" + }, { "command": "cmake.outline.editCacheUI", "when": "never" @@ -1770,6 +1832,11 @@ "when": "view == cmake.outline && cmake:cmakeDebuggerAvailable", "group": "1_cmakeOutline" }, + { + "command": "cmake.outline.fullCleanConfigureAll", + "when": "view == cmake.outline", + "group": "1_cmakeOutline" + }, { "command": "cmake.outline.cleanRebuildAll", "when": "view == cmake.outline && cmake:enableFullFeatureSet", @@ -1780,6 +1847,11 @@ "when": "view == cmake.outline", "group": "1_cmakeOutline" }, + { + "command": "cmake.outline.fullCleanConfigureAndBuildAll", + "when": "view == cmake.outline", + "group": "1_cmakeOutline" + }, { "command": "cmake.outline.editCacheUI", "when": "view == cmake.outline && cmake:enableFullFeatureSet", @@ -2059,6 +2131,16 @@ "when": "view == cmake.outline && viewItem =~ /nodeType=file/ && viewItem =~ /cmakelists=true/", "group": "1_fileActions@7" }, + { + "command": "cmake.outline.fullCleanConfigureAll", + "when": "view == cmake.outline && viewItem =~ /nodeType=file/ && viewItem =~ /cmakelists=true/", + "group": "1_fileActions@8" + }, + { + "command": "cmake.outline.fullCleanConfigureAndBuildAll", + "when": "view == cmake.outline && viewItem =~ /nodeType=file/ && viewItem =~ /cmakelists=true/", + "group": "1_fileActions@9" + }, { "command": "cmake.outline.compileFile", "when": "cmake:enableFullFeatureSet && view == cmake.outline && viewItem =~ /nodeType=file/ && viewItem =~ /compilable=true/", @@ -2116,18 +2198,38 @@ }, { "command": "cmake.outline.buildTarget", - "when": "view == cmake.bookmarks && cmake:enableFullFeatureSet", - "group": "bookmarkActions@1" + "when": "view == cmake.bookmarks && cmake:enableFullFeatureSet && viewItem =~ /canBuild=true/", + "group": "1_targetActions@1" + }, + { + "command": "cmake.outline.runUtilityTarget", + "when": "view == cmake.bookmarks && cmake:enableFullFeatureSet && viewItem =~ /canRun=true/", + "group": "1_targetActions@2" }, { "command": "cmake.outline.debugTarget", - "when": "view == cmake.bookmarks && cmake:enableFullFeatureSet", - "group": "bookmarkActions@2" + "when": "view == cmake.bookmarks && cmake:enableFullFeatureSet && viewItem =~ /type=EXECUTABLE/", + "group": "1_targetActions@3" }, { "command": "cmake.outline.launchTarget", - "when": "view == cmake.bookmarks && cmake:enableFullFeatureSet", - "group": "bookmarkActions@3" + "when": "view == cmake.bookmarks && cmake:enableFullFeatureSet && viewItem =~ /type=EXECUTABLE/", + "group": "1_targetActions@4" + }, + { + "command": "cmake.outline.revealInCMakeLists", + "when": "view == cmake.bookmarks && cmake:enableFullFeatureSet && viewItem =~ /isDefault=/ && viewItem =~ /canBuild=true|canRun=true/", + "group": "1_targetActions@5" + }, + { + "command": "cmake.outline.setDefaultTarget", + "when": "view == cmake.bookmarks && cmake:enableFullFeatureSet && viewItem =~ /canRun=true|canBuild=true/ && viewItem =~ /isDefault=false/", + "group": "2_targetState@1" + }, + { + "command": "cmake.outline.setLaunchTarget", + "when": "view == cmake.bookmarks && cmake:enableFullFeatureSet && viewItem =~ /type=EXECUTABLE/ && viewItem =~ /isLaunch=false/", + "group": "2_targetState@2" } ], "editor/title/context": [ @@ -2192,6 +2294,14 @@ { "command": "cmake.outline.cleanConfigureAndBuildAll", "when": "resourceFilename == CMakeLists.txt" + }, + { + "command": "cmake.outline.fullCleanConfigureAll", + "when": "resourceFilename == CMakeLists.txt" + }, + { + "command": "cmake.outline.fullCleanConfigureAndBuildAll", + "when": "resourceFilename == CMakeLists.txt" } ], "touchBar": [ @@ -2551,6 +2661,12 @@ "description": "%cmake-tools.configuration.cmake.ctest.debugLaunchTarget.description%", "scope": "resource" }, + "cmake.ctest.neverDebugTestsWithLaunchConfiguration": { + "type": "boolean", + "default": false, + "description": "%cmake-tools.configuration.cmake.ctest.neverDebugTestsWithLaunchConfiguration.description%", + "scope": "resource" + }, "cmake.parseBuildDiagnostics": { "type": "boolean", "default": true, @@ -2649,7 +2765,12 @@ "cmake.debugConfig": { "type": "object", "description": "%cmake-tools.configuration.cmake.debugConfig.description%", + "additionalProperties": true, "properties": { + "type": { + "type": "string", + "markdownDescription": "%cmake-tools.configuration.cmake.debugConfig.type.description%" + }, "symbolSearchPath": { "type": "string", "description": "%cmake-tools.configuration.cmake.debugConfig.symbolSearchPath.description%" @@ -2987,6 +3108,12 @@ "description": "%cmake-tools.configuration.cmake.copyCompileCommands.description%", "scope": "resource" }, + "cmake.postConfigureTask": { + "type": "string", + "default": null, + "description": "%cmake-tools.configuration.cmake.postConfigureTask.description%", + "scope": "resource" + }, "cmake.configureOnOpen": { "type": "boolean", "default": true, @@ -3171,6 +3298,16 @@ ], "scope": "window" }, + "cmake.outlineViewType": { + "type": "string", + "enum": [ + "list", + "tree" + ], + "default": "list", + "description": "%cmake-tools.configuration.cmake.outlineViewType.description%", + "scope": "resource" + }, "cmake.options.advanced": { "type": "object", "default": { @@ -3991,6 +4128,12 @@ "description": "%cmake-tools.configuration.cmake.enableAutomaticKitScan.description%", "scope": "resource" }, + "cmake.removeStaleKitsOnScan": { + "type": "boolean", + "default": false, + "description": "%cmake-tools.configuration.cmake.removeStaleKitsOnScan.description%", + "scope": "window" + }, "cmake.enableLanguageServices": { "type": "boolean", "default": true, @@ -4024,11 +4167,147 @@ "description": "%cmake-tools.configuration.cmake.useFolderPropertyInBuildTargetDropdown.description%", "scope": "resource" }, - "cmake.setBuildTargetSameAsLaunchTarget": { +"cmake.setBuildTargetSameAsLaunchTarget": { "type": "boolean", "default": false, "description": "%cmake-tools.configuration.cmake.setBuildTargetSameAsLaunchTarget.description%", "scope": "resource" + }, + "cmake.modifyLists.addNewSourceFiles": { + "type": "string", + "default": "ask", + "enum": [ + "no", + "yes", + "ask" + ], + "description": "%cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.description%", + "enumDescriptions": [ + "%cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.no.description%", + "%cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.yes.description%", + "%cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.ask.description%" + ], + "scope": "resource" + }, + "cmake.modifyLists.removeDeletedSourceFiles": { + "type": "string", + "default": "ask", + "enum": [ + "no", + "yes", + "ask" + ], + "description": "%cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.description%", + "enumDescriptions": [ + "%cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.no.description%", + "%cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.yes.description%", + "%cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.ask.description%" + ], + "scope": "resource" + }, + "cmake.modifyLists.variableSelection": { + "type": "string", + "enum": [ + "never", + "auto", + "askFirstParentDir", + "askParentDirs" + ], + "default": "never", + "markdownDescription": "%cmake-tools.configuration.cmake.modifyLists.variableSelection.markdownDescription%", + "markdownEnumDescriptions": [ + "%cmake-tools.configuration.cmake.modifyLists.variableSelection.never.description%", + "%cmake-tools.configuration.cmake.modifyLists.variableSelection.auto.description%", + "%cmake-tools.configuration.cmake.modifyLists.variableSelection.askFirstParentDir.description%", + "%cmake-tools.configuration.cmake.modifyLists.variableSelection.askParentDirs.description%" + ], + "scope": "resource" + }, + "cmake.modifyLists.sourceVariables": { + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "SRC", + "SRCS", + "SOURCES", + "SOURCE_FILES", + "*_SRC", + "*_SRCS", + "*_SOURCES", + "*_SOURCE_FILES" + ], + "markdownDescription": "%cmake-tools.configuration.cmake.modifyLists.sourceVariables.markdownDescription%", + "scope": "resource" + }, + "cmake.modifyLists.targetSelection": { + "type": "string", + "enum": [ + "auto", + "askNearestSourceDir", + "askParentSourceDirs" + ], + "default": "askParentSourceDirs", + "description": "%cmake-tools.configuration.cmake.modifyLists.targetSelection.description%", + "enumDescriptions": [ + "%cmake-tools.configuration.cmake.modifyLists.targetSelection.auto.description%", + "%cmake-tools.configuration.cmake.modifyLists.targetSelection.askNearestSourceDir.description%", + "%cmake-tools.configuration.cmake.modifyLists.targetSelection.askParentSourceDirs.description%" + ], + "scope": "resource" + }, + "cmake.modifyLists.targetCommandInvocationSelection": { + "type": "string", + "enum": [ + "auto", + "askFirstParentDir", + "askParentDirs" + ], + "default": "askParentDirs", + "description": "%cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.description%", + "enumDescriptions": [ + "%cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.auto.description%", + "%cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askFirstParentDir.description%", + "%cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askParentDirs.description%" + ], + "scope": "resource" + }, + "cmake.modifyLists.targetSourceCommands": { + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "target_sources", + "add_executable", + "add_library" + ], + "markdownDescription": "%cmake-tools.configuration.cmake.modifyLists.targetSourceCommands.markdownDescription%", + "scope": "resource" + }, + "cmake.modifyLists.scopeSelection": { + "type": "string", + "enum": [ + "auto", + "ask" + ], + "default": "ask", + "description": "%cmake-tools.configuration.cmake.modifyLists.scopeSelection.description%", + "enumDescriptions": [ + "%cmake-tools.configuration.cmake.modifyLists.scopeSelection.auto.description%", + "%cmake-tools.configuration.cmake.modifyLists.scopeSelection.ask.description%" + ], + "scope": "resource" + }, + "cmake.modifyLists.sourceListKeywords": { + "type": "array", + "items": { + "type": "string" + }, + "default": [], + "markdownDescription": "%cmake-tools.configuration.cmake.modifyLists.sourceListKeywords.markdownDescription%", + "scope": "resource" } } }, @@ -4144,7 +4423,7 @@ "endToEndTestsSuccessfulBuild": "yarn run pretest && node ./out/test/end-to-end-tests/successful-build/runTest.js", "endToEndTestsSingleRoot": "yarn run pretest && node ./out/test/end-to-end-tests/single-root-UI/runTest.js", "endToEndTestsMultiRoot": "yarn run pretest && node ./out/test/end-to-end-tests/multi-root-UI/runTest.js", - "backendTests": "node ./node_modules/mocha/bin/_mocha -u tdd --timeout 999999 --colors -r ts-node/register -r tsconfig-paths/register ./test/unit-tests/backend/**/*.test.ts", + "backendTests": "node ./node_modules/mocha/bin/_mocha -u tdd --timeout 999999 --colors -r ts-node/register -r tsconfig-paths/register -r test/unit-tests/backend/setup-vscode-mock.ts ./test/unit-tests/backend/**/*.test.ts", "build-product-icon-font": "yarn --cwd ./tools/product-icon-font-generator/ install && yarn --cwd ./tools/product-icon-font-generator/ build && node ./tools/product-icon-font-generator/dist/index.js --source-directory ./res/product-icons/ --output-directory ./res/ --woff2" }, "devDependencies": { @@ -4156,7 +4435,7 @@ "@types/js-yaml": "^4.0.0", "@types/json5": "~0.0.30", "@types/lodash": "4.14.202", - "@types/mocha": "^8.2.2", + "@types/mocha": "^10.0.10", "@types/node": "^20.14.2", "@types/rimraf": "^3.0.0", "@types/sinon": "~9.0.10", @@ -4165,29 +4444,29 @@ "@types/which": "~2.0.0", "@types/xml2js": "^0.4.8", "@types/uuid": "~8.3.3", - "@typescript-eslint/eslint-plugin": "^5.25.0", - "@typescript-eslint/eslint-plugin-tslint": "^5.25.0", - "@typescript-eslint/parser": "^5.25.0", + "@typescript-eslint/eslint-plugin": "^5.59.11", + "@typescript-eslint/eslint-plugin-tslint": "^5.59.11", + "@typescript-eslint/parser": "^5.59.11", "@vscode/test-electron": "^2.3.8", "@vscode/vsce": "^3.1.0", "chai": "^4.3.0", "chai-as-promised": "^7.1.1", "chai-string": "^1.5.0", - "eslint": "^8.15.0", + "eslint": "^8.42.0", "eslint-plugin-import": "^2.29.1", "eslint-plugin-jsdoc": "^48.2.8", "event-stream": "^4.0.1", "fs-extra": "^9.1.0", "glob": "^7.1.6", "gulp": "^4.0.2", - "gulp-eslint": "^6.0.0", + "gulp-eslint-new": "^1.9.1", "gulp-filter": "^6.0.0", - "gulp-mocha": "^8.0.0", + "gulp-mocha": "^10.0.1", "gulp-sourcemaps": "^3.0.0", "gulp-typescript": "^5.0.1", "husky": "^4.3.8", "jsonc-parser": "^3.0.0", - "mocha": "^8.3.2", + "mocha": "^11.7.5", "module-alias": "^2.2.2", "node-loader": "^1.0.2", "parse-git-config": "^3.0.0", @@ -4200,13 +4479,12 @@ "vscode-cmake-tools": "^1.5.0", "vscode-nls-dev": "^3.3.2", "webpack": "^5.104.1", - "webpack-cli": "^4.5.0" + "webpack-cli": "^5.1.4" }, "dependencies": { "@friedemannsommer/lcov-parser": "^5.0.0", "@types/string.prototype.matchall": "^4.0.4", "ajv": "^8.18.0", - "handlebars": "^4.7.7", "iconv-lite": "^0.6.2", "js-yaml": "^4.1.1", "json5": "^2.2.2", @@ -4223,7 +4501,7 @@ "which": "~2.0.2", "xml2js": "^0.5.0", "uuid": "~8.3.2", - "lodash": "^4.17.23" + "lodash": "^4.18.1" }, "resolutions": { "ansi-regex": "^5.0.1", @@ -4238,7 +4516,8 @@ "**/braces": "^3.0.3", "js-yaml": "^4.1.1", "tmp": "^0.2.4", - "jws": "^4.0.1" + "jws": "^4.0.1", + "serialize-javascript": "^7.0.4" }, "packageManager": "yarn@1.22.19" } diff --git a/package.nls.json b/package.nls.json index 0959fe5455..5a81ab21d9 100644 --- a/package.nls.json +++ b/package.nls.json @@ -1,4 +1,6 @@ { + "cmake-tools.command.cmake.addFileToCMakeLists.title": "Add File to CMake Lists", + "cmake-tools.command.cmake.removeFileFromCMakeLists.title": "Remove File from CMake Lists", "cmake-tools.command.cmake.openCMakePresets.title": "Open CMakePresets.json", "cmake-tools.command.cmake.addConfigurePreset.title": "Add Configure Preset", "cmake-tools.command.cmake.addBuildPreset.title": "Add Build Preset", @@ -46,6 +48,9 @@ "cmake-tools.command.cmake.cleanConfigureWithDebugger.title": "Delete Cache and Reconfigure with CMake Debugger", "cmake-tools.command.cmake.cleanConfigureAll.title": "Delete Cache and Reconfigure All Projects", "cmake-tools.command.cmake.cleanConfigureAllWithDebugger.title": "Delete Cache and Reconfigure All Projects with CMake Debugger", + "cmake-tools.command.cmake.fullCleanConfigure.title": "Delete Build Directory and Reconfigure", + "cmake-tools.command.cmake.fullCleanConfigureAll.title": "Delete Build Directory and Reconfigure All Projects", + "cmake-tools.command.cmake.outline.fullCleanConfigureAll.title": "Full Clean Reconfigure All Projects", "cmake-tools.command.cmake.editCacheUI.title": "Edit CMake Cache (UI)", "cmake-tools.command.cmake.outline.cleanConfigure.title": "Clean Reconfigure", "cmake-tools.command.cmake.outline.cleanConfigureWithDebugger.title": "Clean Reconfigure with CMake Debugger", @@ -58,6 +63,9 @@ "cmake-tools.command.cmake.cleanConfigureAndBuild.title": "Delete Cache, Reconfigure and Build", "cmake-tools.command.cmake.cleanConfigureAndBuildAll.title": "Delete Cache, Reconfigure and Build All Projects", "cmake-tools.command.cmake.outline.cleanConfigureAndBuildAll.title": "Clean Reconfigure and Build All Projects", + "cmake-tools.command.cmake.fullCleanConfigureAndBuild.title": "Delete Build Directory, Reconfigure and Build", + "cmake-tools.command.cmake.fullCleanConfigureAndBuildAll.title": "Delete Build Directory, Reconfigure and Build All Projects", + "cmake-tools.command.cmake.outline.fullCleanConfigureAndBuildAll.title": "Full Clean Reconfigure and Build All Projects", "cmake-tools.command.cmake.ctest.title": "Run Tests", "cmake-tools.command.cmake.ctestAll.title": "Run Tests for All Projects", "cmake-tools.command.cmake.cpack.title": "Run CPack", @@ -132,7 +140,7 @@ "message": "The number of parallel test jobs. Use zero to use the value of `#cmake.parallelJobs#`. This only applies when `#cmake.ctest.allowParallelJobs#` is set to `true`.", "comment": "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." }, - "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "Allows ctests to be run in parallel, however the result output may be garbled as a result and the Test Explorer may not accurately reflect test progress.", + "cmake-tools.configuration.cmake.ctest.allowParallelJobs.description": "Allows ctests to be run in parallel, however the result output may be garbled as a result and the Test Explorer may not accurately reflect test progress. When disabled, tests run sequentially in alphabetical order, matching the Test Explorer display order.", "cmake-tools.configuration.cmake.ctest.testExplorerIntegrationEnabled.description": "Whether or not the integration with the test explorer is enabled. This is helpful to disable if you prefer using a different extension for test integration.", "cmake-tools.configuration.cmake.ctest.testSuiteDelimiter.markdownDescription": { "message": "Optional delimiter used to separate test suite names and group tests hierarchically in the Test Explorer. This string is used in a Regular Expression, so some delimiters may need escaping. Examples: `-` ( One delimiter: `-`), `\\.|::` (Two delimiters: `.` or `::`. Note that `.` needs to be escaped.)", @@ -168,6 +176,7 @@ "message": "The match group index of the expected test output. Defaults to undefined." }, "cmake-tools.configuration.cmake.ctest.debugLaunchTarget.description": "Target name from launch.json to start when debugging a test with CTest. By default and in case of a non-existing target, this will show a picker with all available targets.", + "cmake-tools.configuration.cmake.ctest.neverDebugTestsWithLaunchConfiguration.description": "When set to true, always debug tests without a launch configuration, bypassing the quick pick menu. Default is false.", "cmake-tools.configuration.cmake.parseBuildDiagnostics.description": "Parse compiler output for warnings and errors.", "cmake-tools.configuration.cmake.enabledOutputParsers.description": { "message": "Output parsers to use. Supported parsers `cmake`, `gcc`, `gnuld` for GNULD-style linker output, `msvc` for Microsoft Visual C++, `ghs` for the Green Hills compiler with --no_wrap_diagnostics --brief_diagnostics, `diab` for the Wind River Diab compiler, and `iwyu` for include-what-you-use diagnostics.", @@ -210,7 +219,8 @@ ] }, "cmake-tools.configuration.cmake.additionalBuildProblemMatchers.code": "The capture group index for an optional diagnostic code.", - "cmake-tools.configuration.cmake.debugConfig.description": "The debug configuration to use when debugging a target.", + "cmake-tools.configuration.cmake.debugConfig.description": "The debug configuration to use when debugging a target. When `type` is specified, the auto-detected debugger configuration is skipped and only a minimal base configuration (program, cwd, name) is generated from the target. All other properties are applied from this setting, allowing full control over the debug launch configuration for any debug adapter.", + "cmake-tools.configuration.cmake.debugConfig.type.description": "The debug adapter type to use (e.g., `cppdbg`, `cppvsdbg`, `lldb`, `codelldb`). When set, skips the automatic debugger detection from the CMake cache and uses this type directly. Any additional properties required by the debug adapter can be added to `#cmake.debugConfig#`.", "cmake-tools.configuration.cmake.debugConfig.symbolSearchPath.description": "Visual Studio debugger symbol search paths.", "cmake-tools.configuration.cmake.debugConfig.additionalSOLibSearchPath.description": "Paths for GDB or LLDB to search for .so files.", "cmake-tools.configuration.cmake.debugConfig.externalConsole.description": "Launch an external console for the program.", @@ -262,6 +272,7 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Directories where Emscripten may be installed.", "cmake-tools.configuration.cmake.mergedCompileCommands.description": "Recursively collect and merge all compile_commands.json found in the cmake.buildDirectory.", "cmake-tools.configuration.cmake.copyCompileCommands.description": "Copy compile_commands.json to this location after a successful configure.", + "cmake-tools.configuration.cmake.postConfigureTask.description": "If set, this named task will be executed after a successful CMake configure.", "cmake-tools.configuration.cmake.configureOnOpen.description": "Automatically configure CMake project directories when they are opened.", "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", "cmake-tools.configuration.cmake.deleteBuildDirOnCleanConfigure.description": "Delete the entire build directory when a clean configure is invoked.", @@ -370,6 +381,7 @@ ] }, "cmake-tools.configuration.cmake.enableAutomaticKitScan.description": "Enable automatic scanning for kits when a kit isn't selected. This will only take affect when CMake Presets aren't being used.", + "cmake-tools.configuration.cmake.removeStaleKitsOnScan.description": "Remove compiler-based kits from the user kits file during a full kit scan when they are no longer rediscovered. Set \"keep\": true in a kit entry to preserve it.", "cmake-tools.configuration.cmake.enableLanguageServices.description": "Enable language services for CMake files. This will enable syntax highlighting, code completion, and other features.", "cmake-tools.configuration.cmake.preRunCoverageTarget.description": "Target to build before running tests with coverage using the test explorer", "cmake-tools.configuration.cmake.postRunCoverageTarget.description": "Target to build after running tests with coverage using the test explorer", @@ -417,6 +429,7 @@ }, "cmake-tools.configuration.cmake.launchBehavior.newTerminal.markdownDescriptions": "A new terminal instance is created and the target is launched in it. Existing terminals are not automatically cleaned up.", "cmake-tools.configuration.cmake.loadCompileCommands.description": "Controls whether the extension reads compile_commands.json to enable single file compilation.", + "cmake-tools.configuration.cmake.outlineViewType.description": "Project Outline View`s type. Available options are: \"list\" and \"tree\".", "cmake-tools.command.cmake.projectStatus.update.title": "Refresh the project status", "cmake-tools.command.cmake.pinnedCommands.add.title": "Add a CMake command to pin", "cmake-tools.command.cmake.pinnedCommands.remove.title": "Unpin Command", @@ -427,5 +440,58 @@ "cmake-tools.debugger.label": "CMake Debugger", "cmake-tools.command.cmake.appendBuildDirectoryToWorkspace.title": "Append Build Directory to Current Workspace", "cmake-tools.command.workbench.action.tasks.configureTaskRunner.title":"Configure Task", - "cmake-tools.command.workbench.action.tasks.runTask.title":"Run Task" + "cmake-tools.command.workbench.action.tasks.runTask.title":"Run Task", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.description": "Add source files to CMake lists when they are created.", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.no.description": "Do not automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.yes.description": "Automatically add source files to CMake lists", + "cmake-tools.configuration.cmake.modifyLists.addNewSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.description": "Remove source files from CMake lists when they are deleted.", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.no.description": "Do not automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.yes.description": "Automatically remove source files from CMake lists", + "cmake-tools.configuration.cmake.modifyLists.removeDeletedSourceFiles.ask.description": "Show a preview panel of proposed changes to apply", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.markdownDescription": { + "message": "How to choose which `set()` or `list(APPEND/PREPEND/INSERT)` command invocation to edit when adding source files to CMake lists.", + "comment": [ + "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." + ] + }, + "cmake-tools.configuration.cmake.modifyLists.variableSelection.never.description": "Do not look for variable modification command invocations, only look for source command invocations.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askFirstParentDir.description": { + "message": "Present a Quick Pick with options from the first `CMakeLists.txt` found when searching up from the location of the new source file.", + "comment": [ + "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." + ] + }, + "cmake-tools.configuration.cmake.modifyLists.variableSelection.askParentDirs.description": { + "message": "Present a Quick Pick with options from all `CMakeLists.txt` files found when searching up from the location of the new source file.", + "comment": [ + "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." + ] + }, + "cmake-tools.configuration.cmake.modifyLists.sourceVariables.markdownDescription": { + "message": "Variables to add source files to. Variables appearing earlier in this list will be given higher priority. Only used if `#cmake.modifyLists.variableSelection#` is not `never`. Supports glob patterns.", + "comment": [ + "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." + ] + }, + "cmake-tools.configuration.cmake.modifyLists.targetSelection.description": "How to choose which target to add new source files to when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askNearestSourceDir.description": "Present a Quick Pick with targets whose source directories are closest to location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSelection.askParentSourceDirs.description": "Present a Quick Pick with targets whose source directories contain the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.description": "How to choose which of a target's source command invocations to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askFirstParentDir.description": "Present a Quick Pick with options from the CMake list file in the parent directory closest to the location of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetCommandInvocationSelection.askParentDirs.description": "Present a Quick Pick with options from all CMake list files in the parent directories of the new source file.", + "cmake-tools.configuration.cmake.modifyLists.targetSourceCommands.markdownDescription": { + "message": "Commands to treat as target source commands when adding source files CMake lists. Commands appearing earlier in this list will be given higher priority. Supports glob patterns.\n\nIf you are using the File API (see `#cmake.cmakeCommunicationMode#`), user-defined functions and macros which call the commands in this list are detected automatically and added to it.", + "comment": [ + "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." + ] + }, + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.description": "How to choose which of a target's visibility scopes, file sets, or source keyword parameters to edit when adding source files to CMake lists.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.auto.description": "Choose the best candidate automatically.", + "cmake-tools.configuration.cmake.modifyLists.scopeSelection.ask.description": "Present a Quick Pick with options from the selected target source command invocation.", + "cmake-tools.configuration.cmake.modifyLists.sourceListKeywords.markdownDescription": "Keyword arguments to user-defined functions and macros which introduce lists of source files. If left empty, all arguments consisting of only upper-case letters and underscores will be considered. Supports glob patterns.", + "update.code.model.for.list.modifier": "Update code model for automatic list file modifier" } diff --git a/schemas/CMakePresets-schema.json b/schemas/CMakePresets-schema.json index f12785dedb..3f7b1ec06e 100644 --- a/schemas/CMakePresets-schema.json +++ b/schemas/CMakePresets-schema.json @@ -98,28 +98,7 @@ }, "intelliSenseMode": { "type": "string", - "description": "An optional key that indicates the preferred IntelliSense mode. Mode used for computing IntelliSense information in Visual Studio and Visual Studio Code.", - "enum": [ - "windows-msvc-x86", - "windows-msvc-x64", - "windows-msvc-arm", - "windows-msvc-arm64", - "android-clang-x86", - "android-clang-x64", - "android-clang-arm", - "android-clang-arm64", - "ios-clang-x86", - "ios-clang-x64", - "ios-clang-arm", - "ios-clang-arm64", - "windows-clang-x86", - "windows-clang-x64", - "windows-clang-arm", - "windows-clang-arm64", - "linux-gcc-x86", - "linux-gcc-x64", - "linux-gcc-arm" - ] + "description": "An optional key that indicates the preferred IntelliSense mode. Mode used for computing IntelliSense information in Visual Studio and Visual Studio Code." }, "intelliSenseOptions": { "type": "object", @@ -171,7 +150,8 @@ "type": "string", "description": "A command line tool (specified as a command line program + arguments, e.g. \"gencache.bat debug\") to generate the CMake cache. This command will run from the shell in the preset’s specified environment when cache generation is invoked. This key is only supported by the \"Open Existing Cache\" scenario in Visual Studio." } - } + }, + "additionalProperties": true }, "microsoft.com/VisualStudioRemoteSettings/CMake/1.0": { "type": "object", @@ -284,7 +264,8 @@ "default": false, "description": "If true, Visual Studio will always use the WSL1 toolset when targeting WSL from Visual Studio. The WSL1 toolset executes all commands locally and relies on Windows drives mounted under the /mnt folder to access local source files from WSL. These operations may be slower with WSL2." } - } + }, + "additionalProperties": true } } }, diff --git a/schemas/CMakePresets-v10-schema.json b/schemas/CMakePresets-v10-schema.json index 8fb3b4c142..56e357d0cf 100644 --- a/schemas/CMakePresets-v10-schema.json +++ b/schemas/CMakePresets-v10-schema.json @@ -111,28 +111,7 @@ }, "intelliSenseMode": { "type": "string", - "description": "An optional key that indicates the preferred IntelliSense mode. Mode used for computing IntelliSense information in Visual Studio and Visual Studio Code.", - "enum": [ - "windows-msvc-x86", - "windows-msvc-x64", - "windows-msvc-arm", - "windows-msvc-arm64", - "android-clang-x86", - "android-clang-x64", - "android-clang-arm", - "android-clang-arm64", - "ios-clang-x86", - "ios-clang-x64", - "ios-clang-arm", - "ios-clang-arm64", - "windows-clang-x86", - "windows-clang-x64", - "windows-clang-arm", - "windows-clang-arm64", - "linux-gcc-x86", - "linux-gcc-x64", - "linux-gcc-arm" - ] + "description": "An optional key that indicates the preferred IntelliSense mode. Mode used for computing IntelliSense information in Visual Studio and Visual Studio Code." }, "intelliSenseOptions": { "type": "object", @@ -184,7 +163,8 @@ "type": "string", "description": "A command line tool (specified as a command line program + arguments, e.g. \"gencache.bat debug\") to generate the CMake cache. This command will run from the shell in the preset’s specified environment when cache generation is invoked. This key is only supported by the \"Open Existing Cache\" scenario in Visual Studio." } - } + }, + "additionalProperties": true }, "microsoft.com/VisualStudioRemoteSettings/CMake/1.0": { "type": "object", @@ -297,7 +277,8 @@ "default": false, "description": "If true, Visual Studio will always use the WSL1 toolset when targeting WSL from Visual Studio. The WSL1 toolset executes all commands locally and relies on Windows drives mounted under the /mnt folder to access local source files from WSL. These operations may be slower with WSL2." } - } + }, + "additionalProperties": true } } }, diff --git a/schemas/CMakePresets-v3-schema.json b/schemas/CMakePresets-v3-schema.json index 6f6289d5a8..daeefb035f 100644 --- a/schemas/CMakePresets-v3-schema.json +++ b/schemas/CMakePresets-v3-schema.json @@ -98,28 +98,7 @@ }, "intelliSenseMode": { "type": "string", - "description": "An optional key that indicates the preferred IntelliSense mode. Mode used for computing IntelliSense information in Visual Studio and Visual Studio Code.", - "enum": [ - "windows-msvc-x86", - "windows-msvc-x64", - "windows-msvc-arm", - "windows-msvc-arm64", - "android-clang-x86", - "android-clang-x64", - "android-clang-arm", - "android-clang-arm64", - "ios-clang-x86", - "ios-clang-x64", - "ios-clang-arm", - "ios-clang-arm64", - "windows-clang-x86", - "windows-clang-x64", - "windows-clang-arm", - "windows-clang-arm64", - "linux-gcc-x86", - "linux-gcc-x64", - "linux-gcc-arm" - ] + "description": "An optional key that indicates the preferred IntelliSense mode. Mode used for computing IntelliSense information in Visual Studio and Visual Studio Code." }, "intelliSenseOptions": { "type": "object", @@ -171,7 +150,8 @@ "type": "string", "description": "A command line tool (specified as a command line program + arguments, e.g. \"gencache.bat debug\") to generate the CMake cache. This command will run from the shell in the preset’s specified environment when cache generation is invoked. This key is only supported by the \"Open Existing Cache\" scenario in Visual Studio." } - } + }, + "additionalProperties": true }, "microsoft.com/VisualStudioRemoteSettings/CMake/1.0": { "type": "object", @@ -284,7 +264,8 @@ "default": false, "description": "If true, Visual Studio will always use the WSL1 toolset when targeting WSL from Visual Studio. The WSL1 toolset executes all commands locally and relies on Windows drives mounted under the /mnt folder to access local source files from WSL. These operations may be slower with WSL2." } - } + }, + "additionalProperties": true } } }, diff --git a/schemas/CMakePresets-v4-schema.json b/schemas/CMakePresets-v4-schema.json index 4ab43f05e2..8da8e338da 100644 --- a/schemas/CMakePresets-v4-schema.json +++ b/schemas/CMakePresets-v4-schema.json @@ -98,28 +98,7 @@ }, "intelliSenseMode": { "type": "string", - "description": "An optional key that indicates the preferred IntelliSense mode. Mode used for computing IntelliSense information in Visual Studio and Visual Studio Code.", - "enum": [ - "windows-msvc-x86", - "windows-msvc-x64", - "windows-msvc-arm", - "windows-msvc-arm64", - "android-clang-x86", - "android-clang-x64", - "android-clang-arm", - "android-clang-arm64", - "ios-clang-x86", - "ios-clang-x64", - "ios-clang-arm", - "ios-clang-arm64", - "windows-clang-x86", - "windows-clang-x64", - "windows-clang-arm", - "windows-clang-arm64", - "linux-gcc-x86", - "linux-gcc-x64", - "linux-gcc-arm" - ] + "description": "An optional key that indicates the preferred IntelliSense mode. Mode used for computing IntelliSense information in Visual Studio and Visual Studio Code." }, "intelliSenseOptions": { "type": "object", @@ -171,7 +150,8 @@ "type": "string", "description": "A command line tool (specified as a command line program + arguments, e.g. \"gencache.bat debug\") to generate the CMake cache. This command will run from the shell in the preset’s specified environment when cache generation is invoked. This key is only supported by the \"Open Existing Cache\" scenario in Visual Studio." } - } + }, + "additionalProperties": true }, "microsoft.com/VisualStudioRemoteSettings/CMake/1.0": { "type": "object", @@ -284,7 +264,8 @@ "default": false, "description": "If true, Visual Studio will always use the WSL1 toolset when targeting WSL from Visual Studio. The WSL1 toolset executes all commands locally and relies on Windows drives mounted under the /mnt folder to access local source files from WSL. These operations may be slower with WSL2." } - } + }, + "additionalProperties": true } } }, diff --git a/schemas/CMakePresets-v5-schema.json b/schemas/CMakePresets-v5-schema.json index 64b29a7c65..1faeabe005 100644 --- a/schemas/CMakePresets-v5-schema.json +++ b/schemas/CMakePresets-v5-schema.json @@ -98,28 +98,7 @@ }, "intelliSenseMode": { "type": "string", - "description": "An optional key that indicates the preferred IntelliSense mode. Mode used for computing IntelliSense information in Visual Studio and Visual Studio Code.", - "enum": [ - "windows-msvc-x86", - "windows-msvc-x64", - "windows-msvc-arm", - "windows-msvc-arm64", - "android-clang-x86", - "android-clang-x64", - "android-clang-arm", - "android-clang-arm64", - "ios-clang-x86", - "ios-clang-x64", - "ios-clang-arm", - "ios-clang-arm64", - "windows-clang-x86", - "windows-clang-x64", - "windows-clang-arm", - "windows-clang-arm64", - "linux-gcc-x86", - "linux-gcc-x64", - "linux-gcc-arm" - ] + "description": "An optional key that indicates the preferred IntelliSense mode. Mode used for computing IntelliSense information in Visual Studio and Visual Studio Code." }, "intelliSenseOptions": { "type": "object", @@ -171,7 +150,8 @@ "type": "string", "description": "A command line tool (specified as a command line program + arguments, e.g. \"gencache.bat debug\") to generate the CMake cache. This command will run from the shell in the preset’s specified environment when cache generation is invoked. This key is only supported by the \"Open Existing Cache\" scenario in Visual Studio." } - } + }, + "additionalProperties": true }, "microsoft.com/VisualStudioRemoteSettings/CMake/1.0": { "type": "object", @@ -284,7 +264,8 @@ "default": false, "description": "If true, Visual Studio will always use the WSL1 toolset when targeting WSL from Visual Studio. The WSL1 toolset executes all commands locally and relies on Windows drives mounted under the /mnt folder to access local source files from WSL. These operations may be slower with WSL2." } - } + }, + "additionalProperties": true } } }, diff --git a/schemas/CMakePresets-v6-schema.json b/schemas/CMakePresets-v6-schema.json index 828ce22dfb..9b9f7a4952 100644 --- a/schemas/CMakePresets-v6-schema.json +++ b/schemas/CMakePresets-v6-schema.json @@ -98,28 +98,7 @@ }, "intelliSenseMode": { "type": "string", - "description": "An optional key that indicates the preferred IntelliSense mode. Mode used for computing IntelliSense information in Visual Studio and Visual Studio Code.", - "enum": [ - "windows-msvc-x86", - "windows-msvc-x64", - "windows-msvc-arm", - "windows-msvc-arm64", - "android-clang-x86", - "android-clang-x64", - "android-clang-arm", - "android-clang-arm64", - "ios-clang-x86", - "ios-clang-x64", - "ios-clang-arm", - "ios-clang-arm64", - "windows-clang-x86", - "windows-clang-x64", - "windows-clang-arm", - "windows-clang-arm64", - "linux-gcc-x86", - "linux-gcc-x64", - "linux-gcc-arm" - ] + "description": "An optional key that indicates the preferred IntelliSense mode. Mode used for computing IntelliSense information in Visual Studio and Visual Studio Code." }, "intelliSenseOptions": { "type": "object", @@ -171,7 +150,8 @@ "type": "string", "description": "A command line tool (specified as a command line program + arguments, e.g. \"gencache.bat debug\") to generate the CMake cache. This command will run from the shell in the preset’s specified environment when cache generation is invoked. This key is only supported by the \"Open Existing Cache\" scenario in Visual Studio." } - } + }, + "additionalProperties": true }, "microsoft.com/VisualStudioRemoteSettings/CMake/1.0": { "type": "object", @@ -284,7 +264,8 @@ "default": false, "description": "If true, Visual Studio will always use the WSL1 toolset when targeting WSL from Visual Studio. The WSL1 toolset executes all commands locally and relies on Windows drives mounted under the /mnt folder to access local source files from WSL. These operations may be slower with WSL2." } - } + }, + "additionalProperties": true } } }, diff --git a/schemas/CMakePresets-v7-schema.json b/schemas/CMakePresets-v7-schema.json index d17a2fffe0..84e13dac16 100644 --- a/schemas/CMakePresets-v7-schema.json +++ b/schemas/CMakePresets-v7-schema.json @@ -98,28 +98,7 @@ }, "intelliSenseMode": { "type": "string", - "description": "An optional key that indicates the preferred IntelliSense mode. Mode used for computing IntelliSense information in Visual Studio and Visual Studio Code.", - "enum": [ - "windows-msvc-x86", - "windows-msvc-x64", - "windows-msvc-arm", - "windows-msvc-arm64", - "android-clang-x86", - "android-clang-x64", - "android-clang-arm", - "android-clang-arm64", - "ios-clang-x86", - "ios-clang-x64", - "ios-clang-arm", - "ios-clang-arm64", - "windows-clang-x86", - "windows-clang-x64", - "windows-clang-arm", - "windows-clang-arm64", - "linux-gcc-x86", - "linux-gcc-x64", - "linux-gcc-arm" - ] + "description": "An optional key that indicates the preferred IntelliSense mode. Mode used for computing IntelliSense information in Visual Studio and Visual Studio Code." }, "intelliSenseOptions": { "type": "object", @@ -171,7 +150,8 @@ "type": "string", "description": "A command line tool (specified as a command line program + arguments, e.g. \"gencache.bat debug\") to generate the CMake cache. This command will run from the shell in the preset’s specified environment when cache generation is invoked. This key is only supported by the \"Open Existing Cache\" scenario in Visual Studio." } - } + }, + "additionalProperties": true }, "microsoft.com/VisualStudioRemoteSettings/CMake/1.0": { "type": "object", @@ -284,7 +264,8 @@ "default": false, "description": "If true, Visual Studio will always use the WSL1 toolset when targeting WSL from Visual Studio. The WSL1 toolset executes all commands locally and relies on Windows drives mounted under the /mnt folder to access local source files from WSL. These operations may be slower with WSL2." } - } + }, + "additionalProperties": true } } }, diff --git a/schemas/CMakePresets-v8-schema.json b/schemas/CMakePresets-v8-schema.json index f0b3dc244c..27ed8c5f16 100644 --- a/schemas/CMakePresets-v8-schema.json +++ b/schemas/CMakePresets-v8-schema.json @@ -102,28 +102,7 @@ }, "intelliSenseMode": { "type": "string", - "description": "An optional key that indicates the preferred IntelliSense mode. Mode used for computing IntelliSense information in Visual Studio and Visual Studio Code.", - "enum": [ - "windows-msvc-x86", - "windows-msvc-x64", - "windows-msvc-arm", - "windows-msvc-arm64", - "android-clang-x86", - "android-clang-x64", - "android-clang-arm", - "android-clang-arm64", - "ios-clang-x86", - "ios-clang-x64", - "ios-clang-arm", - "ios-clang-arm64", - "windows-clang-x86", - "windows-clang-x64", - "windows-clang-arm", - "windows-clang-arm64", - "linux-gcc-x86", - "linux-gcc-x64", - "linux-gcc-arm" - ] + "description": "An optional key that indicates the preferred IntelliSense mode. Mode used for computing IntelliSense information in Visual Studio and Visual Studio Code." }, "intelliSenseOptions": { "type": "object", @@ -175,7 +154,8 @@ "type": "string", "description": "A command line tool (specified as a command line program + arguments, e.g. \"gencache.bat debug\") to generate the CMake cache. This command will run from the shell in the preset’s specified environment when cache generation is invoked. This key is only supported by the \"Open Existing Cache\" scenario in Visual Studio." } - } + }, + "additionalProperties": true }, "microsoft.com/VisualStudioRemoteSettings/CMake/1.0": { "type": "object", @@ -288,7 +268,8 @@ "default": false, "description": "If true, Visual Studio will always use the WSL1 toolset when targeting WSL from Visual Studio. The WSL1 toolset executes all commands locally and relies on Windows drives mounted under the /mnt folder to access local source files from WSL. These operations may be slower with WSL2." } - } + }, + "additionalProperties": true } } }, diff --git a/schemas/kits-schema.json b/schemas/kits-schema.json index b6bc83b9a6..62b20b2ff6 100644 --- a/schemas/kits-schema.json +++ b/schemas/kits-schema.json @@ -55,6 +55,13 @@ "type": "string", "description": "Architecture to target" }, + "visualStudioArguments": { + "type": "array", + "description": "Arguments to vcvarsall.bat", + "items": { + "type": "string" + } + }, "environmentSetupScript": { "type": "string", "description": "The absolute path to a script that modifies the environment for the Kit" @@ -72,7 +79,19 @@ "type": "object", "patternProperties": { ".*": { - "description": "Value for the CMake Setting" + "oneOf": [ + { + "type": "string", + "description": "Value for the CMake Setting. Semicolons in strings are escaped." + }, + { + "type": "array", + "items": { + "type": "string" + }, + "description": "Values joined with semicolons to form a CMake list without escaping." + } + ] } } }, diff --git a/src/cmakeBuildRunner.ts b/src/cmakeBuildRunner.ts index 058ae12f6c..06aaaba9d9 100644 --- a/src/cmakeBuildRunner.ts +++ b/src/cmakeBuildRunner.ts @@ -32,17 +32,25 @@ export class CMakeBuildRunner { this.setBuildInProgress(true); } - public async setBuildProcessForTask(taskExecutor: vscode.TaskExecution): Promise { + public async setBuildProcessForTask(taskExecutor: vscode.TaskExecution, exitCodePromise?: Promise): Promise { this.taskExecutor = taskExecutor; - this.currentBuildProcess = { child: undefined, result: new Promise(resolve => { - const disposable: vscode.Disposable = vscode.tasks.onDidEndTask((endEvent: vscode.TaskEndEvent) => { - if (endEvent.execution === this.taskExecutor) { - this.taskExecutor = undefined; - disposable.dispose(); - resolve({ retc: 0, stdout: '', stderr: '' }); - } - }); - })}; + if (exitCodePromise) { + // Use the direct exit code promise from the CustomBuildTaskTerminal (most reliable). + this.currentBuildProcess = { child: undefined, result: exitCodePromise.then(exitCode => ({ + retc: exitCode, stdout: '', stderr: '' + }))}; + } else { + // Fallback: listen for task process end event. + this.currentBuildProcess = { child: undefined, result: new Promise(resolve => { + const disposable: vscode.Disposable = vscode.tasks.onDidEndTaskProcess((endEvent: vscode.TaskProcessEndEvent) => { + if (endEvent.execution === this.taskExecutor) { + this.taskExecutor = undefined; + disposable.dispose(); + resolve({ retc: endEvent.exitCode ?? null, stdout: '', stderr: '' }); + } + }); + })}; + } this.setBuildInProgress(true); } diff --git a/src/cmakeListsModifier.ts b/src/cmakeListsModifier.ts new file mode 100644 index 0000000000..f5bc0d43c0 --- /dev/null +++ b/src/cmakeListsModifier.ts @@ -0,0 +1,2106 @@ +import CMakeProject from "@cmt/cmakeProject"; +import { ModifyListsSettings } from '@cmt/config'; +import * as codeModel from '@cmt/drivers/codeModel'; +import * as logging from '@cmt/logging'; +import * as vscode from 'vscode'; +import { isFileInsideFolder, lightNormalizePath, platformNormalizePath, platformNormalizeUri, platformPathEquivalent, quickPick, splitPath } from "@cmt/util"; +import path = require("path"); +import rollbar from "@cmt/rollbar"; +import * as minimatch from 'minimatch'; +import { CMakeCache } from "@cmt/cache"; +import { CMakeAST, CMakeParser, CommandInvocationAST, Token } from "@cmt/cmakeParser"; +import * as nls from 'vscode-nls'; + +nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })(); +const localize: nls.LocalizeFunc = nls.loadMessageBundle(); +const log = logging.createLogger('cmakeListsModifier'); + +const LIST_KEYWORDS = ['APPEND', 'PREPEND', 'INSERT']; + +// Debounce interval for batching file events (in ms) +const FILE_EVENT_DEBOUNCE_MS = 300; + +/** + * Represents a single edit candidate with all necessary information for UI and application + */ +export interface CandidateEdit { + /** The document URI to edit */ + uri: vscode.Uri; + /** The range to modify (for deletions) or position to insert at */ + range: vscode.Range; + /** The new text to insert (empty string for deletions) */ + newText: string; + /** Short label for QuickPick display */ + label: string; + /** Description for QuickPick */ + description: string; + /** Detail text for QuickPick */ + detail: string; + /** Sort priority (lower = better) */ + sortKeys: (number | string)[]; + /** Single-line preview of the change */ + previewSnippet: string; + /** The source list this edit belongs to */ + sourceList?: SourceList; + /** The target this edit relates to */ + target?: codeModel.CodeModelTarget; + /** Whether this is a deletion or insertion */ + isDeletion: boolean; + /** The source file being added/removed */ + sourceUri: vscode.Uri; +} + +/** + * Result of candidate collection + */ +interface AddCandidatesResult { + candidates: CandidateEdit[]; + sourceList?: SourceList; + /** Whether candidates are variable source lists (vs target source lists) */ + isVariableCandidate?: boolean; + error?: string; + info?: string; +} + +/** + * Structured error with optional file URI for "Open File" action + */ +interface EditError { + message: string; + fileUri?: vscode.Uri; +} + +interface RemoveCandidatesResult { + candidates: CandidateEdit[]; + errors: EditError[]; +} + +/** + * The order of identifiers in the following identifier lists affect sort order + * in QuickPicks. Lower indices get sorted earlier. + */ +const SOURCE_SCOPES = ['PRIVATE', 'INTERFACE', 'PUBLIC']; +const HEADER_SCOPES = ['PUBLIC', 'PRIVATE', 'INTERFACE']; + +/* Language extensions from CMake latest docs: https://cmake.org/cmake/help/latest/prop_sf/LANGUAGE.html */ +const LANGUAGE_EXTENSIONS: {[name: string]: {source: string[]; cxxModule?: string[]; header?: string[]}} = { + 'ASM': { + source: [ + 's', 'S', 'asm', 'abs', 'msa', 'nas', 's43', 's51', 's85', 's90', + // ASM_NASM + 'nasm' + ] + }, + 'C': { + source: [ 'c', 'm' ], + header: [ 'h', 'H' ] + }, + 'CXX': { + source: [ + 'C', 'c++', 'cc', 'cpp', 'cxx', 'CPP', 'M', 'm', 'mm', 'mpp' + ], + cxxModule: [ + 'ixx', 'cppm', 'ccm', 'cxxm', 'c++m' + ], + header: ['inl', 'h', 'hpp', 'HPP', 'H'] + }, + 'OBJC': { + source: ['m'], + header: ['h', 'H'] + }, + 'OBJCXX': { + source: ['M', 'm', 'mm'], + header: ['inl', 'h', 'hpp', 'HPP', 'H'] + }, + 'Fortran': { + source: [ + 'f', 'F', 'fpp', 'FPP', 'f77', 'F77', 'f90', 'F90', + 'for', 'For', 'FOR', 'f95', 'F95', 'f03', 'F03', 'f08', 'F08', + 'cuf', 'CUF' + ], + header: ['h', 'H'] + }, + 'CUDA': { source: ['cu'] }, + 'Java': { source: ['java'] }, + 'CSharp': { + source: ['cs'], + header: ['inl', 'h', 'hpp', 'HPP', 'H'] + }, + 'Swift': { source: ['swift'] }, + 'SWIG': { source: ['i', 'swg'] }, + 'HIP': { source: ['hip'] }, + 'ISPC': { source: ['ispc'] }, + 'RC': { source: ['rc', 'RC'] } +}; + +export class CMakeListsModifier implements vscode.Disposable { + private projects = new Map(); + private documentSelector: vscode.DocumentFilter[] = []; + private codeModelDisposables: vscode.Disposable[] = []; + + // Known source file extensions for path-based filtering (used for deleted files) + private knownExtensions = new Set(); + + // Set when applyEdits succeeds, cleared on updateCodeModel. When true, the + // backtrace graph's line numbers are potentially stale and the AST-based + // fallback should be used instead. + private codeModelDirty = false; + + // Debounce state for batching file events + private pendingAddFiles: vscode.Uri[] = []; + private pendingDeleteFiles: vscode.Uri[] = []; + private addDebounceTimer?: NodeJS.Timeout; + private deleteDebounceTimer?: NodeJS.Timeout; + + constructor() { + } + + updateCodeModel(project: CMakeProject, cache: CMakeCache) { + this.projects.set(project.sourceDir, project); + this.codeModelDirty = false; + const model = project.codeModelContent; + const languages = new Set(); + if (model) { + addAll(languages, ...modelLanguages(model)); + } else { + // TODO: There's no support for editing list files without a code + // model yet, so these fallbacks aren't really accomplishing + // anything. + const cacheLanguages = cacheCompilerLanguages(cache); + addAll(languages, ...cacheLanguages); + if (!cacheLanguages.length) { + addAll(languages, 'C', 'CXX'); + } + } + const extensions = new Set(); + // Add hard-coded extensions + for (const lang of languages) { + const langExtensionGroups = LANGUAGE_EXTENSIONS[lang]; + if (langExtensionGroups) { + addAll(extensions, ...Object.values(langExtensionGroups).flat(1)); + } + } + // Add in any extensions explicitly mentioned by the toolchain. + // Toolchains don't include header file extensions, so this can only + // ever supplement hard-coded extensions. + model?.toolchains?.forEach(toolchain => { + const cmToolchain = toolchain ? toolchain as codeModel.CodeModelToolchain : toolchain; + addAll(extensions, ...cmToolchain.sourceFileExtensions || []); + }); + + this.codeModelDispose(); + const extensionGlobs = Array.from(extensions).map(ext => `**/*.${ext}`); + this.documentSelector = extensionGlobs.map(glob => ({ scheme: 'file', pattern: glob })); + this.knownExtensions = extensions; + + vscode.workspace.onDidCreateFiles(this.filesCreated, this, this.codeModelDisposables); + vscode.workspace.onDidDeleteFiles(this.filesDeleted, this, this.codeModelDisposables); + } + + /** + * Find the project whose source directory contains the given URI. + * When multiple projects match, the most specific (longest path) wins. + */ + private projectForUri(uri: vscode.Uri): CMakeProject | undefined { + let best: CMakeProject | undefined; + let bestLen = -1; + for (const [sourceDir, proj] of this.projects) { + if (isFileInsideFolder(uri, sourceDir) && sourceDir.length > bestLen) { + best = proj; + bestLen = sourceDir.length; + } + } + return best; + } + + private filesCreated(e: vscode.FileCreateEvent) { + rollbar.invokeAsync(localize('add.newly.created.files', 'Add newly created files to CMakeLists.txt'), async () => { + for (const uri of e.files) { + if (await this.isSourceFile(uri)) { + this.pendingAddFiles.push(uri); + } + } + + // Debounce: wait for more files before processing + if (this.addDebounceTimer) { + clearTimeout(this.addDebounceTimer); + } + this.addDebounceTimer = setTimeout(() => { + this.processPendingAddFiles().catch(err => rollbar.exception(localize('error.processing.add.files', 'Error processing added files'), err as Error)); + }, FILE_EVENT_DEBOUNCE_MS); + }); + } + + private async processPendingAddFiles() { + const files = [...this.pendingAddFiles]; + this.pendingAddFiles = []; + + if (files.length === 0) { + return; + } + + if (files.length === 1) { + const project = this.projectForUri(files[0]); + await this.addSourceFileToCMakeLists(files[0], project, false); + } else { + // Batch processing for multiple files + await this.addMultipleSourceFilesToCMakeLists(files); + } + } + + private filesDeleted(e: vscode.FileDeleteEvent) { + rollbar.invokeAsync(localize('remove.deleted.file', 'Remove a deleted file from CMakeLists.txt'), async () => { + for (const uri of e.files) { + // Filter by extension since we can't open deleted files + const ext = path.extname(uri.fsPath).slice(1); + if (ext && this.knownExtensions.has(ext)) { + this.pendingDeleteFiles.push(uri); + } + } + + // Debounce: wait for more files before processing + if (this.deleteDebounceTimer) { + clearTimeout(this.deleteDebounceTimer); + } + this.deleteDebounceTimer = setTimeout(() => { + this.processPendingDeleteFiles().catch(err => rollbar.exception(localize('error.processing.delete.files', 'Error processing deleted files'), err as Error)); + }, FILE_EVENT_DEBOUNCE_MS); + }); + } + + private async processPendingDeleteFiles() { + const files = [...this.pendingDeleteFiles]; + this.pendingDeleteFiles = []; + + if (files.length === 0) { + return; + } + + if (files.length === 1) { + const project = this.projectForUri(files[0]); + await this.removeSourceFileFromCMakeLists(files[0], project, false); + } else { + // Batch processing for multiple files + await this.removeMultipleSourceFilesFromCMakeLists(files); + } + } + + private async isSourceFile(uri: vscode.Uri) { + const textDocument = await vscode.workspace.openTextDocument(uri); + return vscode.languages.match(this.documentSelector, textDocument); + } + + /** + * Collect all candidate edits for adding a source file. + * This separates discovery from interaction. + */ + private async collectAddCandidates( + newSourceUri: vscode.Uri, + project: CMakeProject, + settings: ModifyListsSettings + ): Promise { + const model = project.codeModelContent; + if (!model) { + return { candidates: [], error: localize('add.file.no.code.model', 'Adding a file without a valid code model') }; + } + + const buildType = await project.currentBuildType(); + const newSourceFileName = path.basename(newSourceUri.fsPath); + const cmakeListsASTs = await findCMakeLists(project, newSourceUri); + + function sourceListCompare(a: SourceList, b: SourceList) { + return a.compare(newSourceUri, b); + } + + // Try variable source lists first + let varSourceLists = variableSourceLists(cmakeListsASTs, project, settings); + varSourceLists.sort(sourceListCompare); + if (settings.variableSelection === 'askFirstParentDir') { + varSourceLists = varSourceLists.filter(sourceList => platformPathEquivalent( + sourceList.document.fileName, + varSourceLists[0].document.fileName + )); + } + + const tryVariables = varSourceLists.length && settings.variableSelection !== 'never'; + if (tryVariables) { + // Check if source already in variable lists + for (const sourceList of varSourceLists) { + const err = checkSourceInInvocation(sourceList.invocation, sourceList.destination, newSourceUri); + if (err) { + return { candidates: [], info: err }; + } + } + + // Build candidates from variable source lists + const candidates = varSourceLists.map(sourceList => + this.buildAddCandidate(sourceList, newSourceUri)); + + return { candidates, sourceList: varSourceLists[0], isVariableCandidate: true }; + } + + // Try target source commands + const allTargets = allBuildTargets(model, buildType); + const references = sourceFileTargets(allTargets, newSourceUri); + if (references.length) { + const msg = localize('file.already.in.target', '{0} already in target {1}.', newSourceFileName, references[0].name); + return { candidates: [], info: msg }; + } + + let targets = candidateTargetsForSource(allTargets, newSourceUri); + targets.sort(targetCompare); + if (settings.targetSelection === 'askNearestSourceDir') { + targets = targets.filter(target => platformPathEquivalent( + target.sourceDirectory as string, + targets[0].sourceDirectory as string + )); + } + if (!targets.length) { + return { + candidates: [], + error: localize('no.targets.found', 'No targets found. {0} not added to build system.', newSourceFileName) + }; + } + + // When a CMakeLists.txt exists in the same directory as the new + // source file, restrict target source command candidates to that + // local file. This prevents files from a subdirectory being + // silently added to a parent CMakeLists.txt that belongs to a + // different scope (e.g. adding utils/file.cpp into the parent's + // add_executable instead of the local target_sources). + const fileDir = path.dirname(newSourceUri.fsPath); + const hasLocalCMakeLists = cmakeListsASTs.length > 0 && + platformPathEquivalent(path.dirname(cmakeListsASTs[0].document.fileName), fileDir); + const invocationFilter = hasLocalCMakeLists + ? (i: CommandInvocation) => platformPathEquivalent(path.dirname(i.document.fileName), fileDir) + : (i: CommandInvocation) => isFileInsideFolder(newSourceUri, path.dirname(i.document.fileName)); + + // Collect candidates from all targets and invocations + const candidates: CandidateEdit[] = []; + for (const target of targets) { + const invocations = await targetSourceCommandInvocations( + project, target, cmakeListsASTs, settings.targetSourceCommands, + this.codeModelDirty, invocationFilter); + + // Check if source already in invocations + for (const invocation of invocations) { + const err = checkSourceInInvocation(invocation, target.name, newSourceUri); + if (err) { + // Return as info, not error - let caller decide severity based on 'always' + return { candidates: [], info: err }; + } + } + + // Sort the invocations using the compare function + const sortedInvocations = [...invocations].sort((a, b) => + targetSourceCommandInvocationCompare(settings.targetSourceCommands, a, b)); + + for (const invocation of sortedInvocations) { + const sourceLists = targetSourceListOptions( + project, target, invocation, newSourceUri, settings); + sourceLists.sort(sourceListCompare); + + for (const sourceList of sourceLists) { + candidates.push(this.buildAddCandidate(sourceList, newSourceUri, target)); + } + } + } + + if (!candidates.length) { + return { + candidates: [], + error: localize('no.source.command.invocations', 'No source command invocations found. {0} not added to build system.', newSourceFileName) + }; + } + + // Sort all candidates + candidates.sort((a, b) => compareSortKeys(a.sortKeys, b.sortKeys)); + + return { candidates }; + } + + private buildAddCandidate( + sourceList: SourceList, + newSourceUri: vscode.Uri, + target?: codeModel.CodeModelTarget + ): CandidateEdit { + const insertPos = sourceList.insertPosition; + const indent = freshLineIndent(sourceList.invocation, insertPos); + const newSourceArgument = quoteArgument(sourceList.relativePath(newSourceUri)); + const newText = `\n${indent}${newSourceArgument}`; + + const document = sourceList.document; + const lineText = document.lineAt(insertPos.line).text; + + return { + uri: document.uri, + range: new vscode.Range(insertPos, insertPos), + newText, + label: sourceList.label, + description: target?.name || sourceList.destination, + detail: `${path.relative(path.dirname(document.fileName), document.fileName)}:${insertPos.line + 1}`, + sortKeys: sourceList.getSortKeys(newSourceUri), + previewSnippet: `${lineText.trim()} + ${newSourceArgument}`, + sourceList, + target, + isDeletion: false, + sourceUri: newSourceUri + }; + } + + /** + * Collect all candidate edits for removing a source file. + */ + private async collectRemoveCandidates( + deletedUri: vscode.Uri, + project: CMakeProject, + settings: ModifyListsSettings + ): Promise { + const model = project.codeModelContent; + if (!model) { + return { candidates: [], errors: [{ message: localize('delete.file.no.code.model', 'Deleting a file without a valid code model') }] }; + } + + const buildType = await project.currentBuildType(); + const cmakeListsASTs = await findCMakeLists(project, deletedUri); + const candidates: CandidateEdit[] = []; + const errors: EditError[] = []; + + // Check variable source lists + const varSourceLists = variableSourceLists(cmakeListsASTs, project, settings); + const seen = new Set(); + if (varSourceLists.length && settings.variableSelection !== 'never') { + for (const sourceList of varSourceLists) { + const key = `${sourceList.document.fileName}:${sourceList.invocation.offset}`; + if (seen.has(key)) { + continue; + } + seen.add(key); + const deleteEdits = this.buildDeleteCandidates( + deletedUri, sourceList.invocation, sourceList.label); + if (deleteEdits.dirtyError) { + errors.push(deleteEdits.dirtyError); + } + candidates.push(...deleteEdits.candidates); + } + } + + // Check target source lists + const targets = sourceFileTargets(allBuildTargets(model, buildType), deletedUri); + for (const target of targets) { + const invocations = await targetSourceCommandInvocations( + project, target, cmakeListsASTs, settings.targetSourceCommands, this.codeModelDirty); + for (const invocation of invocations) { + const deleteEdits = this.buildDeleteCandidates( + deletedUri, invocation, `target ${target.name} sources`, target); + if (deleteEdits.dirtyError) { + errors.push(deleteEdits.dirtyError); + } + candidates.push(...deleteEdits.candidates); + } + } + + return { candidates, errors }; + } + + private buildDeleteCandidates( + deletedUri: vscode.Uri, + invocation: CommandInvocation, + listDescription: string, + target?: codeModel.CodeModelTarget + ): { candidates: CandidateEdit[]; dirtyError?: EditError } { + const basename = path.basename(deletedUri.fsPath); + const { document, ast } = invocation; + const argIndices = findSourceInArgs(deletedUri, invocation); + + if (argIndices.length && document.isDirty) { + return { + candidates: [], + dirtyError: { + message: localize('not.modifying.unsaved.delete', 'Not modifying {0} to delete {1} because it has unsaved changes.', document.fileName, basename), + fileUri: document.uri + } + }; + } + + const candidates: CandidateEdit[] = []; + for (const i of argIndices) { + const arg = ast.args[i]; + const prevToken = i ? ast.args[i - 1] : ast.lparen; + const delRange = new vscode.Range( + document.positionAt(prevToken.endOffset), + document.positionAt(arg.endOffset) + ); + + const lineText = document.lineAt(document.positionAt(arg.offset).line).text; + + candidates.push({ + uri: document.uri, + range: delRange, + newText: '', + label: basename, + description: listDescription, + detail: `${path.basename(document.fileName)}:${document.positionAt(arg.offset).line + 1}`, + sortKeys: [0], + previewSnippet: lineText.trim(), + target, + isDeletion: true, + sourceUri: deletedUri + }); + } + + return { candidates }; + } + + /** + * Pick the best candidate using QuickPick steps when needed. + * Returns null if user cancels. + */ + private async pickAddCandidate( + candidates: CandidateEdit[], + settings: ModifyListsSettings, + newSourceFileName: string, + isVariableCandidate: boolean + ): Promise { + if (candidates.length === 0) { + return null; + } + + // Determine selection mode based on candidate source + // Variable candidates obey variableSelection, target candidates obey targetSelection + const selectionMode = isVariableCandidate + ? settings.variableSelection + : settings.targetSelection; + + if (candidates.length === 1) { + return candidates[0]; + } + + // In 'auto' mode for variable candidates, auto-select the first + if (isVariableCandidate && selectionMode === 'auto') { + return candidates[0]; + } + + // For variable candidates, just show the variable list picker + if (isVariableCandidate) { + const varItems = candidates.map(c => ({ + label: c.label, + description: c.description, + detail: c.previewSnippet, + payload: c + })); + + return quickPick(varItems, { + title: localize('add.to.which.variable', 'CMake: Add {0} to which variable?', newSourceFileName) + }); + } + + // Group by unique targets + const targetGroups = new Map(); + for (const candidate of candidates) { + const key = candidate.target?.name || candidate.sourceList?.destination || ''; + if (!targetGroups.has(key)) { + targetGroups.set(key, []); + } + targetGroups.get(key)!.push(candidate); + } + + let selectedCandidate = candidates[0]; + + // If multiple targets, ask which target + if (targetGroups.size > 1) { + const targetItems = Array.from(targetGroups.entries()).map(([name, cands]) => ({ + label: name, + description: cands[0].target?.type, + detail: cands[0].detail, + payload: cands[0] + })); + + const selected = await quickPick(targetItems, { + title: localize('add.to.which.target', 'CMake: Add {0} to which target?', newSourceFileName) + }); + if (!selected) { + return null; + } + selectedCandidate = selected; + } + + // Filter candidates to the selected target + const targetName = selectedCandidate.target?.name || selectedCandidate.sourceList?.destination || ''; + let targetCandidates = candidates.filter(c => + (c.target?.name || c.sourceList?.destination || '') === targetName); + + // Group by command invocation within the selected target + const invocationGroups = new Map(); + for (const c of targetCandidates) { + const inv = c.sourceList?.invocation; + const key = inv ? `${inv.document.fileName}:${inv.line}` : ''; + if (!invocationGroups.has(key)) { + invocationGroups.set(key, []); + } + invocationGroups.get(key)!.push(c); + } + + // If multiple command invocations, use targetCommandInvocationSelection + const invocationSelection = settings.targetCommandInvocationSelection; + if (invocationGroups.size > 1 && invocationSelection !== 'auto') { + let invocationEntries = Array.from(invocationGroups.entries()); + + // 'askFirstParentDir' restricts to invocations from the same file + // as the first (best-sorted) invocation + if (invocationSelection === 'askFirstParentDir' && invocationEntries.length > 0) { + const firstFile = invocationEntries[0][1][0].sourceList?.invocation?.document.fileName; + if (firstFile) { + invocationEntries = invocationEntries.filter(([, cands]) => + platformPathEquivalent( + cands[0].sourceList?.invocation?.document.fileName ?? '', + firstFile)); + } + } + + if (invocationEntries.length > 1) { + const invItems = invocationEntries.map(([, cands]) => { + const inv = cands[0].sourceList?.invocation; + const lineText = inv ? inv.document.lineAt(inv.line).text.trim() : ''; + return { + label: lineText, + detail: inv ? `${path.relative(path.dirname(inv.document.fileName), inv.document.fileName)}:${inv.line + 1}` : '', + description: inv && inv.command !== inv.builtin ? inv.builtin : '', + payload: cands[0] + }; + }); + + const selectedInv = await quickPick(invItems, { + title: localize('add.to.which.invocation', + 'CMake: Add {0} to which command invocation of {1}?', + newSourceFileName, targetName), + matchOnDescription: true, + matchOnDetail: true + }); + if (!selectedInv) { + return null; + } + selectedCandidate = selectedInv; + // Restrict to candidates from the selected invocation + const selectedInvKey = selectedCandidate.sourceList?.invocation + ? `${selectedCandidate.sourceList.invocation.document.fileName}:${selectedCandidate.sourceList.invocation.line}` + : ''; + targetCandidates = targetCandidates.filter(c => { + const inv = c.sourceList?.invocation; + return inv ? `${inv.document.fileName}:${inv.line}` === selectedInvKey : false; + }); + } + } + + // If multiple source lists within the selected invocation, ask which one + if (targetCandidates.length > 1 && settings.scopeSelection !== 'auto') { + const listItems = targetCandidates.map(c => ({ + label: c.label, + description: c.description, + detail: c.previewSnippet, + payload: c + })); + + const selected = await quickPick(listItems, { + title: localize('add.to.which.scope.fileset.keyword', 'CMake: Add {0} to which Scope, File Set, or Keyword?', newSourceFileName) + }); + if (!selected) { + return null; + } + selectedCandidate = selected; + } + + return selectedCandidate; + } + + /** + * Apply edits with the Refactor Preview when the corresponding setting + * is `'ask'`. VS Code's native Refactor Preview shows a side-by-side + * diff and lets the user accept or reject each change — much more + * intuitive than a custom confirmation dialog. + */ + private async reviewAndApply( + edits: CandidateEdit[], + settings: ModifyListsSettings, + reviewMode: 'add' | 'remove' + ): Promise { + const askSetting = reviewMode === 'add' + ? settings.addNewSourceFiles + : settings.removeDeletedSourceFiles; + const needsConfirmation = askSetting === 'ask'; + return this.applyEdits(edits, needsConfirmation); + } + + /** + * Apply the edits to the workspace + */ + private async applyEdits(edits: CandidateEdit[], needsConfirmation: boolean = false): Promise { + if (edits.length === 0) { + return false; + } + + // Group edits by document URI + const editsByDoc = new Map(); + for (const edit of edits) { + const key = edit.uri.toString(); + if (!editsByDoc.has(key)) { + const doc = await vscode.workspace.openTextDocument(edit.uri); + editsByDoc.set(key, { doc, edits: [] }); + } + editsByDoc.get(key)!.edits.push(edit); + } + + // Check for dirty documents - skip them and continue with clean ones + const dirtyDocs: vscode.TextDocument[] = []; + const cleanDocs: string[] = []; + for (const [key, { doc }] of editsByDoc.entries()) { + if (doc.isDirty) { + dirtyDocs.push(doc); + } else { + cleanDocs.push(key); + } + } + + // If all docs are dirty, show error and bail + if (cleanDocs.length === 0 && dirtyDocs.length > 0) { + const open = localize('open.file', 'Open File'); + const choice = await vscode.window.showErrorMessage( + localize('not.modifying.unsaved.files', 'Cannot modify {0} because it has unsaved changes.', dirtyDocs[0].fileName), + open + ); + if (choice === open) { + await vscode.window.showTextDocument(dirtyDocs[0]); + } + return false; + } + + // If some docs are dirty, warn and continue with clean ones + if (dirtyDocs.length > 0) { + void vscode.window.showWarningMessage( + localize('skipping.unsaved.files', 'Skipping {0} file(s) with unsaved changes: {1}', + dirtyDocs.length, dirtyDocs.map(d => path.basename(d.fileName)).join(', '))); + } + + const workspaceEdit = new vscode.WorkspaceEdit(); + const editedDocs = new Set(); + + // Process each clean document's edits + for (const key of cleanDocs) { + const { doc, edits: docEdits } = editsByDoc.get(key)!; + + // Sort edits by position descending (apply from end to start to preserve offsets) + // For deletions, sort by end offset first for safety with adjacent ranges + // For same position, sort by source filename for deterministic ordering + const sortedEdits = [...docEdits].sort((a, b) => { + // For deletions, compare end offset first + if (a.isDeletion && b.isDeletion) { + const endCompare = b.range.end.compareTo(a.range.end); + if (endCompare !== 0) { + return endCompare; + } + } + const startCompare = b.range.start.compareTo(a.range.start); + if (startCompare !== 0) { + return startCompare; + } + // Same position: sort by source file name for deterministic order + return a.sourceUri.fsPath.localeCompare(b.sourceUri.fsPath); + }); + + // Combine inserts at the same position into a single insert + const combinedEdits: CandidateEdit[] = []; + for (const edit of sortedEdits) { + const last = combinedEdits[combinedEdits.length - 1]; + if (last && !edit.isDeletion && !last.isDeletion && + last.range.start.isEqual(edit.range.start)) { + // Combine: append this edit's text to maintain filename sort order + // (we sorted ascending by filename, so append preserves that order) + last.newText = last.newText + edit.newText; + } else { + combinedEdits.push({ ...edit }); + } + } + + // Apply combined edits + for (const edit of combinedEdits) { + if (edit.isDeletion) { + workspaceEdit.delete(edit.uri, edit.range, { + label: localize('edit.label.remove.source.file', 'CMake: Remove deleted source file'), + needsConfirmation + }); + } else { + workspaceEdit.insert(edit.uri, edit.range.start, edit.newText, { + label: localize('edit.label.add.source.file', 'CMake: Add new source file'), + needsConfirmation + }); + } + } + editedDocs.add(doc); + } + + if (editedDocs.size === 0) { + return false; + } + + try { + await vscode.workspace.applyEdit(workspaceEdit); + await Promise.all(Array.from(editedDocs).map(doc => doc.save())); + this.codeModelDirty = true; + log.info(localize('edits.applied.successfully', 'Successfully applied {0} CMake list edit(s).', edits.length)); + return true; + } catch (e) { + log.error(localize('edits.apply.failed', 'Failed to apply CMake list edits: {0}', String(e))); + void vscode.window.showErrorMessage(`${e}`); + return false; + } + } + + async addSourceFileToCMakeLists(uri?: vscode.Uri, project?: CMakeProject, always = true) { + uri = uri ?? vscode.window.activeTextEditor?.document.uri; + project = project ?? (uri ? this.projectForUri(uri) : undefined); + + if (!project) { + void vscode.window.showWarningMessage(localize('add.file.no.code.model', 'Adding a file without a valid code model')); + return; + } + + const settings = project.workspaceContext.config.modifyLists; + if (settings.addNewSourceFiles === 'no' && !always) { + return; + } + + if (uri?.scheme !== 'file') { + void vscode.window.showErrorMessage(localize('not.local.file.add', '{0} is not a local file. Not adding to CMake lists.', uri?.toString())); + return; + } + if (!project.codeModelContent) { + void vscode.window.showWarningMessage(localize('add.file.no.code.model', 'Adding a file without a valid code model')); + return; + } + + // Work around for focus race condition with Save As dialog closing. + // Only apply in the auto-triggered path (always=false) to avoid stealing + // editor focus when the user explicitly invokes the command. + if (!always) { + await this.workAroundSaveAsFocusBug(uri); + } + + const newSourceUri = uri; + const newSourceFileName = path.basename(newSourceUri.fsPath); + + // Step 1: Collect all candidates + const result = await this.collectAddCandidates(newSourceUri, project, settings); + + if (result.error) { + void vscode.window.showErrorMessage(result.error); + return; + } + if (result.info) { + if (always) { + void vscode.window.showErrorMessage(result.info); + } else { + void vscode.window.showInformationMessage(result.info); + } + return; + } + if (result.candidates.length === 0) { + void vscode.window.showErrorMessage( + localize('no.candidates.found', 'No suitable locations found to add {0}.', newSourceFileName)); + return; + } + + // Step 2: Pick candidate using QuickPick if needed + const selectedCandidate = await this.pickAddCandidate( + result.candidates, settings, newSourceFileName, result.isVariableCandidate ?? false); + if (!selectedCandidate) { + return; + } + + // Check for dirty document before applying + const doc = await vscode.workspace.openTextDocument(selectedCandidate.uri); + if (doc.isDirty) { + const open = localize('open.file', 'Open File'); + const choice = await vscode.window.showErrorMessage( + localize('not.modifying.unsaved.add', 'Not modifying {0} to add {1} because it has unsaved changes.', doc.fileName, newSourceFileName), + open + ); + if (choice === open) { + await vscode.window.showTextDocument(doc); + } + return; + } + + // Step 3: Apply the edit (Refactor Preview shown when 'ask' mode is active) + await this.reviewAndApply([selectedCandidate], settings, 'add'); + } + + /** + * Add multiple source files to CMake lists (batch operation) + */ + private async addMultipleSourceFilesToCMakeLists(uris: vscode.Uri[]) { + // Group files by project + const filesByProject = new Map(); + for (const uri of uris) { + const project = this.projectForUri(uri); + if (!project || !project.codeModelContent) { + continue; + } + const existing = filesByProject.get(project) ?? []; + existing.push(uri); + filesByProject.set(project, existing); + } + + for (const [project, projectUris] of filesByProject) { + const settings = project.workspaceContext.config.modifyLists; + if (settings.addNewSourceFiles === 'no') { + continue; + } + + // Check if user settings require interactive selection + // If so, fall back to per-file flow to respect user preferences + const needsInteractiveSelection = settings.variableSelection !== 'auto' || settings.targetSelection !== 'auto'; + + if (needsInteractiveSelection) { + // Fall back to processing files one at a time so user can pick for each. + // Pass always=true since user already consented via the notification. + for (const uri of projectUris) { + await this.addSourceFileToCMakeLists(uri, project, true); + } + continue; + } + + // Process files one at a time. Each successful edit shifts line + // numbers in CMakeLists.txt, so subsequent files must re-parse from + // disk to get correct offsets. + const errors: string[] = []; + let anyApplied = false; + + for (const uri of projectUris) { + if (uri.scheme !== 'file') { + continue; + } + + const result = await this.collectAddCandidates(uri, project, settings); + if (result.error) { + errors.push(result.error); + continue; + } + if (result.candidates.length === 0) { + continue; + } + + const best = result.candidates[0]; + if (await this.reviewAndApply([best], settings, 'add')) { + anyApplied = true; + } + } + + if (!anyApplied && errors.length > 0) { + void vscode.window.showErrorMessage(errors[0]); + } + } + } + + async removeSourceFileFromCMakeLists(uri?: vscode.Uri, project?: CMakeProject, always = true) { + uri = uri ?? vscode.window.activeTextEditor?.document.uri; + project = project ?? (uri ? this.projectForUri(uri) : undefined); + + if (!project) { + void vscode.window.showWarningMessage(localize('delete.file.no.code.model', 'Deleting a file without a valid code model')); + return; + } + + const settings = project.workspaceContext.config.modifyLists; + if (settings.removeDeletedSourceFiles === 'no' && !always) { + return; + } + + if (uri?.scheme !== 'file') { + void vscode.window.showErrorMessage(localize('not.local.file.remove', '{0} is not a local file. Not removing from CMake lists.', uri?.toString())); + return; + } + + if (!project.codeModelContent) { + void vscode.window.showWarningMessage(localize('delete.file.no.code.model', 'Deleting a file without a valid code model')); + return; + } + + const deletedUri = uri; + + // Step 1: Collect all deletion candidates + const result = await this.collectRemoveCandidates(deletedUri, project, settings); + + // Show any dirty file errors + for (const error of result.errors) { + const open = localize('open.file', 'Open File'); + const choice = await vscode.window.showErrorMessage(error.message, open); + if (choice === open && error.fileUri) { + try { + const doc = await vscode.workspace.openTextDocument(error.fileUri); + await vscode.window.showTextDocument(doc); + } catch (e) { + log.debug(localize('could.not.open.file', 'Could not open file {0}: {1}', error.fileUri.fsPath, String(e))); + } + } + } + + if (result.candidates.length === 0) { + if (always) { + void vscode.window.showErrorMessage(localize('file.not.found.in.cmake.lists', '{0} not found in CMake lists.', path.basename(deletedUri.fsPath))); + } + return; + } + + // Step 2: Review and apply + await this.reviewAndApply(result.candidates, settings, 'remove'); + } + + /** + * Remove multiple source files from CMake lists (batch operation) + */ + private async removeMultipleSourceFilesFromCMakeLists(uris: vscode.Uri[]) { + // Group files by project + const filesByProject = new Map(); + for (const uri of uris) { + if (uri.scheme !== 'file') { + continue; + } + const project = this.projectForUri(uri); + if (!project || !project.codeModelContent) { + continue; + } + const existing = filesByProject.get(project) ?? []; + existing.push(uri); + filesByProject.set(project, existing); + } + + for (const [project, projectUris] of filesByProject) { + const settings = project.workspaceContext.config.modifyLists; + if (settings.removeDeletedSourceFiles === 'no') { + continue; + } + + const allCandidates: CandidateEdit[] = []; + const allErrors: EditError[] = []; + + for (const uri of projectUris) { + const result = await this.collectRemoveCandidates(uri, project, settings); + allCandidates.push(...result.candidates); + allErrors.push(...result.errors); + } + + // Report first error if no candidates + if (allCandidates.length === 0 && allErrors.length > 0) { + void vscode.window.showErrorMessage(allErrors[0].message); + continue; + } + + if (allCandidates.length === 0) { + continue; + } + + // Review and apply all at once + await this.reviewAndApply(allCandidates, settings, 'remove'); + } + } + + private async workAroundSaveAsFocusBug(uri: vscode.Uri) { + const textDocument = await vscode.workspace.openTextDocument(uri); + await vscode.window.showTextDocument(textDocument); + } + + dispose() { + this.codeModelDispose(); + + if (this.addDebounceTimer) { + clearTimeout(this.addDebounceTimer); + } + if (this.deleteDebounceTimer) { + clearTimeout(this.deleteDebounceTimer); + } + } + + private codeModelDispose() { + this.codeModelDisposables.forEach(w => w.dispose()); + this.codeModelDisposables = []; + + // Clear any pending debounce timers to prevent stale callbacks + if (this.addDebounceTimer) { + clearTimeout(this.addDebounceTimer); + this.addDebounceTimer = undefined; + } + if (this.deleteDebounceTimer) { + clearTimeout(this.deleteDebounceTimer); + this.deleteDebounceTimer = undefined; + } + this.pendingAddFiles = []; + this.pendingDeleteFiles = []; + } +} + +function modelLanguages(model: codeModel.CodeModelContent) { + return model.configurations.flatMap(configuration => + configuration.projects.flatMap(project => + project.targets.flatMap(target => + target.fileGroups === undefined ? [] + : target.fileGroups.flatMap(fileGroup => + fileGroup.language === undefined ? [] + : fileGroup.language.startsWith('ASM') + ? 'ASM' + : fileGroup.language)))); +} + +function cacheCompilerLanguages(cache: CMakeCache) { + return cache.allEntries.flatMap(({ key }) => { + const match = key.match(/^CMAKE_(.*)_COMPILER$/); + return match ? match[1] : []; + }); +} + +/** + * Check if source is already in invocation without showing a message. + * Returns the error message string if found, or null if not found. + */ +function checkSourceInInvocation( + invocation: CommandInvocation, destination: string, sourceUri: vscode.Uri +): string | null { + const indices = findSourceInArgs(sourceUri, invocation); + if (!indices.length) { + return null; + } + const { document, ast: { args } } = invocation; + const line = document.positionAt(args[indices[0]].offset).line; + return localize('file.already.in.destination', '{0} already in {1} at {2}:{3}', sourceUri.fsPath, destination, document.fileName, line + 1); +} + +async function targetSourceCommandInvocations( + project: CMakeProject, + target: codeModel.CodeModelTarget, + cmakeListsASTs: CMakeAST[], + builtins: string[], + codeModelDirty = false, + invocationFilter?: (i: CommandInvocation) => boolean +) { + // When the code model is dirty (edits applied since last configure), the + // backtrace graph's line numbers are stale and cannot be trusted. Skip + // straight to the AST-based search which re-parses from disk. + if (target.backtraceGraph && !codeModelDirty) { + const fromBacktrace = await sourceCommandInvocationsFromBacktrace(project, target, builtins); + const filtered = invocationFilter ? fromBacktrace.filter(invocationFilter) : fromBacktrace; + if (filtered.length > 0) { + return filtered; + } + // Backtrace returned no matching results — fall back to AST-based + // search. + } + const fromAST = sourceCommandInvocationsFromCMakeLists(cmakeListsASTs, target, builtins); + return invocationFilter ? fromAST.filter(invocationFilter) : fromAST; +} + +function sourceCommandInvocationsFromCMakeLists( + cmakeListsASTs: CMakeAST[], target: codeModel.CodeModelTarget, builtins: string[] +) { + return topLevelInvocations(invocationsFromCMakeASTs(cmakeListsASTs)) + .filter(invocation => builtins.includes(invocation.command) + && invocation.ast.args.length > 0 + && invocation.ast.args[0].value === target.name); +} + +/** + * filter out invocations between function()/endfunction() or macro()/endmacro() + */ +function topLevelInvocations(allInvocations: CommandInvocation[]) { + const topLevelInvocations: CommandInvocation[] = []; + let depth = 0; + for (const invocation of allInvocations) { + if (['function', 'macro'].includes(invocation.command)) { + depth++; + } else if (['endfunction', 'endmacro'].includes(invocation.command)) { + depth--; + } else if (!depth) { + topLevelInvocations.push(invocation); + } + } + return topLevelInvocations; +} + +async function findCMakeLists(project: CMakeProject, newSourceUri: vscode.Uri) { + const cmakeListsASTs: CMakeAST[] = []; + let cmlUri = vscode.Uri.joinPath(newSourceUri, '..', 'CMakeLists.txt'); + while (isFileInsideFolder(cmlUri, project.sourceDir)) { + try { + const cml = await vscode.workspace.openTextDocument(cmlUri); + try { + cmakeListsASTs.push(new CMakeParser(cml).parseDocument()); + } catch (e) { + void vscode.window.showWarningMessage(localize('parse.error.examining.cmake.lists', 'Parse error while examining CMakeLists.txt files. Details: {0}', String(e))); + } + } catch (e) { + log.debug(localize('could.not.open.cmake.lists', 'Could not open {0}: {1}', cmlUri.fsPath, String(e))); + } + cmlUri = vscode.Uri.joinPath(cmlUri, '..', '..', 'CMakeLists.txt'); + } + return cmakeListsASTs; +} + +function variableSourceLists( + cmakeListsASTs: CMakeAST[], + project: CMakeProject, + settings: ModifyListsSettings +): SourceList[] { + const sourceVariables = settings.sourceVariables; + if (!sourceVariables.length) { + return []; + } + + function isSourceVariable(ident: string): boolean { + return sourceVariables.some(pat => minimatch(ident, pat)); + } + + return topLevelInvocations(invocationsFromCMakeASTs(cmakeListsASTs)) + .flatMap(invocation => + SourceList.fromVariableCommandInvocation(project, invocation, settings)) + .filter(sourceList => + sourceList.destination && isSourceVariable(sourceList.destination)); +} + +function invocationsFromCMakeASTs(cmakeListsASTs: CMakeAST[]): CommandInvocation[] { + function* generator(): Generator { + for (const cml of cmakeListsASTs) { + for (const ast of cml.invocations) { + yield new CommandInvocation(cml.document, ast); + } + } + } + return Array.from(generator()); +} + +function findSourceInArgs( + sourceUri: vscode.Uri, + invocation: CommandInvocation +): number[] { + const { ast: { args } } = invocation; + const sourcePath = platformNormalizeUri(sourceUri); + const ret: number[] = []; + for (let i = 0; i < args.length; i++) { + const argPath = resolveNormalized(invocation.sourceDir, args[i].value); + if (argPath === sourcePath) { + ret.push(i); + } + } + return ret; +} + +function allBuildTargets( + model: codeModel.CodeModelContent, + buildType: string | null +): codeModel.CodeModelTarget[] { + let configs = model.configurations; + + // If buildType is specified, filter to matching config + // If no match found or buildType is null/empty, fall back to first config + if (buildType) { + const matching = configs.filter(c => c.name === buildType); + if (matching.length) { + configs = matching; + } + } + if (!configs.length && model.configurations.length) { + configs = [model.configurations[0]]; + } + + return configs + .flatMap(c => c.projects.flatMap(p => p.targets)) + .filter(target => target.sourceDirectory); +} + +function sourceFileTargets( + targets: codeModel.CodeModelTarget[], + sourceUri: vscode.Uri +) { + const sourceFile = platformNormalizeUri(sourceUri); + return targets.filter(target => { + const sourceDir = target.sourceDirectory as string; + if (!target.fileGroups) { + return false; + } + const sourcePaths = target.fileGroups.flatMap( + fileGroup => fileGroup.sources.map( + fileGroupSource => resolveNormalized(sourceDir, fileGroupSource))); + return sourcePaths.includes(sourceFile); + }); +} + +/** + * Filter targets for insertion viability. + * + * A target is a viable option if it is a non-utility target with a source + * directory that is the same as, or a parent of, the source directory of the + * file. + */ +function candidateTargetsForSource( + targets: codeModel.CodeModelTarget[], + newSourceUri: vscode.Uri) { + return targets.filter(target => + isFileInsideFolder(newSourceUri, target.sourceDirectory as string)); +} + +function targetCompare(a: codeModel.CodeModelTarget, b: codeModel.CodeModelTarget): number { + const [aKeys, bKeys] = [a, b].map(targetSortKeys); + return compareSortKeys(aKeys, bKeys); +} + +function targetSortKeys(target: codeModel.CodeModelTarget): (number|string)[] { + const { type, sourceDirectory, fileGroups } = target; + const nSources = + fileGroups?.reduce((accum, group) => accum + group.sources.length, 0); + return [ + // Utility targets to the back of the line + Number(type === 'UTILITY'), + // Longer source path = more specific target = winner + sourceDirectory ? -splitNormalizedPath(sourceDirectory).length : 0, + // "bigger" targets beat smaller ones + nSources ? -nSources : 0, + // Break ties with target name + target.name + ]; +} + +class CommandInvocation { + public readonly sourceDir; + public readonly builtin; + + constructor( + public document: vscode.TextDocument, + public ast: CommandInvocationAST, + builtin?: string, + sourceDir?: string + ) { + this.builtin = builtin ?? ast.command.value; + this.sourceDir = sourceDir ?? path.dirname(document.fileName); + } + + public get offset(): number { + return this.ast.command.offset; + } + + public get command(): string { + return this.ast.command.value; + } + + public get line(): number { + return this.document.positionAt(this.offset).line; + } +} + +async function sourceCommandInvocationsFromBacktrace( + project: CMakeProject, + target: codeModel.CodeModelTarget, + builtins: string[] +): Promise { + // TODO: Filter out generated cmake files. Requires additional info + // from the File API that isn't currently available. + const backtraceGraph = target.backtraceGraph as codeModel.BacktraceGraph; + const builtinSourceCommandIndices = backtraceGraph.commands + .map((command, index) => ({ command, index })) + .filter(({ command }) => builtins.includes(command)) + .map(({ index }) => index); + const sourceCommandInvocationPromises = backtraceGraph.nodes.map(async (node) => { + if (node.command === undefined || !builtinSourceCommandIndices.includes(node.command)) { + return; + } + const builtin = backtraceGraph.commands[node.command]; + if (!builtin) { + return; + } + + const callNode = outermostCallNode(backtraceGraph.nodes, node); + if (callNode?.line === undefined || callNode?.command === undefined) { + return; + } + const command = backtraceGraph.commands[callNode.command]; + const listFile = backtraceGraph.files[callNode.file]; + if (!command || !listFile) { + return; + } + const listUri = vscode.Uri.file(path.resolve(project.sourceDir, listFile)); + if (!isFileInsideFolder(listUri, project.sourceDir)) { + return; + } + const subdirListNode = subdirectoryListNode(backtraceGraph.nodes, callNode); + if (!subdirListNode) { + return; + } + + const document = await vscode.workspace.openTextDocument(listUri); + const line = callNode.line - 1; + const offset = document.offsetAt(new vscode.Position(line, 0)); + let ast; + try { + ast = new CMakeParser(document, offset).parseCommandInvocation(); + } catch (e) { + void vscode.window.showWarningMessage(localize('parse.error.finding.invocations', 'Parse error while finding command invocations to add to. CMake file modified since last configure? Details: {0}', String(e))); + return; + } + + if (command !== ast.command.value) { + void vscode.window.showWarningMessage(localize('unexpected.command.found', 'Found "{0}", expected "{1}". CMake file modified since last configure? Details: {2}:{3}', ast.command.value, command, document.fileName, line + 1)); + return; + } + + const subdirListFile = backtraceGraph.files[subdirListNode.file]; + const sourceDir = path.dirname(path.resolve(project.sourceDir, subdirListFile)); + return new CommandInvocation(document, ast, builtin, sourceDir); + }); + const sourceCommandInvocations = ( + await Promise.all(sourceCommandInvocationPromises)) + .flatMap(i => i === undefined ? [] : i); + return sourceCommandInvocations; +} + +/** + * Walk the backtrace to the node representing the outermost function or macro + * invocation. + */ +function outermostCallNode( + nodes: codeModel.BacktraceGraphNode[], + node: codeModel.BacktraceGraphNode +): codeModel.BacktraceGraphNode | undefined { + if (node.parent === undefined) { + return undefined; + } + let current = node; + while (current.parent !== undefined) { + const parent = nodes[current.parent]; + if (parent.command === undefined) { + return current; + } + current = parent; + } + return undefined; +} + +/** + * Since include() doesn't change CMAKE_SOURCE_DIR, we also need to know the + * inner-most CMakeLists.txt added with add_subdirectory() so relative path + * determination can work correctly. + */ +function subdirectoryListNode( + nodes: codeModel.BacktraceGraphNode[], + node: codeModel.BacktraceGraphNode +): codeModel.BacktraceGraphNode | undefined { + let current = node; + while (current.parent !== undefined) { + current = nodes[current.parent]; + } + return current; +} + +function targetSourceCommandInvocationCompare( + builtins: string[], a: CommandInvocation, b: CommandInvocation +): number { + const [aKeys, bKeys] = [a, b].map(v => targetSourceCommandInvocationSortKeys(builtins, v)); + return compareSortKeys(aKeys, bKeys); +} + +function targetSourceCommandInvocationSortKeys(builtins: string[], invocation: CommandInvocation): (number|string)[] { + const { + builtin, document, line, + document: { uri }, ast: { args } + } = invocation; + const normalizedPath = platformNormalizeUri(uri); + + return [ + // Longest path wins + -splitPath(normalizedPath).length, + // CMakeLists.txt in a dir take precedence over other included list files + Number(path.basename(normalizedPath).toLowerCase() !== 'cmakelists.txt'), + path.basename(normalizedPath), + // Indented lines lose to less indented lines + document.lineAt(line).firstNonWhitespaceCharacterIndex, + // longer argument lists beat shorter ones + -args.length, + // target_sources beats add_executable / add_library + builtins.findIndex(pat => minimatch(builtin, pat)), + // Earlier calls in the same file beat later ones + normalizedPath, + line + ]; +} + +function targetSourceListOptions( + project: CMakeProject, + target: codeModel.CodeModelTarget, + invocation: CommandInvocation, + newSourceUri: vscode.Uri, + settings: ModifyListsSettings +) { + return SourceList.fromCommandInvocation(project, invocation, target, settings) + .filter(sourceList => sourceList.canContain(newSourceUri)); +} + +abstract class SourceList { + constructor( + public insertOffset: number, + public invocation: CommandInvocation, + /** + * for target source lists, the target name. For variable source lists, + * the variable name + * */ + public destination: string + ) { } + + public get insertPosition() { + return this.invocation.document.positionAt(this.insertOffset); + } + + public get commandStartLine() { + return this.invocation.line; + } + + public get document() { + return this.invocation.document; + } + + public relativePath(uri: vscode.Uri): string { + return lightNormalizePath(path.relative(this.invocation.sourceDir, uri.fsPath)); + } + + public quickPickItem(file: string): vscode.QuickPickItem & { payload: SourceList } { + return { + label: this.label, + description: this.description(file), + detail: this.details(file), + payload: this + }; + } + + public abstract get label(): string; + protected description(_file: string): string { + return ''; + } + protected details(_file: string): string { + return ''; + } + + public canContain(_uri: vscode.Uri): boolean { + return true; + } + + public compare(uri: vscode.Uri, other: SourceList): number { + const aKeys = this.sortKeys(uri); + const bKeys = other.sortKeys(uri); + return compareSortKeys(aKeys, bKeys); + } + + /** + * Public accessor for sort keys + */ + public getSortKeys(uri: vscode.Uri): (number|string)[] { + return this.sortKeys(uri); + } + + protected sortKeys(_uri: vscode.Uri): (number|string)[] { + return [ + // The longer the list, the more likely it wants to grow + -(this.insertOffset - this.invocation.ast.command.offset), + // fall back to file and line, latest first + platformNormalizeUri(this.document.uri), + -this.insertOffset + ]; + } + + static fromCommandInvocation( + project: CMakeProject, + invocation: CommandInvocation, + target: codeModel.CodeModelTarget | undefined, + settings: ModifyListsSettings + ): SourceList[] { + const { command, args } = invocation.ast; + + // First, check if this is a variable assignment or modification + if (settings && command.value === 'set') { + return [ new SetSourceList(invocation, project.sourceDir, settings) ]; + } + if (settings && command.value === 'list' && args.length > 0 && LIST_KEYWORDS.includes(args[0].value)) { + return [ new ListAppendSourceList(invocation, project.sourceDir, settings) ]; + } + if (!target) { + // Without a target, can't try to interpret invocation as a target source command + return []; + } + + // Otherwise, assume this is a target source list command of some kind + const scopeIndices = findIndices(args, v => SOURCE_SCOPES.includes(v.value)); + if (scopeIndices.length) { + return scopeIndices.map(index => new ScopeSourceList(invocation, index, target.name)); + } + + let optionIndices; + const sourceListKeywords = settings.sourceListKeywords; + if (sourceListKeywords?.length) { + optionIndices = findIndices(args, + v => sourceListKeywords.some(pat => minimatch(v.value, pat))); + } else { + optionIndices = findIndices(args, v => !!(v.value.match(/^[A-Z_]+$/))); + } + if (optionIndices.length) { + // Filter out source lists whose insert position falls before the + // command's lparen — that indicates a structural mismatch (e.g. + // treating a library-type keyword like STATIC as a source-list + // keyword when there are no sources). + return optionIndices + .map(index => new MultiValueSourceList(invocation, sourceListKeywords, index, target.name)) + .filter(sl => sl.insertOffset >= invocation.ast.lparen.endOffset); + } + return [ new SimpleSourceList(invocation, target.name) ]; + } + + /** + * Just a wrapper to make the code clearer at the call site. + */ + static fromVariableCommandInvocation( + project: CMakeProject, invocation: CommandInvocation, settings: ModifyListsSettings + ): SourceList[] { + return this.fromCommandInvocation(project, invocation, undefined, settings); + } +} + +class ScopeSourceList extends SourceList { + public scope: string; + public fileSet?: { + name: string; + type?: string; + baseDirs: string[]; + }; + + constructor(invocation: CommandInvocation, index: number, private target: string) { + const { args } = invocation.ast; + const scope = args[index++].value; + let fileSetName: string | undefined; + let fileSetType: string | undefined; + const baseDirs = []; + + // Parse FILE_SET header if present + if (index < args.length && args[index].value === 'FILE_SET') { + index++; + if (index < args.length) { + fileSetName = args[index++].value; + } + if (index < args.length && args[index].value === 'TYPE') { + index++; + if (index < args.length) { + fileSetType = args[index++].value; + } + } + if (index < args.length && args[index].value === 'BASE_DIRS') { + index++; + while (index < args.length && args[index].value !== 'FILES') { + const arg = args[index++].value; + const argPath = path.resolve(invocation.sourceDir, arg); + baseDirs.push(argPath); + } + if (index < args.length) { + index++; + } + } + } + + // When there are no source files yet (e.g. target_sources(mylib PRIVATE)), + // fall back to the end of the last keyword token so the insertion + // goes right after the keyword rather than at offset 0. + const insertOffset = findEndOfSourceList(args, index) + ?? (index > 0 ? args[index - 1].endOffset : invocation.ast.lparen.endOffset); + super(insertOffset, invocation, target); + this.scope = scope; + if (fileSetName) { + this.fileSet = { + name: fileSetName, + type: fileSetType, + baseDirs: baseDirs + }; + } + } + + private scopeDetails(target: string, file: string): string { + switch (this.scope) { + case 'PRIVATE': return localize('scope.private.detail', '{0} will be used to build {1}', file, target); + case 'PUBLIC': return localize('scope.public.detail', '{0} will be used to build both {1} and targets that use {1}', file, target); + case 'INTERFACE': return localize('scope.interface.detail', '{0} will be used to build targets that use {1}', file, target); + } + throw Error('scopeDetails() called with unrecognized scope name'); + } + + private fileSetDetails(file: string) { + switch (this.resolveFileSetType()) { + case 'HEADERS': return localize('fileset.headers.detail', '{0} will be used via a language\'s #include mechanism', file); + case 'CXX_MODULES': return localize('fileset.cxx.modules.detail', '{0} contains C++ interface module or partition units.', file); + } + throw Error('fileSetDetails() called on scope list with missing or unrecognized FILE_SET'); + } + + public get label(): string { + if (this.fileSet?.name) { + return localize('label.fileset', '{0} File Set', this.fileSet.name); + } else { + return localize('label.scope', '{0} Scope', this.scope); + } + } + + protected description(file: string): string { + const descParts = []; + + if (this.fileSet) { + if (this.fileSet.type) { + descParts.push(localize('fileset.type', 'Type: {0}', this.fileSet.type)); + } + descParts.push(this.fileSetDetails(file)); + } + return descParts.join('; '); + } + + protected details(file: string): string { + if (this.fileSet?.name) { + return localize('scope.with.fileset.detail', '{0} Scope: {1}', this.scope, this.scopeDetails(this.target, file)); + } else { + return this.scopeDetails(this.target, file); + } + } + + public canContain(uri: vscode.Uri): boolean { + return this.baseDirsCanContain(uri) && this.fileSetTypeCanContain(uri); + } + + private baseDirsCanContain(uri: vscode.Uri): boolean { + if (!this.fileSet?.baseDirs?.length) { + return true; + } + return this.fileSet?.baseDirs.some(baseDir => + isFileInsideFolder(uri, baseDir)); + } + + private resolveFileSetType() { + return this.fileSet?.type ?? this.fileSet?.name; + } + + private fileSetTypeCanContain(uri: vscode.Uri): boolean { + const hasFileSet = !!this.fileSet?.name; + if (isHeader(uri)) { + return true; + } else if (isCxxModule(uri)) { + // "This file set type may not have an INTERFACE scope except on + // IMPORTED targets." + return !hasFileSet || this.scope !== 'INTERFACE'; + } else { + return !hasFileSet; + } + } + + protected sortKeys(uri: vscode.Uri): (number|string)[] { + const scopePriorities = + isHeader(uri) || isCxxModule(uri) ? HEADER_SCOPES : SOURCE_SCOPES; + return [ + -Number(!!this.fileSet), + this.fileSet ? this.fileSet?.name : '', + scopePriorities.indexOf(this.scope) + ].concat(super.sortKeys(uri)); + } +} + +class MultiValueSourceList extends SourceList { + public readonly keyword: string; + + constructor( + invocation: CommandInvocation, + protected sourceListKeywords: string[], + index: number, + target: string + ) { + const { args } = invocation.ast; + const keyword = args[index++].value; + // Fall back to keyword's endOffset when no source files follow it yet. + const insertOffset = findEndOfSourceList(args, index) ?? args[index - 1].endOffset; + super(insertOffset, invocation, target); + this.keyword = keyword; + } + + public get label(): string { + return `${this.keyword}`; + } + + protected description(_file: string): string { + return localize('keyword.of.command', 'Keyword of {0} command', this.invocation.command); + } + + protected sortKeys(uri: vscode.Uri): (number | string)[] { + return ([ + this.sourceListKeywords.findIndex(pat => minimatch(this.keyword, pat)) + ] as (number|string)[]).concat(super.sortKeys(uri)); + } +} + +class SimpleSourceList extends SourceList { + constructor(invocation: CommandInvocation, target: string) { + const { lparen, args } = invocation.ast; + const insertOffset = findEndOfSourceList(args, 0) ?? lparen.endOffset; + super(insertOffset, invocation, target); + } + + public get label(): string { + return localize('command.label', '{0} Command', this.invocation.command); + } + + protected description(file: string): string { + return localize('add.to.command.arguments', 'Add {0} to the list of arguments to {1} command', file, this.invocation.command); + } +} + +abstract class VariableSourceList extends SourceList { + protected variable: string; + protected sourceVariables: string[]; + + constructor( + invocation: CommandInvocation, + protected projectDir: string, + settings: ModifyListsSettings, + variableIndex: number, + listIndex: number + ) { + const { args } = invocation.ast; + const variable = args[variableIndex].value; + // Fall back to the preceding token's endOffset when no values follow. + const insertOffset = findEndOfSourceList(args, listIndex) + ?? (listIndex > 0 ? args[listIndex - 1].endOffset : invocation.ast.lparen.endOffset); + super(insertOffset, invocation, variable); + this.variable = variable; + this.sourceVariables = settings.sourceVariables; + } + + protected description(_file: string): string { + const pos = this.invocation.document.positionAt(this.invocation.ast.command.offset); + return this.invocation.document.lineAt(pos.line).text; + } + + protected details(_file: string): string { + const pos = this.invocation.document.positionAt(this.invocation.ast.command.offset); + const relPath = path.relative(this.projectDir, this.invocation.document.fileName); + return `${relPath}:${pos.line + 1}`; + } + + protected sortKeys(uri: vscode.Uri): (number|string)[] { + return ([ + // More specific CMakeLists.txt beat less specific ones + -splitNormalizedPath(this.document.fileName).length, + // Sort order depends on user configuration + this.sourceVariables.findIndex(pat => minimatch(this.variable, pat)) + ] as (number|string)[]).concat(super.sortKeys(uri)); + } +} + +class SetSourceList extends VariableSourceList { + constructor(invocation: CommandInvocation, projectDir: string, settings: ModifyListsSettings + ) { + super(invocation, projectDir, settings, 0, 1); + } + + public get label(): string { + return `${this.variable} (set)`; + } +} + +class ListAppendSourceList extends VariableSourceList { + private readonly subcommand: string; + + constructor(invocation: CommandInvocation, projectDir: string, settings: ModifyListsSettings + ) { + const subcommand = invocation.ast.args[0].value; + super(invocation, projectDir, settings, 1, 2); + this.subcommand = subcommand; + } + + public get label(): string { + return `${this.variable} (${this.subcommand.toLowerCase()})`; + } +} + +function isHeader(uri: vscode.Uri): boolean { + const ext = extension(uri); + return Object.values(LANGUAGE_EXTENSIONS).some(({ header }) => + header?.includes(ext)); +} + +function isCxxModule(uri: vscode.Uri): boolean { + const ext = extension(uri); + return Object.values(LANGUAGE_EXTENSIONS).some(({ cxxModule }) => + cxxModule?.includes(ext) + ); +} + +function findEndOfSourceList(args: Token[], index: number) { + const startIndex = index; + while (index < args.length && !args[index].value.match(/^[A-Z_]+$/)) { + index++; + } + if (index === startIndex) { + return null; + } + const finalToken = args[index - 1]; + return finalToken.endOffset; +} + +function freshLineIndent(invocation: CommandInvocation, insertPos: vscode.Position) { + const currentLine = invocation.document.lineAt(insertPos.line); + const currentLineIndent = + currentLine.text.slice(0, currentLine.firstNonWhitespaceCharacterIndex); + + if (invocation.line !== insertPos.line) { + // Just keep the current indentation + return currentLineIndent; + } + + const guessed = guessIndentConfig(invocation.document); + const currentLineIndentSize = Array.from(currentLineIndent) + .reduce((n, c) => n + (c === '\t' ? guessed.tabSize : 1), 0); + const freshLineIndentSize = currentLineIndentSize + guessed.indentSize; + + if (guessed.insertSpaces) { + return ' '.repeat(freshLineIndentSize); + } + + const tabs = Math.floor(freshLineIndentSize / guessed.tabSize); + const spaces = freshLineIndentSize % guessed.tabSize; + return '\t'.repeat(tabs) + ' '.repeat(spaces); +} + +interface IndentConfig { + tabSize: number; + indentSize: number; + insertSpaces: boolean; +} + +function guessIndentConfig(document: vscode.TextDocument): IndentConfig { + const { tabSize, indentSize, insertSpaces } = indentSettings(document); + + let tabs = false; + let minSpaces = 0; let maxSpaces = 0; + for (const line of documentLines(document)) { + const indent = line.text.slice(0, line.firstNonWhitespaceCharacterIndex); + if (indent.startsWith('\t')) { + tabs = true; + } else if (indent.startsWith(' ')) { + const matches = indent.match('^( *)') as RegExpMatchArray; + const spacesSize = matches[1].length; + if (!minSpaces || spacesSize < minSpaces) { + minSpaces = spacesSize; + } + if (spacesSize > maxSpaces) { + maxSpaces = spacesSize; + } + } + } + + const spaces = !!maxSpaces; + + if (spaces && tabs) { + return { + tabSize: maxSpaces + minSpaces, + indentSize: minSpaces, + insertSpaces: false + }; + } + if (spaces && !tabs) { + return { + tabSize, + indentSize: minSpaces, + insertSpaces: true + }; + } + if (!spaces && tabs) { + return { + tabSize, + indentSize, + insertSpaces: false + }; + } + + // document contained no indented lines, fall back to workspace settings + return { + tabSize, + indentSize, + insertSpaces + }; +} + +/** + * Get the IndentConfig from the workspace configuration + */ +function indentSettings(document: vscode.TextDocument, languageId: string = 'cmake'): IndentConfig { + const config = vscode.workspace.getConfiguration( + 'editor', { uri: document.uri, languageId }); + const tabSize = config.get('tabSize', 8); + const indentSizeRaw = config.get('indentSize', 4); + const indentSize = indentSizeRaw === 'tabSize' ? tabSize : indentSizeRaw; + const insertSpaces = config.get('insertSpaces', false); + + return { tabSize, indentSize, insertSpaces }; +} + +function* documentLines(document: vscode.TextDocument): Generator { + for (let i = 0; i < document.lineCount; i++) { + yield document.lineAt(i); + } +} + +export function compareSortKeys(aKeys: (number|string)[], bKeys: (number|string)[]): number { + const n = Math.min(aKeys.length, bKeys.length); + + for (let i = 0; i < n; i++) { + const [a, b] = [aKeys[i], bKeys[i]]; + const compare = typeof a === 'number' + ? a - (b as number) + : a.localeCompare(String(b)); + if (compare) { + return compare; + } + } + + return aKeys.length - bKeys.length; +} + +export function resolveNormalized(base: string, inpath: string) { + return platformNormalizePath(path.resolve(base, inpath)); +} + +function splitNormalizedPath(p: string): string[] { + return splitPath(platformNormalizePath(p)); +} + +function extension(uri: vscode.Uri): string { + return path.extname(uri.fsPath).slice(1); +} + +export function quoteArgument(s: string): string { + if (!s.match(/[\s()#"\\]/)) { + return s; + } + s = s.replace(/\t/g, '\\t'); + s = s.replace(/\r/g, '\\r'); + s = s.replace(/\n/g, '\\n'); + s = s.replace(/"/g, '\\"'); + return `"${s}"`; +} + +function addAll(s: Set, ...i: T[]) { + i.forEach(e => s.add(e)); +} + +function findIndices(array: T[], predicate: (e: T) => boolean): number[] { + const indices: number[] = []; + array.forEach((value, index) => { + if (predicate(value)) { + indices.push(index); + } + }); + + return indices; +} diff --git a/src/cmakeParser.ts b/src/cmakeParser.ts new file mode 100644 index 0000000000..4ddcf40f71 --- /dev/null +++ b/src/cmakeParser.ts @@ -0,0 +1,202 @@ +import * as vscode from "vscode"; + +class ParserError extends Error {} + +export interface CMakeAST { + document: vscode.TextDocument; + invocations: CommandInvocationAST[]; +} + +export interface CommandInvocationAST { + command: Token; + lparen: Token; + args: Token[]; + rparen: Token; +} + +export class Token { + constructor( + public type: TokenType, + public raw: string, + public document: vscode.TextDocument, + public offset: number, + public value: string + ) { } + + public get endOffset(): number { + return this.offset + this.raw.length; + } +} + +interface TokenType { + name: string; + re: RegExp; +} + +const BRACKETED_RE = /\[(=*)\[.*\]\1\]/s; +const SPACE: TokenType = { name: 'SPACE', re: /[ \t]+/ }; +const NEWLINE: TokenType = { name: 'NEWLINE', re: /\r?\n/ }; +const IDENT: TokenType = { name: 'IDENT', re: /[A-Za-z_][A-Za-z0-9_]*/ }; +const LPAREN: TokenType = { name: 'LPAREN', re: /\(/ }; +const RPAREN: TokenType = { name: 'RPAREN', re: /\)/ }; +const BRACKETED: TokenType = { name: 'BRACKETED', re: BRACKETED_RE }; +const QUOTED: TokenType = { name: 'QUOTED', re: /"(?:\\.|[^"])*"/s }; +const UNQUOTED: TokenType = { name: 'UNQUOTED', re: /(?:\\.|[^\s()#"\\'])+/s }; +// TODO: "legacy" identifiers with quotes in them +const LINE_COMMENT: TokenType = { name: 'LINE_COMMENT', re: /#[^\r\n]*/ }; +const BRACKETED_COMMENT: TokenType = { name: 'BRACKETED_COMMENT', re: regexpPrepend('#', BRACKETED_RE) }; +const EOF: TokenType = { name: 'EOF', re: /$/ }; +const SPACE_TYPES: TokenType[] = [SPACE, NEWLINE]; +const COMMENT_TYPES: TokenType[] = [LINE_COMMENT, BRACKETED_COMMENT]; +const ARG_TYPES: TokenType[] = [ + LPAREN, RPAREN, BRACKETED, QUOTED, UNQUOTED +]; + +export class CMakeParser { + private text: string; + private offset: number; + private pushbackBuffer: Token[] = []; + + constructor(private document: vscode.TextDocument, offset?: number) { + this.offset = offset ?? 0; + this.text = document.getText(); + } + + public parseDocument(): CMakeAST { + return { + document: this.document, + invocations: Array.from(this.parseCommandInvocations()) + }; + } + + private *parseCommandInvocations(): Generator { + // Slightly more permissive in terms of comment placement than the + // official grammar. + while (true) { + const next = this.skipSpaceAndComments(IDENT, EOF); + if (next.type === EOF) { + return; + } + this.pushbackBuffer.push(next); + yield this.parseCommandInvocation(); + } + } + + /** + * Parse one Command Invocation. Call in a loop to parse an entire file + */ + public parseCommandInvocation(): CommandInvocationAST { + const command = this.skipSpace(IDENT); + const lparen = this.skipSpace(LPAREN); + const args: Token[] = []; + let depth = 1; + let token; + while (depth) { + token = this.skipSpaceAndComments(...ARG_TYPES); + switch (token.type) { + case LPAREN: + depth++; break; + case RPAREN: + depth--; break; + case UNQUOTED: case QUOTED: case BRACKETED: + args.push(token); break; + default: + this.error(`unexpected ${token.type.name} ${token.raw}`); + } + } + const rparen = token as Token; + this.assignArgumentValues(args); + + return { command, args, lparen, rparen }; + } + + private assignArgumentValues(args: Token[]) { + for (const arg of args) { + switch (arg.type) { + case QUOTED: + arg.value = unescape(arg.raw.slice(1, -1)); break; + case BRACKETED: + arg.value = arg.raw.replace(/^\[(=*)\[(.*)\]\1\]$/, '$2'); break; + case UNQUOTED: default: + arg.value = unescape(arg.raw); break; + } + } + } + + private skipSpace(...expect: TokenType[]): Token { + return this.skipTokens(SPACE_TYPES, expect); + } + + private skipSpaceAndComments(...expect: TokenType[]): Token { + return this.skipTokens([...SPACE_TYPES, ...COMMENT_TYPES], expect); + } + + private skipTokens(skip: TokenType[], expect: TokenType[]): Token { + expect = [...expect, ...skip]; + let token; + do { + token = this.nextToken(...expect); + } while (skip.includes(token.type)); + + return token; + } + + private nextToken(...expect: TokenType[]): Token { + let token: Token | null | undefined = this.pushbackBuffer.pop(); + if (token) { + if (expect.includes(token.type)) { + return token; + } + } else { + token = this.scanToken(...expect); + if (token) { + return token; + } + } + if (this.offset === this.text.length) { + this.error(`unexpected EOF`); + } + this.error(`unexpected ${this.text[this.offset]}`); + } + + private scanToken(...expect: TokenType[]): Token | null { + for (const matcher of expect) { + const token = this.tryMatch(matcher); + if (token !== null) { + return token; + } + } + return null; + } + + private tryMatch(matcher: TokenType): Token | null { + const re = regexpPrepend('^', matcher.re); + const match = re.exec(this.text.slice(this.offset)); + if (!match) { + return null; + } + const token = new Token( + matcher, + match[0], + this.document, + this.offset, + match[0] // may be overwritten later with a post-processed value + ); + this.offset += match[0].length; + return token; + } + + private error(msg: string): never { + const pos = this.document.positionAt(this.offset); + throw new ParserError( + `${this.document.fileName}:${pos.line + 1}:${pos.character + 1}: ${msg}`); + } +} + +export function regexpPrepend(prefix: string, re: RegExp): RegExp { + return RegExp(prefix + re.source, re.flags); +} + +function unescape(s: string): string { + return s.replace(/\\(.)/g, '$1'); +} diff --git a/src/cmakeProject.ts b/src/cmakeProject.ts index 334c2f32e2..287fd47e16 100644 --- a/src/cmakeProject.ts +++ b/src/cmakeProject.ts @@ -28,9 +28,9 @@ import { CPackDriver } from '@cmt/cpack'; import { WorkflowDriver } from '@cmt/workflow'; import { CMakeBuildConsumer } from '@cmt/diagnostics/build'; import { CMakeOutputConsumer } from '@cmt/diagnostics/cmake'; -import { FileDiagnostic, addDiagnosticToCollection, diagnosticSeverity, populateCollection } from '@cmt/diagnostics/util'; +import { addDiagnosticToCollection, diagnosticSeverity, populateCollection } from '@cmt/diagnostics/util'; import { expandStrings, expandString, ExpansionOptions } from '@cmt/expand'; -import { CMakeGenerator, Kit, SpecialKits } from '@cmt/kits/kit'; +import { CMakeGenerator, Kit, SpecialKits, effectiveKitEnvironment } from '@cmt/kits/kit'; import * as logging from '@cmt/logging'; import { fs } from '@cmt/pr'; import { buildCmdStr, DebuggerEnvironmentVariable, ExecutionResult, ExecutionOptions } from './proc'; @@ -70,7 +70,8 @@ export enum ConfigureType { Cache, ShowCommandOnly, NormalWithDebugger, - CleanWithDebugger + CleanWithDebugger, + FullClean } export enum ConfigureTrigger { @@ -100,6 +101,8 @@ export enum ConfigureTrigger { commandCleanConfigureAll = "commandCleanConfigureAll", commandCleanConfigureAllWithDebugger = "commandConfigureAllWithDebugger", projectOutlineCleanConfigureAllWithDebugger = "projectOutlineCleanConfigureAllWithDebugger", + commandFullCleanConfigure = "commandFullCleanConfigure", + commandFullCleanConfigureAll = "commandFullCleanConfigureAll", configureFailedConfigureWithDebuggerButton = "configureFailedConfigureWithDebuggerButton", taskProvider = "taskProvider", selectConfigurePreset = "selectConfigurePreset", @@ -840,7 +843,9 @@ export class CMakeProject { // Force re-reading of cmake exe, this will ensure that the debugger capabilities are updated. const cmakeInfo = await this.getCMakeExecutable(); if (!cmakeInfo.isPresent) { - void vscode.window.showErrorMessage(localize('bad.executable', 'Bad CMake executable: {0}. Check to make sure it is installed or the value of the {1} setting contains the correct path', `"${cmakeInfo.path}"`, '"cmake.cmakePath"')); + // Do not show a popup here to avoid duplicate "Bad CMake executable" messages. + // The canonical user-facing error is shown when a command actually needs a driver + // and getCMakeDriverInstance() validates the executable. telemetry.logEvent('CMakeExecutableNotFound'); } @@ -1396,7 +1401,10 @@ export class CMakeProject { } async setKit(kit: Kit | null) { + const priorCMakePath = await this.getCMakePathofProject(); // used for later comparison to determine if we need to update the driver's cmake. this._activeKit = kit; + this.cachedCMakePathEnvironment = null; // Invalidate cache on kit change + this.cachedCMakePathEnvironmentKit = null; if (kit) { log.debug(localize('injecting.new.kit', 'Injecting new Kit into CMake driver')); const drv = await this.cmakeDriver; // Use only an existing driver, do not create one @@ -1404,6 +1412,14 @@ export class CMakeProject { try { this.statusMessage.set(localize('reloading.status', 'Reloading...')); await drv.setKit(kit, this.getPreferredGenerators()); + + const updatedCMakePath = await this.getCMakePathofProject(); + + // check if we need to update the driver's cmake, if so, update. + if (priorCMakePath !== updatedCMakePath) { + drv.cmake = await this.getCMakeExecutable(); + } + await this.workspaceContext.state.setActiveKitName(this.folderName, kit.name, this.isMultiProjectFolder); this.statusMessage.set(localize('ready.status', 'Ready')); } catch (error: any) { @@ -1411,6 +1427,8 @@ export class CMakeProject { this.statusMessage.set(localize('error.on.switch.status', 'Error on switch of kit ({0})', error.message)); this.cmakeDriver = Promise.resolve(null); this._activeKit = null; + this.cachedCMakePathEnvironment = null; // Invalidate cache on error + this.cachedCMakePathEnvironmentKit = null; } } else { // Remember the selected kit for the next session. @@ -1419,9 +1437,36 @@ export class CMakeProject { } } + private async getCMakePathEnvironment(): Promise { + if (this.useCMakePresets || !this.activeKit) { + return undefined; + } + + // Return cached result if kit hasn't changed + if (this.cachedCMakePathEnvironmentKit === this.activeKit && this.cachedCMakePathEnvironment !== null) { + return this.cachedCMakePathEnvironment === undefined ? undefined : this.cachedCMakePathEnvironment; + } + + try { + const expansionOptions = await this.getExpansionOptions(); + const result = await effectiveKitEnvironment(this.activeKit, expansionOptions); + // Cache the result: store undefined as a marker to avoid re-computation + this.cachedCMakePathEnvironment = result || undefined; + this.cachedCMakePathEnvironmentKit = this.activeKit; + return result; + } catch (e: any) { + log.warning(localize('failed.to.compute.kit.env.for.cmake.path', 'Unable to evaluate the active kit environment while resolving cmake.cmakePath: {0}', e?.message || e)); + // Cache the error result as undefined + this.cachedCMakePathEnvironment = undefined; + this.cachedCMakePathEnvironmentKit = this.activeKit; + return undefined; + } + } + async getCMakePathofProject(): Promise { const overWriteCMakePathSetting = this.useCMakePresets ? this.configurePreset?.cmakeExecutable : undefined; - return await this.workspaceContext.getCMakePath(overWriteCMakePathSetting) || ''; + const envOverride = await this.getCMakePathEnvironment(); + return await this.workspaceContext.getCMakePath(overWriteCMakePathSetting, envOverride) || ''; } async getCMakeExecutable() { @@ -1536,6 +1581,12 @@ export class CMakeProject { return this._activeKit; } + /** + * Cache for CMake path environment to avoid redundant shell script executions + */ + private cachedCMakePathEnvironment: Environment | undefined | null = null; + private cachedCMakePathEnvironmentKit: Kit | null = null; + /** * The compilation database for this driver. */ @@ -1629,6 +1680,36 @@ export class CMakeProject { return; } } + + } + + /** + * Execute the postConfigureTask if configured + */ + private async executePostConfigureTask(): Promise { + const postConfigureTask = this.workspaceContext.config.postConfigureTask; + if (postConfigureTask) { + try { + log.debug(localize('executing.post.configure.task', 'Executing post configure task: {0}', postConfigureTask)); + + // Fetch all available tasks + const tasks = await vscode.tasks.fetchTasks(); + + // Find the task by label + const task = tasks.find(t => t.name === postConfigureTask); + + if (task) { + await vscode.tasks.executeTask(task); + } else { + const errorMsg = localize('task.not.found', 'Task "{0}" not found. Available tasks: {1}', postConfigureTask, tasks.map(t => t.name).join(', ')); + void vscode.window.showErrorMessage(errorMsg); + log.error(errorMsg); + } + } catch (error: any) { + void vscode.window.showErrorMessage(localize('failed.to.execute.post.configure.task', 'Failed to execute post configure task: {0}', error.toString())); + log.error(localize('post.configure.task.error', 'Error executing post configure task'), error); + } + } } /** @@ -1644,6 +1725,14 @@ export class CMakeProject { } async configureInternal(trigger: ConfigureTrigger = ConfigureTrigger.api, extraArgs: string[] = [], type: ConfigureType = ConfigureType.Normal, debuggerInformation?: DebuggerInformation, cancellationToken?: vscode.CancellationToken): Promise { + // Explicitly refresh presets from disk so that explicit user commands + // (configure, clean-configure, etc.) always use up-to-date preset state, + // even if the asynchronous file watcher hasn't processed recent changes + // to included preset files yet. See issue #4777. + if (this.useCMakePresets) { + await this.presetsController.reapplyPresets(); + } + const drv: CMakeDriver | null = await this.getCMakeDriverInstance(); // Don't show a progress bar when the extension is using Cache for configuration. @@ -1652,6 +1741,7 @@ export class CMakeProject { const result: ConfigureResult = await drv.configure(trigger, []); if (result.exitCode === 0) { await this.refreshCompileDatabase(drv.expansionOptions); + await this.executePostConfigureTask(); } else { log.showChannel(true); } @@ -1700,6 +1790,7 @@ export class CMakeProject { } if (type !== ConfigureType.ShowCommandOnly) { + log.showChannel(); log.info(localize('run.configure', 'Configuring project: {0}', this.folderName), extraArgs); } @@ -1739,6 +1830,9 @@ export class CMakeProject { case ConfigureType.ShowCommandOnly: result = await drv.configure(trigger, extraArgs, consumer, cancelInformation, undefined, false, true); break; + case ConfigureType.FullClean: + result = await drv.fullCleanConfigure(trigger, extraArgs, consumer, cancelInformation); + break; default: rollbar.error(localize('unexpected.configure.type', 'Unexpected configure type'), { type }); result = await this.configureInternal(trigger, extraArgs, ConfigureType.Normal); @@ -1753,6 +1847,7 @@ export class CMakeProject { if (result.exitCode === 0) { await enableFullFeatureSet(true); await this.refreshCompileDatabase(drv.expansionOptions); + await this.executePostConfigureTask(); } else if (result.exitCode !== 0 && (await this.getCMakeExecutable()).isDebuggerSupported && cmakeConfiguration.get(showDebuggerConfigurationString) && !forciblyCanceled && !cancelInformation.canceled && result.resultType === ConfigureResultType.NormalOperation) { log.showChannel(true); const yesButtonTitle: string = localize( @@ -1839,11 +1934,46 @@ export class CMakeProject { return this.configureInternal(trigger, [], ConfigureType.CleanWithDebugger, debuggerInformation); } + /** + * Implementation of `cmake.fullCleanConfigure()` + * Removes the entire build directory contents before reconfiguring. + */ + fullCleanConfigure(trigger: ConfigureTrigger = ConfigureTrigger.api, cancellationToken?: vscode.CancellationToken) { + return this.configureInternal(trigger, [], ConfigureType.FullClean, undefined, cancellationToken); + } + + /** + * Save all open files. "maybe" because the user may have disabled auto-saving + * with `config.saveBeforeBuild`. + */ /** * Save all open files. "maybe" because the user may have disabled auto-saving * with `config.saveBeforeBuild`. + * + * When preset files have unsaved changes, this method also: + * 1. Suppresses the file-watcher to avoid redundant reapplyPresets() calls + * 2. Saves all open editors + * 3. Conditionally reapplies presets from disk so the caller sees fresh state + * 4. Resumes the file-watcher + * + * @param showCommandOnly When true, skip the "saving files" log message + * @param requireConfigureOnEdit When true (default), dirty presets are only + * reapplied if cmake.configureOnEdit is also enabled. Pass false for + * explicit-configure paths where the user expects presets to be refreshed + * regardless of that setting (see #4792). */ - async maybeAutoSaveAll(showCommandOnly?: boolean): Promise { + async maybeAutoSaveAll(showCommandOnly?: boolean, requireConfigureOnEdit: boolean = true): Promise { + // Snapshot dirty preset state *before* saving so we can report it back. + // After saveAll() the dirty flags will be cleared. + const hadDirtyPresets = this.useCMakePresets && this.haveUnsavedPresetFileChanges(); + + // Suppress watcher-triggered reapply during save — we will explicitly + // await reapplyPresets() below when needed, so the file-watcher's + // fire-and-forget call would be redundant (see #4792). + if (hadDirtyPresets) { + this.presetsController.suppressWatcherReapply = true; + } + // Save open files before we configure/build if (this.workspaceContext.config.saveBeforeBuild) { if (!showCommandOnly) { @@ -1881,28 +2011,58 @@ export class CMakeProject { if (chosen?.title === yesAndDoNotShowAgain) { await cmakeConfiguration.update(showSaveFailedNotificationString, false, vscode.ConfigurationTarget.Global); } - return chosen !== undefined && (chosen.title === yesButtonTitle || chosen.title === yesAndDoNotShowAgain); + const saved = chosen !== undefined && (chosen.title === yesButtonTitle || chosen.title === yesAndDoNotShowAgain); + if (!saved) { + this.presetsController.suppressWatcherReapply = false; + return false; + } } } + + // After saving, explicitly refresh presets from disk so that any + // just-saved changes are picked up before configure/build runs. + // Without this, the async file-watcher may not have completed yet + // (see #4502). The configureOnEdit gate is skipped for explicit- + // configure paths (requireConfigureOnEdit=false) — see #4792. + if (hadDirtyPresets && (!requireConfigureOnEdit || this.workspaceContext.config.configureOnEdit)) { + await this.presetsController.reapplyPresets(); + } + // Resume normal file-watcher behavior now that the explicit reapply + // (if any) has completed. This is a no-op when hadDirtyPresets was false. + this.presetsController.suppressWatcherReapply = false; + return true; } + /** + * Returns true when at least one of the preset files tracked by the + * presets controller (including files pulled in via "include") is currently + * dirty (has unsaved changes) in VS Code. + */ + private haveUnsavedPresetFileChanges(): boolean { + const dirtyPaths = new Set( + vscode.workspace.textDocuments + .filter(doc => doc.isDirty) + .map(doc => util.platformNormalizePath(doc.uri.fsPath)) + ); + return this.presetsController.referencedFiles + .some(f => dirtyPaths.has(util.platformNormalizePath(f))); + } + /** * Wraps pre/post configure logic around an actual configure function * @param cb The actual configure callback. Called to do the configure */ private async doConfigure(type: ConfigureType, progress: ProgressHandle, cb: (consumer: CMakeOutputConsumer) => Promise): Promise { progress.report({ message: localize('saving.open.files', 'Saving open files') }); - if (!await this.maybeAutoSaveAll(type === ConfigureType.ShowCommandOnly)) { + // configureOnEdit is intentionally NOT required here. doConfigure() + // is the explicit configure path — when the user manually triggers + // configure, we should always pick up just-saved preset changes + // regardless of configureOnEdit (which only controls *automatic* + // reconfigure on edit). See #4792. + if (!await this.maybeAutoSaveAll(type === ConfigureType.ShowCommandOnly, false)) { return { exitCode: -1, resultType: ConfigureResultType.Other }; } - // After saving files, explicitly refresh presets from disk so that any - // just-saved changes to preset files (including included files) are picked - // up before configure runs. Without this, the asynchronous file-watcher - // may not have re-expanded the presets yet (see #4502). - if (this.useCMakePresets) { - await this.presetsController.reapplyPresets(); - } if (!this.useCMakePresets) { if (!this.activeKit) { await vscode.window.showErrorMessage(localize('cannot.configure.no.kit', 'Cannot configure: No kit is active for this CMake project')); @@ -1922,9 +2082,9 @@ export class CMakeProject { } } } else if (!this.configurePreset) { - await vscode.window.showErrorMessage(localize('cannot.configure.no.config.preset', 'Cannot configure: No configure preset is active for this CMake project')); + void vscode.window.showErrorMessage(localize('cannot.configure.no.config.preset', 'Cannot configure: No configure preset is active for this CMake project')); log.debug(localize('no.preset.abort', 'No preset selected. Abort configure')); - return { exitCode: -1, resultType: ConfigureResultType.Other }; + return { exitCode: -1, resultType: ConfigureResultType.Other, stderr: 'Cannot configure: No configure preset is active for this CMake project' }; } const consumer = new CMakeOutputConsumer(this.sourceDir, cmakeLogger); const result = await cb(consumer); @@ -1989,18 +2149,10 @@ export class CMakeProject { if (!drv) { return null; } - // First, save open files + // First, save open files and conditionally reapply dirty presets if (!await this.maybeAutoSaveAll()) { return { exitCode: -1 }; } - // After saving, explicitly refresh presets from disk so that the - // needsReconfigure check below sees up-to-date preset state. - // Without this, the async file-watcher's fire-and-forget reapplyPresets() - // may not have completed yet, causing needsReconfigure() to return false - // even though preset files just changed on disk (see #4502). - if (this.useCMakePresets) { - await this.presetsController.reapplyPresets(); - } if (await this.needsReconfigure()) { return this.configureInternal(ConfigureTrigger.compilation, [], ConfigureType.Normal, undefined, cancellationToken); } else { @@ -2196,9 +2348,23 @@ export class CMakeProject { } else { buildLogger.info(localize('build.finished.with.code', 'Build finished with exit code {0}', rc)); } - const fileDiags: FileDiagnostic[] | undefined = drv!.config.parseBuildDiagnostics ? await consumer!.compileConsumer.resolveDiagnostics(drv!.binaryDir, drv!.sourceDir) : []; - if (fileDiags) { - populateCollection(collections.build, fileDiags); + if (drv!.config.parseBuildDiagnostics) { + const fileDiags = await consumer!.compileConsumer.resolveDiagnostics(drv!.binaryDir, drv!.sourceDir); + if (fileDiags.length > 0) { + // Re-populate with fully resolved diagnostics (proper + // path resolution and related information). This replaces + // the incremental diagnostics added during the build. + populateCollection(collections.build, fileDiags); + } + // When empty: either the build succeeded (collection was + // already cleared at build start), or the build ran through + // the task path and diagnostics were populated by + // CustomBuildTaskTerminal. In both cases leave the + // collection as-is. + } else { + // Parsing disabled — clear any stale diagnostics that may + // remain from a previous build that had parsing enabled. + collections.build.clear(); } await this.cTestController.refreshTests(drv!); await this.refreshCompileDatabase(drv!.expansionOptions); @@ -2330,19 +2496,17 @@ export class CMakeProject { return ''; } - if (this.useCMakePresets && this.buildPreset?.targets) { - const targets = [this.targetsInPresetName]; - targets.push(...(util.isString(this.buildPreset.targets) ? [this.buildPreset.targets] : this.buildPreset.targets)); - const sel = await vscode.window.showQuickPick(targets, { placeHolder: localize('select.active.target.tooltip', 'Select the default build target') }); - return sel || null; - } - if (!drv.targets.length) { return await vscode.window.showInputBox({ prompt: localize('enter.target.name', 'Enter a target name') }) || null; } else { const folders: string[] = []; const itemsGroup: (RichTarget | NamedTarget | FolderTarget)[] = []; + // Add special "[Targets In Preset]" option when using presets with defined targets + if (this.useCMakePresets && this.buildPreset?.targets) { + itemsGroup.push({ type: 'named', name: this.targetsInPresetName }); + } + // group the data drv.uniqueTargets.forEach((t) => { switch (t.type) { @@ -2443,6 +2607,14 @@ export class CMakeProject { return (await this.build()).exitCode; } + async fullCleanConfigureAndBuild(trigger: ConfigureTrigger = ConfigureTrigger.api): Promise { + const configureResult = (await this.fullCleanConfigure(trigger)).exitCode; + if (configureResult !== 0) { + return configureResult; + } + return (await this.build()).exitCode; + } + public async runCTestCustomized(driver: CMakeDriver, testPreset?: preset.TestPreset, consumer?: proc.CommandConsumer) { return this.cTestController.runCTest(driver, true, testPreset, consumer); } @@ -2525,29 +2697,48 @@ export class CMakeProject { }; let debugConfig; - try { - const cache = await CMakeCache.fromPath(drv.cachePath); - debugConfig = await debuggerModule.getDebugConfigurationFromCache(cache, target, process.platform, - this.workspaceContext.config.debugConfig?.MIMode, - this.workspaceContext.config.debugConfig?.miDebuggerPath); - } catch (error: any) { - void vscode.window - .showErrorMessage(error.message, { - title: localize('debugging.documentation.button', 'Debugging documentation'), - isLearnMore: true - }) - .then(item => { - if (item && item.isLearnMore) { - open('https://vector-of-bool.github.io/docs/vscode-cmake-tools/debugging.html'); - } - }); - return null; - } + const userConfig = this.workspaceContext.config.debugConfig; + if (userConfig?.type) { + // User specified a custom debug adapter type — skip auto-detection + // and build a minimal base config from the target. Properties from + // userConfig are merged on top, so any base property can be overridden. + debugConfig = { + type: userConfig.type, + name: `Debug ${testName}`, + request: 'launch', + program: testInfo.program, + cwd: path.dirname(testInfo.program), + args: [] as string[] + }; + Object.assign(debugConfig, userConfig); + } else { + try { + const cache = await CMakeCache.fromPath(drv.cachePath); + debugConfig = await debuggerModule.getDebugConfigurationFromCache(cache, target, process.platform, + userConfig?.MIMode, + userConfig?.miDebuggerPath); + } catch (error: any) { + void vscode.window + .showErrorMessage(error.message, { + title: localize('debugging.documentation.button', 'Debugging documentation'), + isLearnMore: true + }) + .then(item => { + if (item && item.isLearnMore) { + open('https://vector-of-bool.github.io/docs/vscode-cmake-tools/debugging.html'); + } + }); + return null; + } - if (debugConfig === null) { - log.error(localize('failed.to.generate.debugger.configuration', 'Failed to generate debugger configuration')); - void vscode.window.showErrorMessage(localize('unable.to.generate.debugging.configuration', 'Unable to generate a debugging configuration.')); - return null; + if (debugConfig === null) { + log.error(localize('failed.to.generate.debugger.configuration', 'Failed to generate debugger configuration')); + void vscode.window.showErrorMessage(localize('unable.to.generate.debugging.configuration', 'Unable to generate a debugging configuration.')); + return null; + } + + // Add debug configuration from settings + Object.assign(debugConfig, userConfig); } // Add test arguments and working directory @@ -2556,11 +2747,10 @@ export class CMakeProject { debugConfig.cwd = testInfo.workingDirectory; } - // Add debug configuration from settings - const userConfig = this.workspaceContext.config.debugConfig; - Object.assign(debugConfig, userConfig); - - const launchEnv = await this.getTargetLaunchEnvironment(drv, debugConfig.environment); + // Merge CTest ENVIRONMENT properties into the debug environment + const testEnvVars = util.makeDebuggerEnvironmentVars(testInfo.environment); + const combinedEnvVars = [...testEnvVars, ...(debugConfig.environment ?? [])]; + const launchEnv = await this.getTargetLaunchEnvironment(drv, combinedEnvVars); debugConfig.environment = util.makeDebuggerEnvironmentVars(launchEnv); await vscode.debug.startDebugging(this.workspaceFolder, debugConfig); @@ -2976,9 +3166,6 @@ export class CMakeProject { if (!await this.maybeAutoSaveAll()) { return null; } - if (this.useCMakePresets) { - await this.presetsController.reapplyPresets(); - } // Ensure that we've configured the project already. If we haven't, `getOrSelectLaunchTarget` won't see any // executable targets and may show an uneccessary prompt to the user @@ -3123,36 +3310,52 @@ export class CMakeProject { } let debugConfig; - try { - const cache = await CMakeCache.fromPath(drv.cachePath); - debugConfig = await debuggerModule.getDebugConfigurationFromCache(cache, targetExecutable, process.platform, - this.workspaceContext.config.debugConfig?.MIMode, - this.workspaceContext.config.debugConfig?.miDebuggerPath); - log.debug(localize('debug.configuration.from.cache', 'Debug configuration from cache: {0}', JSON.stringify(debugConfig))); - } catch (error: any) { - void vscode.window - .showErrorMessage(error.message, { - title: localize('debugging.documentation.button', 'Debugging documentation'), - isLearnMore: true - }) - .then(item => { - if (item && item.isLearnMore) { - open('https://vector-of-bool.github.io/docs/vscode-cmake-tools/debugging.html'); - } - }); - log.debug(localize('problem.getting.debug', 'Problem getting debug configuration from cache.'), error); - return null; - } + const userConfig = this.workspaceContext.config.debugConfig; + if (userConfig?.type) { + // User specified a custom debug adapter type — skip auto-detection + // and build a minimal base config from the target. Properties from + // userConfig are merged on top, so any base property can be overridden. + debugConfig = { + type: userConfig.type, + name: `Debug ${targetExecutable.name}`, + request: 'launch', + program: targetExecutable.path, + cwd: targetExecutable.debuggerWorkingDirectory || path.dirname(targetExecutable.path), + args: [] as string[] + }; + Object.assign(debugConfig, userConfig); + log.debug(localize('debug.configuration.from.settings', 'Debug configuration from user settings: {0}', JSON.stringify(debugConfig))); + } else { + try { + const cache = await CMakeCache.fromPath(drv.cachePath); + debugConfig = await debuggerModule.getDebugConfigurationFromCache(cache, targetExecutable, process.platform, + userConfig?.MIMode, + userConfig?.miDebuggerPath); + log.debug(localize('debug.configuration.from.cache', 'Debug configuration from cache: {0}', JSON.stringify(debugConfig))); + } catch (error: any) { + void vscode.window + .showErrorMessage(error.message, { + title: localize('debugging.documentation.button', 'Debugging documentation'), + isLearnMore: true + }) + .then(item => { + if (item && item.isLearnMore) { + open('https://vector-of-bool.github.io/docs/vscode-cmake-tools/debugging.html'); + } + }); + log.debug(localize('problem.getting.debug', 'Problem getting debug configuration from cache.'), error); + return null; + } - if (debugConfig === null) { - log.error(localize('failed.to.generate.debugger.configuration', 'Failed to generate debugger configuration')); - void vscode.window.showErrorMessage(localize('unable.to.generate.debugging.configuration', 'Unable to generate a debugging configuration.')); - return null; - } + if (debugConfig === null) { + log.error(localize('failed.to.generate.debugger.configuration', 'Failed to generate debugger configuration')); + void vscode.window.showErrorMessage(localize('unable.to.generate.debugging.configuration', 'Unable to generate a debugging configuration.')); + return null; + } - // Add debug configuration from settings. - const userConfig = this.workspaceContext.config.debugConfig; - Object.assign(debugConfig, userConfig); + // Add debug configuration from settings. + Object.assign(debugConfig, userConfig); + } const launchEnv = await this.getTargetLaunchEnvironment(drv, debugConfig.environment); debugConfig.environment = util.makeDebuggerEnvironmentVars(launchEnv); diff --git a/src/cmakeTaskProvider.ts b/src/cmakeTaskProvider.ts index 2700b7de1a..fb82028a68 100644 --- a/src/cmakeTaskProvider.ts +++ b/src/cmakeTaskProvider.ts @@ -16,6 +16,9 @@ import * as telemetry from '@cmt/telemetry'; import * as util from '@cmt/util'; import * as expand from '@cmt/expand'; import { CommandResult } from 'vscode-cmake-tools'; +import { CompileOutputConsumer } from '@cmt/diagnostics/build'; +import collections from '@cmt/diagnostics/collections'; +import { addDiagnosticToCollection, diagnosticSeverity, populateCollection } from '@cmt/diagnostics/util'; nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })(); const localize: nls.LocalizeFunc = nls.loadMessageBundle(); @@ -240,20 +243,29 @@ export class CMakeTaskProvider implements vscode.TaskProvider { return undefined; } - public static async resolveInternalTask(task: CMakeTask): Promise { + public static async resolveInternalTask(task: CMakeTask): Promise<{ task: CMakeTask; exitCodePromise?: Promise } | undefined> { const execution: any = task.execution; if (!execution) { const definition: CMakeTaskDefinition = task.definition; // task.scope can be a WorkspaceFolder, TaskScope.Global, or TaskScope.Workspace. // Only use it as a WorkspaceFolder if it's an object (not a number or null). const workspaceFolder: vscode.WorkspaceFolder | undefined = (task.scope && typeof task.scope === 'object') ? task.scope as vscode.WorkspaceFolder : undefined; + let exitCodeResolve!: (exitCode: number | null) => void; + const exitCodePromise = new Promise(resolve => { + exitCodeResolve = resolve; + }); const resolvedTask: CMakeTask = new vscode.Task(definition, workspaceFolder ?? vscode.TaskScope.Workspace, definition.label, CMakeTaskProvider.CMakeSourceStr, - new vscode.CustomExecution(async (resolvedDefinition: vscode.TaskDefinition): Promise => - new CustomBuildTaskTerminal(resolvedDefinition.command, resolvedDefinition.targets, workspaceFolder, resolvedDefinition.preset, resolvedDefinition.options) - ), []); - return resolvedTask; - } - return task; + new vscode.CustomExecution(async (resolvedDefinition: vscode.TaskDefinition): Promise => { + const terminal = new CustomBuildTaskTerminal(resolvedDefinition.command, resolvedDefinition.targets, workspaceFolder, resolvedDefinition.preset, resolvedDefinition.options); + const listener = terminal.onDidClose((exitCode) => { + listener.dispose(); + exitCodeResolve(exitCode); + }); + return terminal; + }), []); + return { task: resolvedTask, exitCodePromise }; + } + return { task }; } public static async findBuildTask(workspaceFolder: string, presetName?: string, targets?: string[], expansionOptions?: expand.ExpansionOptions): Promise { @@ -484,7 +496,7 @@ export class CustomBuildTaskTerminal extends proc.CommandConsumer implements vsc private async getProject(): Promise { let project: CMakeProject | undefined = getActiveProject(); if (this.workspaceFolder !== undefined) { - this.writeEmitter.fire(localize("workspace.is", "Workspace is {0}", this.workspaceFolder.uri.path + endOfLine)); + this.writeEmitter.fire(localize("workspace.is", "Workspace is {0}", this.workspaceFolder.uri.fsPath + endOfLine)); project = await extensionManager?.getProjectForFolder(this.workspaceFolder); } if (!project) { @@ -586,13 +598,61 @@ export class CustomBuildTaskTerminal extends proc.CommandConsumer implements vsc } this.writeEmitter.fire(localize("build.started", "{0} task started....", taskName) + endOfLine); this.writeEmitter.fire(proc.buildCmdStr(cmakePath, args) + endOfLine); + + // Create a compile output consumer to parse build diagnostics into the Problems pane + let compileConsumer: CompileOutputConsumer | undefined; + if (cmakeDriver.config.parseBuildDiagnostics) { + collections.build.clear(); + compileConsumer = new CompileOutputConsumer(cmakeDriver.config); + compileConsumer.onDiagnostic(({ source, diagnostic: rawDiag }) => { + if (!cmakeDriver.config.enableOutputParsers?.includes(source.toLowerCase())) { + return; + } + const severity = diagnosticSeverity(rawDiag.severity); + if (severity === undefined) { + return; + } + const filepath = util.resolvePath(rawDiag.file, cmakeDriver.binaryDir); + const diag = new vscode.Diagnostic(rawDiag.location, rawDiag.message, severity); + diag.source = source; + if (rawDiag.code) { + diag.code = rawDiag.code; + } + addDiagnosticToCollection(collections.build, { filepath, diag }); + }); + } + + // Wrap the output consumer so build output is forwarded to both the terminal + // (for display) and the compile consumer (for diagnostic parsing). + const outputConsumer: proc.OutputConsumer = compileConsumer + ? { + output: (line: string) => { + this.output(line); + compileConsumer!.output(line); + }, + error: (line: string) => { + this.error(line); + compileConsumer!.error(line); + } + } + : this; + try { // On Windows, command-type-specific detection takes precedence over config.shell const commandShell = process.platform === 'win32' ? proc.determineShell(cmakePath) : false; const shell = (commandShell || undefined) ?? cmakeDriver.config.shell ?? undefined; - this._process = proc.execute(cmakePath, args, this, { ...this.options, shell }); + this._process = proc.execute(cmakePath, args, outputConsumer, { ...this.options, shell }); const result: proc.ExecutionResult = await this._process.result; this._process = undefined; + + if (compileConsumer) { + const fileDiags = await compileConsumer.resolveDiagnostics(cmakeDriver.binaryDir, cmakeDriver.sourceDir); + if (fileDiags) { + populateCollection(collections.build, fileDiags); + } + compileConsumer.dispose(); + } + if (result.retc) { this.writeEmitter.fire(localize("build.finished.with.error", "{0} finished with error(s).", taskName) + endOfLine); } else if (result.stderr || (result.stdout && result.stdout.includes(": warning"))) { @@ -605,6 +665,9 @@ export class CustomBuildTaskTerminal extends proc.CommandConsumer implements vsc } return result.retc ?? 0; } catch { + if (compileConsumer) { + compileConsumer.dispose(); + } this.writeEmitter.fire(localize("build.finished.with.error", "{0} finished with error(s).", taskName) + endOfLine); if (doCloseEmitter) { this.closeEmitter.fire(-1); diff --git a/src/cmakeValue.ts b/src/cmakeValue.ts new file mode 100644 index 0000000000..c5b82cf09c --- /dev/null +++ b/src/cmakeValue.ts @@ -0,0 +1,99 @@ +/** + * Pure utility functions for CMake value conversion. + * This module has NO dependencies on 'vscode' or 'vscode-nls', making it safe + * to import in backend tests that cannot load the vscode module. + */ + +/** + * Represents a CMake cache variable value with its type. + */ +export interface CMakeValue { + type: ('UNKNOWN' | 'BOOL' | 'STRING' | 'FILEPATH' | 'PATH' | ''); // There are more types, but we don't care ATM + value: string; +} + +/** + * Escape a string so it can be used as a regular expression + */ +function escapeStringForRegex(str: string): string { + return str.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1'); +} + +/** + * Replace all occurrences of `needle` in `str` with `what` + */ +function replaceAll(str: string, needle: string, what: string): string { + const pattern = escapeStringForRegex(needle); + const re = new RegExp(pattern, 'g'); + return str.replace(re, what); +} + +/** + * Checks if the given value is a string. + */ +function isString(x: unknown): x is string { + return Object.prototype.toString.call(x) === "[object String]"; +} + +/** + * Converts a given value to a CMake-compatible value. + * + * **Semicolon Handling:** + * - **String values**: Semicolons are escaped (`;` → `\;`) to prevent CMake from + * interpreting them as list separators. Use this for single values that happen + * to contain semicolons. + * - **Array values**: Elements are joined with semicolons WITHOUT escaping, + * producing a proper CMake list. Use this when you intentionally want a CMake + * list (e.g., `LLVM_ENABLE_PROJECTS`). + * + * @param value The value to convert. Can be: + * - `boolean`: Converts to CMake BOOL ("TRUE" or "FALSE") + * - `string`: Converts to STRING with semicolons escaped + * - `number`: Converts to STRING + * - `string[]`: Joins elements with `;` to form a CMake list (no escaping) + * - `CMakeValue`: Passes through unchanged + * @returns A CMakeValue object with the appropriate type and value. + * @throws An error if the input value is invalid or cannot be converted. + * + * @example + * // String with semicolon - ESCAPED (for single values containing semicolons) + * cmakeify("clang;lld") + * // Returns: { type: 'STRING', value: 'clang\\;lld' } + * // Produces: -DVAR:STRING=clang\;lld + * + * @example + * // Array - NOT escaped (for CMake lists) + * cmakeify(["clang", "lld"]) + * // Returns: { type: 'STRING', value: 'clang;lld' } + * // Produces: -DVAR:STRING=clang;lld (a proper CMake list) + */ +export function cmakeify(value: (string | boolean | number | string[] | CMakeValue)): CMakeValue { + const ret: CMakeValue = { + type: 'UNKNOWN', + value: '' + }; + if (value === true || value === false) { + ret.type = 'BOOL'; + ret.value = value ? 'TRUE' : 'FALSE'; + } else if (isString(value)) { + ret.type = 'STRING'; + // String values have semicolons escaped to prevent CMake list interpretation + ret.value = replaceAll(value, ';', '\\;'); + } else if (typeof value === 'number') { + ret.type = 'STRING'; + ret.value = value.toString(); + } else if (value instanceof Array) { + ret.type = 'STRING'; + // Array values are joined with semicolons WITHOUT escaping to form CMake lists + ret.value = value.join(';'); + } else if (Object.getOwnPropertyNames(value).filter(e => e === 'type' || e === 'value').length === 2) { + ret.type = value.type; + ret.value = value.value; + } else { + // Note: This error message is not localized because this module must remain + // free of vscode-nls dependencies to support import in backend unit tests. + // This error is rare (only occurs with malformed input) and primarily aids debugging. + throw new Error(`Invalid value to convert to cmake value: ${JSON.stringify(value)}`); + } + return ret; +} diff --git a/src/compilationDatabase.ts b/src/compilationDatabase.ts index c94191609e..3acfec76a3 100644 --- a/src/compilationDatabase.ts +++ b/src/compilationDatabase.ts @@ -50,6 +50,9 @@ export class CompilationDatabase { database.push(...content); } catch (e) { log.warning(localize('error.parsing.compilation.database', 'Error parsing compilation database {0}: {1}', `"${path}"`, util.errorToString(e))); + if (e instanceof Error && e.stack) { + log.debug(e.stack); + } return null; } } diff --git a/src/config.ts b/src/config.ts index f1d99668dc..f1e048fc11 100644 --- a/src/config.ts +++ b/src/config.ts @@ -164,6 +164,24 @@ export interface FailurePattern { export type FailurePatternsConfig = (FailurePattern | string)[] | string; +export type ModifyListsActionMode = 'no' | 'yes' | 'ask'; +export type ModifyListsVariableSelection = 'never' | 'auto' | 'askFirstParentDir' | 'askParentDirs'; +export type ModifyListsTargetSelection = 'auto' | 'askNearestSourceDir' | 'askParentSourceDirs'; +export type ModifyListsTargetCommandInvocationSelection = 'auto' | 'askFirstParentDir' | 'askParentDirs'; +export type ModifyListsScopeSelection = 'auto' | 'ask'; + +export interface ModifyListsSettings { + addNewSourceFiles: ModifyListsActionMode; + removeDeletedSourceFiles: ModifyListsActionMode; + variableSelection: ModifyListsVariableSelection; + sourceVariables: string[]; + targetSelection: ModifyListsTargetSelection; + targetCommandInvocationSelection: ModifyListsTargetCommandInvocationSelection; + targetSourceCommands: string[]; + scopeSelection: ModifyListsScopeSelection; + sourceListKeywords: string[]; +} + export interface ExtensionConfigurationSettings { autoSelectActiveFolder: boolean; defaultActiveFolder: string | null; @@ -186,7 +204,7 @@ export interface ExtensionConfigurationSettings { buildToolArgs: string[]; parallelJobs: number; ctestPath: string; - ctest: { parallelJobs: number; allowParallelJobs: boolean; testExplorerIntegrationEnabled: boolean; testSuiteDelimiter: string; testSuiteDelimiterMaxOccurrence: number; failurePatterns: FailurePatternsConfig; debugLaunchTarget: string | null }; + ctest: { parallelJobs: number; allowParallelJobs: boolean; testExplorerIntegrationEnabled: boolean; testSuiteDelimiter: string; testSuiteDelimiterMaxOccurrence: number; failurePatterns: FailurePatternsConfig; debugLaunchTarget: string | null; neverDebugTestsWithLaunchConfiguration: boolean | null }; parseBuildDiagnostics: boolean; enabledOutputParsers: string[]; debugConfig: CppDebugConfiguration; @@ -205,6 +223,7 @@ export interface ExtensionConfigurationSettings { emscriptenSearchDirs: string[]; mergedCompileCommands: string | null; copyCompileCommands: string | null; + postConfigureTask: string | null; loadCompileCommands: boolean; configureOnOpen: boolean; configureOnEdit: boolean; @@ -230,6 +249,7 @@ export interface ExtensionConfigurationSettings { automaticReconfigure: boolean; pinnedCommands: string[]; enableAutomaticKitScan: boolean; + removeStaleKitsOnScan: boolean; enableLanguageServices: boolean; preRunCoverageTarget: string | null; postRunCoverageTarget: string | null; @@ -238,6 +258,8 @@ export interface ExtensionConfigurationSettings { setBuildTargetSameAsLaunchTarget: boolean; additionalBuildProblemMatchers: BuildProblemMatcherConfig[]; shell: string | null; + modifyLists: ModifyListsSettings; + outlineViewType: string; } type EmittersOf = { @@ -418,6 +440,9 @@ export class ConfigurationReader implements vscode.Disposable { get ctestDebugLaunchTarget(): string | null { return this.configData.ctest.debugLaunchTarget; } + get ctestNeverDebugTestsWithLaunchConfiguration(): boolean | null { + return this.configData.ctest.neverDebugTestsWithLaunchConfiguration; + } get parseBuildDiagnostics(): boolean { return !!this.configData.parseBuildDiagnostics; } @@ -544,12 +569,23 @@ export class ConfigurationReader implements vscode.Disposable { } get additionalCompilerSearchDirs(): string[] { + return ConfigurationReader.getAdditionalCompilerSearchDirsFromConfig(this.configData); + } + + /** + * Extract additionalCompilerSearchDirs from raw config data, applying the + * mingwSearchDirs deprecation fallback. This is intentionally static so + * callers that only have an `ExtensionConfigurationSettings` object (e.g. + * the multiroot aggregation in extension.ts) can reuse the logic without + * constructing a full ConfigurationReader. + */ + static getAdditionalCompilerSearchDirsFromConfig(configData: ExtensionConfigurationSettings): string[] { // mingwSearchDirs is deprecated, but we still use it if additionalCompilerSearchDirs is not set for backwards compatibility - if (this.configData.additionalCompilerSearchDirs.length === 0 && this.configData.mingwSearchDirs.length > 0) { + if (configData.additionalCompilerSearchDirs.length === 0 && configData.mingwSearchDirs.length > 0) { log.warning(localize('please.upgrade.configuration', 'The setting {0} is replaced by {1}. Please upgrade your configuration.', '"mingwSearchDirs"', '"additionalCompilerSearchDirs"')); - return this.configData.mingwSearchDirs; + return configData.mingwSearchDirs; } - return this.configData.additionalCompilerSearchDirs; + return configData.additionalCompilerSearchDirs; } get additionalKits(): string[] { return this.configData.additionalKits; @@ -563,6 +599,9 @@ export class ConfigurationReader implements vscode.Disposable { get copyCompileCommands(): string | null { return this.configData.copyCompileCommands; } + get postConfigureTask(): string | null { + return this.configData.postConfigureTask; + } get loadCompileCommands(): boolean { return this.configData.loadCompileCommands; } @@ -609,6 +648,10 @@ export class ConfigurationReader implements vscode.Disposable { return this.configData.enableAutomaticKitScan; } + get removeStaleKitsOnScan(): boolean { + return this.configData.removeStaleKitsOnScan; + } + get enableLanguageServices(): boolean { return this.configData.enableLanguageServices; } @@ -637,6 +680,14 @@ export class ConfigurationReader implements vscode.Disposable { return this.configData.setBuildTargetSameAsLaunchTarget; } + get modifyLists(): ModifyListsSettings { + return this.configData.modifyLists; + } + + get outlineViewType(): string { + return this.configData.outlineViewType; + } + private readonly emitters: EmittersOf = { autoSelectActiveFolder: new vscode.EventEmitter(), defaultActiveFolder: new vscode.EventEmitter(), @@ -660,7 +711,7 @@ export class ConfigurationReader implements vscode.Disposable { parallelJobs: new vscode.EventEmitter(), ctestPath: new vscode.EventEmitter(), cpackPath: new vscode.EventEmitter(), - ctest: new vscode.EventEmitter<{ parallelJobs: number; allowParallelJobs: boolean; testExplorerIntegrationEnabled: boolean; testSuiteDelimiter: string; testSuiteDelimiterMaxOccurrence: number; failurePatterns: FailurePatternsConfig; debugLaunchTarget: string | null }>(), + ctest: new vscode.EventEmitter<{ parallelJobs: number; allowParallelJobs: boolean; testExplorerIntegrationEnabled: boolean; testSuiteDelimiter: string; testSuiteDelimiterMaxOccurrence: number; failurePatterns: FailurePatternsConfig; debugLaunchTarget: string | null; neverDebugTestsWithLaunchConfiguration: boolean | null }>(), parseBuildDiagnostics: new vscode.EventEmitter(), enabledOutputParsers: new vscode.EventEmitter(), debugConfig: new vscode.EventEmitter(), @@ -678,6 +729,7 @@ export class ConfigurationReader implements vscode.Disposable { emscriptenSearchDirs: new vscode.EventEmitter(), mergedCompileCommands: new vscode.EventEmitter(), copyCompileCommands: new vscode.EventEmitter(), + postConfigureTask: new vscode.EventEmitter(), loadCompileCommands: new vscode.EventEmitter(), configureOnOpen: new vscode.EventEmitter(), configureOnEdit: new vscode.EventEmitter(), @@ -703,6 +755,7 @@ export class ConfigurationReader implements vscode.Disposable { automaticReconfigure: new vscode.EventEmitter(), pinnedCommands: new vscode.EventEmitter(), enableAutomaticKitScan: new vscode.EventEmitter(), + removeStaleKitsOnScan: new vscode.EventEmitter(), enableLanguageServices: new vscode.EventEmitter(), preRunCoverageTarget: new vscode.EventEmitter(), postRunCoverageTarget: new vscode.EventEmitter(), @@ -710,7 +763,9 @@ export class ConfigurationReader implements vscode.Disposable { useFolderPropertyInBuildTargetDropdown: new vscode.EventEmitter(), additionalBuildProblemMatchers: new vscode.EventEmitter(), shell: new vscode.EventEmitter(), - setBuildTargetSameAsLaunchTarget: new vscode.EventEmitter() + setBuildTargetSameAsLaunchTarget: new vscode.EventEmitter(), + modifyLists: new vscode.EventEmitter(), + outlineViewType: new vscode.EventEmitter() }; /** diff --git a/src/contextKeyExpr.ts b/src/contextKeyExpr.ts index 589a028fa8..d4eb687f74 100644 --- a/src/contextKeyExpr.ts +++ b/src/contextKeyExpr.ts @@ -5,7 +5,6 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import * as nls from 'vscode-nls'; -import { Exception } from 'handlebars'; const localize: nls.LocalizeFunc = nls.loadMessageBundle(); const CONSTANT_VALUES = new Map(); @@ -166,7 +165,7 @@ export class Scanner { case TokenType.EOF: return 'EOF'; default: - throw new Exception(`unhandled token type: ${JSON.stringify(token)}; have you forgotten to add a case?`); + throw new Error(`unhandled token type: ${JSON.stringify(token)}; have you forgotten to add a case?`); } } @@ -840,8 +839,6 @@ export const enum CharCode { /** allow register constant context keys that are known only after startup; requires running `substituteConstants` on the context key - https://github.com/microsoft/vscode/issues/174218#issuecomment-1437972127 */ export function setConstant(key: string, value: boolean) { - // if (CONSTANT_VALUES.get(key) !== undefined) { throw Exception('contextkey.setConstant(k, v) invoked with already set constant `k`'); } - CONSTANT_VALUES.set(key, value); } diff --git a/src/ctest.ts b/src/ctest.ts index 2b2aff5c86..b6b4476e5c 100644 --- a/src/ctest.ts +++ b/src/ctest.ts @@ -5,6 +5,7 @@ import * as xml2js from 'xml2js'; import * as zlib from 'zlib'; import { CMakeDriver } from '@cmt/drivers/drivers'; +import { CodeModelContent } from '@cmt/drivers/codeModel'; import * as logging from '@cmt/logging'; import { fs } from '@cmt/pr'; import * as util from '@cmt/util'; @@ -24,6 +25,14 @@ const localize: nls.LocalizeFunc = nls.loadMessageBundle(); const log = logging.createLogger('ctest'); +const magicKey = 'ctest.magic.key'; +// Used as magic value +let sessionNum = 0; + +// Session-scoped set: tracks which workspaces (by settings.json identity) have already been prompted +// about neverDebugTestsWithLaunchConfiguration. Each workspace gets prompted at most once per session. +const promptedNeverDebugWithLaunchWorkspaces = new Set(); + // Placeholder in the test explorer when test preset is not selected const testPresetRequired = '_test_preset_required_'; @@ -157,6 +166,96 @@ export function searchOutputForFailures(patterns: FailurePatternsConfig, output: return messages; } +/** + * Finds the minimal regex fragments to match targets from the superset. + * If a target is a prefix of a forbidden string, it returns an exact match. + * Otherwise, it returns a minimal prefix. + * + * @param superset : the list of all individual test names (individual and or group names) + * @param targets : the list of test names (individual and or group names) we want to match. + * @returns : the list of regex fragments to match the targets without matching any other test from the superset + */ +export function getMinimalRegexFragments(superset: string[], targets: string[]): string[] { + interface TrieNode { + children: Map; + forbiddenCount: number; + } + + const targetSet = new Set(targets); + const forbidden = superset.filter(s => !targetSet.has(s)); + + if (targets.length === 0) { + return []; + } + if (forbidden.length === 0) { + return ["^."]; + } + + const root: TrieNode = { children: new Map(), forbiddenCount: 0 }; + + // 1. Build Trie with forbidden strings + for (const s of forbidden) { + let current = root; + for (const char of s) { + if (!current.children.has(char)) { + current.children.set(char, { children: new Map(), forbiddenCount: 0 }); + } + current = current.children.get(char)!; + current.forbiddenCount++; + } + } + + const fragmentSet = new Set(); + + // 2. Identify the optimal regex fragment for each target + for (const target of targets) { + let current = root; + let prefix = ""; + let foundUnique = false; + + for (const char of target) { + prefix += char; + const next = current.children.get(char); + + if (!next || next.forbiddenCount === 0) { + // Safe unique prefix found + fragmentSet.add(`^${util.escapeStringForRegex(prefix)}`); + foundUnique = true; + break; + } + current = next; + } + + // 3. The "Swallowed" Target Case + // Target is a prefix of a forbidden string (e.g., "Test" vs "Test.1") + if (!foundUnique) { + fragmentSet.add(`^${util.escapeStringForRegex(target)}$`); + } + } + + // 4. Remove redundant fragments + // Sort by length: "Test\." (length 6) comes before "Test\.x\.1" (length 10) + const sorted = Array.from(fragmentSet).sort((a, b) => a.length - b.length); + const minimalFragments: string[] = []; + + for (const fragment of sorted) { + // If we already have a prefix that covers this fragment, skip it. + // Note: 'existing' only matches 'fragment' if it's a true prefix (no $ anchor) + const isRedundant = minimalFragments.some(existing => { + if (existing.endsWith('$')) { + return false; // Exact matches can't cover other things + } + return fragment.startsWith(existing); + }); + + if (!isRedundant) { + minimalFragments.push(fragment); + } + } + + return minimalFragments; +} + function matchToTestMessage(pat: FailurePattern, match: RegExpMatchArray): vscode.TestMessage { const file = match[pat.file as number]; const line = pat.line ? parseLineMatch(match[pat.line]) : 0; @@ -278,6 +377,14 @@ interface TestAndParentSuite { type TestsType = "CTestInfo" | "LegacyCTest"; +interface ConfigItem extends vscode.QuickPickItem { + label: string; + config: vscode.DebugConfiguration; + detail: string; + // Undefined for workspace launch config + folder?: vscode.WorkspaceFolder; +} + export class CTestDriver implements vscode.Disposable { /** * @param projectController Required for test explorer to work properly. Setting as optional to avoid breaking tests. @@ -425,7 +532,8 @@ export class CTestDriver implements vscode.Disposable { const ctestArgs = await this.getCTestArgs(driver, customizedTask, testPreset) || []; if (testsToRun && testsToRun.length > 0) { ctestArgs.push("-R"); - const testsNamesRegex = testsToRun.map(t => `^${util.escapeStringForRegex(t)}\$`).join('|'); + const superset = this.getTestNames() || []; + const testsNamesRegex = getMinimalRegexFragments(superset, testsToRun).join('|'); ctestArgs.push(testsNamesRegex); } @@ -588,6 +696,8 @@ export class CTestDriver implements vscode.Disposable { if (!this.ws.config.ctestAllowParallelJobs) { for (const driver of driverMap.values()) { + // Sort tests alphabetically by label to match the Test Explorer display order. + driver.tests.sort((a, b) => (a.label).localeCompare(b.label)); for (const test of driver.tests) { if (cancellation && cancellation.isCancellationRequested) { run.skipped(test); @@ -596,7 +706,8 @@ export class CTestDriver implements vscode.Disposable { run.started(test); - const _ctestArgs = driver.ctestArgs.concat('-R', `^${util.escapeStringForRegex(test.id)}\$`); + const superset = this.getTestNames() || []; + const _ctestArgs = driver.ctestArgs.concat('-R', getMinimalRegexFragments(superset, [test.id]).join('|')); const testResults = await this.runCTestImpl(driver.driver, driver.ctestPath, _ctestArgs, cancellation, customizedTask, consumer); @@ -634,21 +745,21 @@ export class CTestDriver implements vscode.Disposable { // then there may be a scenario when the user requested only a subset of tests to be ran. // In this case, we should specifically use the -R flag to select the exact tests. // Otherwise, we can leave it to the -T flag to run all tests. + let targetTests: vscode.TestItem[] | undefined; if (entryPoint === RunCTestHelperEntryPoint.TestExplorer && testExplorer && this._tests && this._tests.tests.length !== driver.tests.length) { - uniqueCtestArgs.push("-R"); - const testsNamesRegex = driver.tests.map(t => { - run.started(t); - return `^${util.escapeStringForRegex(t.id)}\$`; - }).join('|'); - uniqueCtestArgs.push(testsNamesRegex); + targetTests = driver.tests; } else if (testsToRun && testsToRun.length > 0) { + targetTests = driver.tests.filter(t => testsToRun.includes(t.id)); + } + + if (targetTests) { uniqueCtestArgs.push("-R"); - const tests = driver.tests.filter(t => testsToRun.includes(t.id)); - const testsNamesRegex = tests.map(t => { + const superset = this.getTestNames() || []; + const targets = targetTests.map(t => { run.started(t); - return `^${util.escapeStringForRegex(t.id)}\$`; - }).join('|'); - uniqueCtestArgs.push(testsNamesRegex); + return t.id; + }); + uniqueCtestArgs.push(getMinimalRegexFragments(superset, targets).join('|')); } const testResults = await this.runCTestImpl(uniqueDriver, uniqueCtestPath, uniqueCtestArgs, cancellation, customizedTask, consumer); @@ -782,9 +893,8 @@ export class CTestDriver implements vscode.Disposable { * Builds a map from normalized executable paths to source file information * by looking at the code model content from the CMake driver. */ - private buildExecutableToSourcesMap(driver: CMakeDriver): Map { + private buildExecutableToSourcesMap(codeModelContent: CodeModelContent | null): Map { const map = new Map(); - const codeModelContent = driver.codeModelContent; if (!codeModelContent) { return map; } @@ -812,6 +922,61 @@ export class CTestDriver implements vscode.Disposable { return map; } + /** + * Resolves the source file and line number for a single CTest test entry. + * Uses a 3-step priority: + * 1) DEF_SOURCE_LINE test property + * 2) Code model executable-to-sources matching + * 3) Backtrace graph (falls back to CMakeLists.txt) + */ + private resolveTestSourceLocation( + test: CTestInfo['tests'][0], + executableToSources: Map | undefined, + backtraceGraph: CTestInfo['backtraceGraph'] | undefined + ): { file?: string; line?: number } { + let file: string | undefined; + let line: number | undefined; + + // 1. Use DEF_SOURCE_LINE CMake test property + const defSourceLineProperty = test.properties.filter(p => p.name === "DEF_SOURCE_LINE")[0]; + if (defSourceLineProperty && defSourceLineProperty.value && typeof defSourceLineProperty.value === 'string') { + const match = defSourceLineProperty.value.match(/(.*):(\d+)/); + if (match && match[1] && match[2]) { + file = match[1]; + line = parseInt(match[2]); + if (isNaN(line)) { + line = undefined; + file = undefined; + } + } + } + + // 2. Match test executable to CMake target sources + if (!file && test.command && test.command.length > 0 && executableToSources) { + const testExe = util.platformNormalizePath(test.command[0]); + const targetInfo = executableToSources.get(testExe); + if (targetInfo && targetInfo.sources.length > 0) { + file = path.resolve(targetInfo.sourceDir, targetInfo.sources[0]); + line = 1; + } + } + + // 3. Backtrace graph (falls back to CMakeLists.txt) + if (!file && backtraceGraph) { + const nodes = backtraceGraph.nodes; + if (test.backtrace !== undefined && nodes[test.backtrace] !== undefined) { + let node = nodes[test.backtrace]; + while (node.parent !== undefined && nodes[node.parent].command !== undefined) { + node = nodes[node.parent]; + } + file = backtraceGraph.files[node.file]; + line = node.line; + } + } + + return { file, line }; + } + private createTestItemAndSuiteTree(testName: string, testExplorerRoot: vscode.TestItem, initializedTestExplorer: vscode.TestController, uri?: vscode.Uri): TestAndParentSuite { let parentSuiteItem = testExplorerRoot; let testLabel = testName; @@ -852,7 +1017,17 @@ export class CTestDriver implements vscode.Disposable { parentSuiteItem = suiteItem; } } - const testItem = initializedTestExplorer.createTestItem(testName, testLabel, uri); + const existing = parentSuiteItem.children.get(testName); + let testItem: vscode.TestItem; + if (existing && existing.uri?.toString() === uri?.toString()) { + testItem = existing; + if (testItem.label !== testLabel) { + testItem.label = testLabel; + } + } else { + // Create or recreate testItem if the uri is stale or it does not already exist + testItem = initializedTestExplorer.createTestItem(testName, testLabel, uri); + } return { test: testItem, parentSuite: parentSuiteItem }; } @@ -865,13 +1040,14 @@ export class CTestDriver implements vscode.Disposable { log.error(localize('folder.not.found.in.test.explorer', 'Folder is not found in Test Explorer: {0}', sourceDir)); return; } - // Clear all children and re-add later - testExplorerRoot.children.replace([]); + + // Keep track of all currently active test ids to remove the invalid ones afterwards + const activeTestIDs = new Set(); if (!ctestArgs) { // Happens when testPreset is not selected const testItem = initializedTestExplorer.createTestItem(testPresetRequired, localize('test.preset.required', 'Select a test preset to discover tests')); - testExplorerRoot.children.add(testItem); + testExplorerRoot.children.replace([testItem]); return; } @@ -879,53 +1055,15 @@ export class CTestDriver implements vscode.Disposable { // Legacy CTest tests for (const test of this.legacyTests) { testExplorerRoot.children.add(initializedTestExplorer.createTestItem(test.name, test.name)); + activeTestIDs.add(test.name); } } else if (testType === "CTestInfo" && this.tests !== undefined) { if (this.tests && this.tests.kind === 'ctestInfo') { // Build a map from executable paths to source files using the code model - const executableToSources = this.buildExecutableToSourcesMap(driver); + const executableToSources = this.buildExecutableToSourcesMap(driver.codeModelContent); this.tests.tests.forEach(test => { - let testDefFile: string | undefined; - let testDefLine: number | undefined; - - // Use DEF_SOURCE_LINE CMake test property to find file and line number - // Property must be set in the test's CMakeLists.txt file or its included modules for this to work - const defSourceLineProperty = test.properties.filter(property => property.name === "DEF_SOURCE_LINE")[0]; - if (defSourceLineProperty && defSourceLineProperty.value && typeof defSourceLineProperty.value === 'string') { - // Use RegEx to match the format "file_path:line" in value[0] - const match = defSourceLineProperty.value.match(/(.*):(\d+)/); - if (match && match[1] && match[2]) { - testDefFile = match[1]; - testDefLine = parseInt(match[2]); - if (isNaN(testDefLine)) { - testDefLine = undefined; - testDefFile = undefined; - } - } - } - - // Try to find the test source file by matching the test executable to a CMake target - if (!testDefFile && test.command && test.command.length > 0) { - const testExe = util.platformNormalizePath(test.command[0]); - const targetInfo = executableToSources.get(testExe); - if (targetInfo && targetInfo.sources.length > 0) { - testDefFile = path.resolve(targetInfo.sourceDir, targetInfo.sources[0]); - testDefLine = 1; - } - } - - const nodes = this.tests!.backtraceGraph.nodes; - if (!testDefFile && test.backtrace !== undefined && nodes[test.backtrace] !== undefined) { - // Use the backtrace graph to find the file and line number - // This finds the CMake module's file and line number and not the test file and line number - let node = nodes[test.backtrace]; - while (node.parent !== undefined && nodes[node.parent].command !== undefined) { - node = nodes[node.parent]; - } - testDefFile = this.tests!.backtraceGraph.files[node.file]; - testDefLine = node.line; - } + const { file: testDefFile, line: testDefLine } = this.resolveTestSourceLocation(test, executableToSources, this.tests!.backtraceGraph); const testAndParentSuite = this.createTestItemAndSuiteTree(test.name, testExplorerRoot, initializedTestExplorer, testDefFile ? vscode.Uri.file(testDefFile) : undefined); const testItem = testAndParentSuite.test; @@ -951,12 +1089,24 @@ export class CTestDriver implements vscode.Disposable { if (testTags.length !== 0) { testItem.tags = [...testItem.tags, ...testTags]; } - parentSuiteItem.children.add(testItem); + activeTestIDs.add(testItem.id); }); }; } + const removeDeletedTests = (collection: vscode.TestItemCollection) => { + collection.forEach((item: vscode.TestItem, collection: vscode.TestItemCollection) => { + if (item.children.size > 0) { + removeDeletedTests(item.children); + } + if (item.children.size === 0 && !activeTestIDs.has(item.id)) { + collection.delete(item.id); + } + }); + }; + + removeDeletedTests(testExplorerRoot.children); } /** @@ -1048,23 +1198,32 @@ export class CTestDriver implements vscode.Disposable { /** * Returns test information suitable for the project outline view. - * Each entry maps a test name to its executable path. + * Each entry maps a test name to its executable path and optionally + * the resolved source file path for click-to-navigate. */ - getTestsForOutline(): { name: string; executablePath: string }[] { + getTestsForOutline(codeModelContent?: CodeModelContent | null): { name: string; executablePath: string; sourceFilePath?: string; sourceFileLine?: number }[] { if (this.tests) { - return this.tests.tests.map(test => ({ - name: test.name, - executablePath: test.command[0] - })); + const executableToSources = codeModelContent ? this.buildExecutableToSourcesMap(codeModelContent) : undefined; + + return this.tests.tests.map(test => { + const { file: sourceFilePath, line: sourceFileLine } = this.resolveTestSourceLocation(test, executableToSources, this.tests!.backtraceGraph); + + return { + name: test.name, + executablePath: test.command[0], + sourceFilePath, + sourceFileLine + }; + }); } return []; } /** - * Returns the executable path, arguments, and working directory for a given test name. + * Returns the executable path, arguments, working directory, and environment for a given test name. * Used by cmakeProject to auto-generate debug configurations without requiring launch.json. */ - getTestInfo(testName: string): { program: string; args: string[]; workingDirectory: string } | undefined { + getTestInfo(testName: string): { program: string; args: string[]; workingDirectory: string; environment: { [key: string]: string } } | undefined { const program = this.testProgram(testName); if (!program) { return undefined; @@ -1072,7 +1231,8 @@ export class CTestDriver implements vscode.Disposable { return { program, args: this.testArgs(testName), - workingDirectory: this.testWorkingDirectory(testName) + workingDirectory: this.testWorkingDirectory(testName), + environment: this.testEnvironment(testName) }; } @@ -1248,7 +1408,7 @@ export class CTestDriver implements vscode.Disposable { run.end(); }; - private async debugCTestHelper(tests: vscode.TestItem[], run: vscode.TestRun, cancellation: vscode.CancellationToken): Promise { + private async debugCTestHelper(tests: vscode.TestItem[], run: vscode.TestRun, cancellation: vscode.CancellationToken, useLaunchJson: boolean = true): Promise { let returnCode: number = 0; if (!await this.checkTestPreset(tests)) { @@ -1271,26 +1431,75 @@ export class CTestDriver implements vscode.Disposable { if (test.children.size > 0) { // Shouldn't reach here now, but not hard to write so keeping it in case we want to have more complicated test hierarchies const children = this.testItemCollectionToArray(test.children); - if (await this.debugCTestHelper(children, run, cancellation)) { + if (await this.debugCTestHelper(children, run, cancellation, useLaunchJson)) { returnCode = -1; } } else { run.started(test); - const session = await project.debugCTest(test.id); - if (session) { - // Wait for the debug session to terminate - await new Promise(resolve => { - const disposable = vscode.debug.onDidTerminateDebugSession((s: vscode.DebugSession) => { - if (s.id === session.id) { - disposable.dispose(); - resolve(); + + // Re-check the setting each iteration so mid-run changes are honored + const shouldBypassQuickPick = !useLaunchJson || this.ws.config.ctestNeverDebugTestsWithLaunchConfiguration === true; + + if (!shouldBypassQuickPick) { + // Determine the workspace folder for this test's project + const workspaceFolder = vscode.workspace.getWorkspaceFolder(vscode.Uri.file(project.folderPath)); + + // Build the unified quick pick: "Debug without launch configuration" + any launch configs + const debugWithoutLaunchConfig: ConfigItem = { + label: localize('debug.without.launch.config', 'Debug without launch configuration'), + config: undefined as any, + detail: '', + picked: true + }; + + const launchConfigs = workspaceFolder ? this.getLaunchConfigs(workspaceFolder) : []; + + let selectedLaunchConfig: ConfigItem | undefined; + + if (launchConfigs.length === 0) { + // No launch configs available — go directly to path A (debug without launch config) + selectedLaunchConfig = undefined; + } else { + // Check if cmake.ctest.debugLaunchTarget auto-selects a config + if (this.ws.config.ctestDebugLaunchTarget) { + const autoSelected = launchConfigs.find(x => x.label === this.ws.config.ctestDebugLaunchTarget); + if (autoSelected) { + selectedLaunchConfig = autoSelected; } - }); - cancellation.onCancellationRequested(() => { - void vscode.debug.stopDebugging(session); - }); - }); + } + + if (!selectedLaunchConfig) { + const allItems: ConfigItem[] = [debugWithoutLaunchConfig, ...launchConfigs]; + const chosen = await vscode.window.showQuickPick(allItems, { + placeHolder: localize('choose.debug.method', 'Choose how to debug the test.') + }); + if (!chosen) { + // User cancelled — skip this test + run.skipped(test); + continue; + } + if (chosen !== debugWithoutLaunchConfig) { + selectedLaunchConfig = chosen; + } + } + } + + if (selectedLaunchConfig) { + // Path B: debug with the selected launch configuration + if (workspaceFolder) { + await this.debugCTestImpl(workspaceFolder, test.id, cancellation, selectedLaunchConfig); + } + } else { + // Path A: debug without launch configuration + // Prompt to set the workspace setting if it hasn't been set yet (fire concurrently with debug session) + this.promptNeverDebugWithLaunch(); + await this.debugWithoutLaunchConfig(project, test.id, cancellation); + } + } else { + // Path A: debug without launch configuration (bypassed quick pick) + await this.debugWithoutLaunchConfig(project, test.id, cancellation); } + // We have no way to get the result, so just mark it as skipped run.skipped(test); } @@ -1298,6 +1507,60 @@ export class CTestDriver implements vscode.Disposable { return returnCode; } + private async debugWithoutLaunchConfig(project: CMakeProject, testId: string, cancellation: vscode.CancellationToken): Promise { + const session = await project.debugCTest(testId); + if (session) { + await new Promise(resolve => { + const disposable = vscode.debug.onDidTerminateDebugSession((s: vscode.DebugSession) => { + if (s.id === session.id) { + disposable.dispose(); + resolve(); + } + }); + cancellation.onCancellationRequested(() => { + void vscode.debug.stopDebugging(session); + }); + }); + } + } + + private promptNeverDebugWithLaunch(): void { + // Key by workspace identity: .code-workspace file for multi-root, or first folder for single-folder + const workspaceKey = vscode.workspace.workspaceFile?.toString() + ?? vscode.workspace.workspaceFolders?.[0]?.uri.toString() + ?? ''; + + // Only prompt if we haven't prompted for this workspace this session + if (promptedNeverDebugWithLaunchWorkspaces.has(workspaceKey)) { + return; + } + + const inspection = vscode.workspace.getConfiguration('cmake.ctest', this.ws.folder?.uri).inspect('neverDebugTestsWithLaunchConfiguration'); + const workspaceValue = inspection?.workspaceValue ?? inspection?.workspaceFolderValue; + + if (workspaceValue !== undefined) { + // Already explicitly set in workspace — don't prompt + return; + } + + promptedNeverDebugWithLaunchWorkspaces.add(workspaceKey); + + const yes = localize('yes', 'Yes'); + const no = localize('no', 'No'); + void vscode.window.showInformationMessage( + localize('never.debug.with.launch.prompt', 'Would you like to always debug tests without a launch configuration in this workspace?'), + yes, + no + ).then(async (choice) => { + if (choice === yes) { + await vscode.workspace.getConfiguration('cmake.ctest', this.ws.folder?.uri).update('neverDebugTestsWithLaunchConfiguration', true, vscode.ConfigurationTarget.WorkspaceFolder); + } else if (choice === no) { + await vscode.workspace.getConfiguration('cmake.ctest', this.ws.folder?.uri).update('neverDebugTestsWithLaunchConfiguration', false, vscode.ConfigurationTarget.WorkspaceFolder); + } + // If dismissed, leave as null — don't prompt again this session + }); + } + private testProgram(testName: string): string { if (this.tests) { for (const test of this.tests.tests) { @@ -1337,7 +1600,211 @@ export class CTestDriver implements vscode.Disposable { return []; } - private async debugTestHandler(request: vscode.TestRunRequest, cancellation: vscode.CancellationToken) { + /** + * Returns the ENVIRONMENT property from the CTest test properties for the given test. + * CTest stores environment as `["KEY=VALUE", ...]`; this returns `{ KEY: "VALUE", ... }`. + */ + private testEnvironment(testName: string): { [key: string]: string } { + const env: { [key: string]: string } = {}; + const property = this.tests?.tests + .find(test => test.name === testName)?.properties + .find(prop => prop.name === 'ENVIRONMENT'); + + if (property) { + const entries = Array.isArray(property.value) ? property.value : [property.value]; + for (const entry of entries) { + const eqIndex = entry.indexOf('='); + if (eqIndex !== -1) { + const name = entry.substring(0, eqIndex); + const value = entry.substring(eqIndex + 1); + env[name] = value; + } + } + } + return env; + } + + private replaceAllInObject(obj: any, str: string, replace: string): T { + const regex = new RegExp(util.escapeStringForRegex(str), 'g'); + if (util.isString(obj)) { + obj = obj.replace(regex, replace); + } else if (util.isArray(obj)) { + for (let i = 0; i < obj.length; i++) { + obj[i] = this.replaceAllInObject(obj[i], str, replace); + } + } else if (typeof obj === 'object') { + for (const key of Object.keys(obj)) { + obj[key] = this.replaceAllInObject(obj[key], str, replace); + } + } + return obj; + } + + private replaceArrayItems(obj: any, str: string, replace: string[]) { + if (util.isArray(obj) && obj.length !== 0) { + const result: any[] = []; + for (let i = 0; i < obj.length; i++) { + if (util.isArray(obj[i]) || typeof obj[i] === 'object') { + result.push(this.replaceArrayItems(obj[i], str, replace)); + } else if (util.isString(obj[i])) { + const replacedItem = this.replaceArrayItemsHelper(obj[i] as string, str, replace); + if (util.isArray(replacedItem)) { + result.push(...replacedItem); + } else { + result.push(replacedItem); + } + } else { + result.push(obj[i]); + } + } + return result; + } + if (typeof obj === 'object') { + for (const key of Object.keys(obj)) { + obj[key] = this.replaceArrayItems(obj[key], str, replace); + } + return obj; + } + return obj; + } + + private replaceArrayItemsHelper(orig: string, str: string, replace: string[]): string | string[] { + if (orig === str) { + return replace; + } + return orig; + } + + /** + * Recursively replaces a string value that exactly matches `str` with an arbitrary replacement value. + * Used for replacing placeholders like `${cmake.testEnvironment}` with an array of objects. + */ + private replaceValueInObject(obj: any, str: string, replace: any): T { + if (util.isString(obj) && obj === str) { + return replace; + } else if (util.isArray(obj)) { + for (let i = 0; i < obj.length; i++) { + obj[i] = this.replaceValueInObject(obj[i], str, replace); + } + } else if (typeof obj === 'object' && obj !== null) { + for (const key of Object.keys(obj)) { + obj[key] = this.replaceValueInObject(obj[key], str, replace); + } + } + return obj; + } + + private getLaunchConfigs(workspaceFolder: vscode.WorkspaceFolder): ConfigItem[] { + // Use inspect() to read configs from each scope separately, avoiding the + // duplicates that get() produces when it merges all scopes together. + const launchConfig = vscode.workspace.getConfiguration('launch', workspaceFolder.uri); + const inspected = launchConfig.inspect('configurations'); + + let allConfigItems: ConfigItem[] = []; + + // Folder-level configs (from .vscode/launch.json) + if (inspected?.workspaceFolderValue) { + allConfigItems = inspected.workspaceFolderValue.map(config => ({ + label: config.name, config, folder: workspaceFolder, detail: workspaceFolder.uri.fsPath + })); + } + + // Workspace-level configs (from .code-workspace file) + if (inspected?.workspaceValue && vscode.workspace.workspaceFile) { + allConfigItems = allConfigItems.concat(inspected.workspaceValue.map(config => ({ + label: config.name, config, detail: vscode.workspace.workspaceFile!.fsPath + }))); + } + + return allConfigItems; + } + + private async debugCTestImpl(workspaceFolder: vscode.WorkspaceFolder, testName: string, cancellation: vscode.CancellationToken, preSelectedConfig?: ConfigItem): Promise { + const magicValue = sessionNum++; + let chosenConfig: ConfigItem | undefined = preSelectedConfig; + + if (!chosenConfig) { + const allConfigItems = this.getLaunchConfigs(workspaceFolder); + if (allConfigItems.length === 0) { + log.error(localize('no.launch.config', 'No launch configurations found.')); + return; + } + + if (allConfigItems.length === 1) { + chosenConfig = allConfigItems[0]; + } + if (!chosenConfig && this.ws.config.ctestDebugLaunchTarget) { + chosenConfig = allConfigItems.find(x => x.label === this.ws.config.ctestDebugLaunchTarget); + } + + if (!chosenConfig) { + // TODO: we can remember the last choice once the CMake side panel work is done + const chosen = await vscode.window.showQuickPick(allConfigItems, { placeHolder: localize('choose.launch.config', 'Choose a launch configuration to debug the test with.') }); + if (chosen) { + chosenConfig = chosen; + } else { + return; + } + } + } + + // Commands can't be used to replace array (i.e., args); and both test program and test args requires folder and + // test name as parameters, which means one launch config for each test. So replacing them here is a better way. + chosenConfig.config = this.replaceAllInObject(chosenConfig.config, '${cmake.testProgram}', this.testProgram(testName)); + chosenConfig.config = this.replaceAllInObject(chosenConfig.config, '${cmake.testWorkingDirectory}', this.testWorkingDirectory(testName)); + + // Replace cmake.testArgs wrapped in quotes, like `"${command:cmake.testArgs}"`, without any spaces in between, + // since we need to replace the quotes as well. + chosenConfig.config = this.replaceArrayItems(chosenConfig.config, '${cmake.testArgs}', this.testArgs(testName)) as vscode.DebugConfiguration; + + // Replace cmake.testEnvironment with the test's ENVIRONMENT property as an array of { name, value } objects. + const testEnv = this.testEnvironment(testName); + const testEnvArray = Object.entries(testEnv).map(([name, value]) => ({ name, value })); + chosenConfig.config = this.replaceValueInObject(chosenConfig.config, '${cmake.testEnvironment}', testEnvArray); + + // Identify the session we started + chosenConfig.config[magicKey] = magicValue; + let onDidStartDebugSession: vscode.Disposable | undefined; + let onDidTerminateDebugSession: vscode.Disposable | undefined; + let sessionId: string | undefined; + const started = new Promise(resolve => { + onDidStartDebugSession = vscode.debug.onDidStartDebugSession((session: vscode.DebugSession) => { + if (session.configuration[magicKey] === magicValue) { + sessionId = session.id; + resolve(session); + } + }); + }); + + const terminated = new Promise(resolve => { + onDidTerminateDebugSession = vscode.debug.onDidTerminateDebugSession((session: vscode.DebugSession) => { + if (session.id === sessionId) { + resolve(); + } + }); + }).finally(() => { + log.info('debugSessionTerminated'); + }); + + const debugStarted = await vscode.debug.startDebugging(chosenConfig.folder, chosenConfig.config!); + if (debugStarted) { + const session = await started; + if (session) { + cancellation.onCancellationRequested(() => { + void vscode.debug.stopDebugging(session); + }); + } + await terminated; + if (onDidStartDebugSession) { + onDidStartDebugSession.dispose(); + } + if (onDidTerminateDebugSession) { + onDidTerminateDebugSession.dispose(); + } + } + } + + private async debugTestHandler(request: vscode.TestRunRequest, cancellation: vscode.CancellationToken, useLaunchJson: boolean = true) { // NOTE: We expect the testExplorer to be undefined when the cmake.ctest.testExplorerIntegrationEnabled is disabled. if (!testExplorer) { return; @@ -1350,7 +1817,7 @@ export class CTestDriver implements vscode.Disposable { this.ctestsEnqueued(tests, run); const buildSucceeded = await this.buildTests(tests, run); if (buildSucceeded) { - await this.debugCTestHelper(tests, run, cancellation); + await this.debugCTestHelper(tests, run, cancellation, useLaunchJson); } else { log.info(localize('test.skip.debug.build.failure', "Not debugging tests due to build failure.")); } @@ -1444,7 +1911,7 @@ export class CTestDriver implements vscode.Disposable { vscode.TestRunProfileKind.Debug, (request: vscode.TestRunRequest, cancellation: vscode.CancellationToken) => { if (request.include === undefined) { - return this.debugTestHandler(request, cancellation); + return this.debugTestHandler(request, cancellation, true); } // Try to find the specific test controller, if we hit any errors, fall back to the default test handler. @@ -1453,12 +1920,14 @@ export class CTestDriver implements vscode.Disposable { const testProject = this.projectController!.getAllCMakeProjects().filter( project => request.include![0].uri!.fsPath.includes(project.folderPath) ); - return testProject![0].cTestController.debugTestHandler(request, cancellation); + return testProject![0].cTestController.debugTestHandler(request, cancellation, true); } catch (e) { - return this.debugTestHandler(request, cancellation); + return this.debugTestHandler(request, cancellation, true); } - } + }, + true ); + } return testExplorer; } diff --git a/src/debug/debugger.ts b/src/debug/debugger.ts index c982f0f588..0e8a94cc36 100644 --- a/src/debug/debugger.ts +++ b/src/debug/debugger.ts @@ -29,6 +29,7 @@ export interface VSCodeDebugConfiguration extends CppDebugConfiguration { * interface that maps to cmake.debugConfig. */ export interface CppDebugConfiguration { + type?: string; symbolSearchPath?: string; additionalSOLibSearchPath?: string; externalConsole?: boolean; @@ -46,6 +47,7 @@ export interface CppDebugConfiguration { launchCompleteCommand?: string; dumpPath?: string; coreDumpPath?: string; + [key: string]: any; } export interface DebuggerLogging { @@ -95,7 +97,7 @@ async function createGDBDebugConfiguration(debuggerPath: string, target: Executa type: 'cppdbg', name: `Debug ${target.name}`, request: 'launch', - cwd: path.dirname(target.path), + cwd: target.debuggerWorkingDirectory || path.dirname(target.path), args: [], MIMode: MIModes.gdb, miDebuggerPath: debuggerPath, @@ -127,7 +129,7 @@ async function createLLDBDebugConfiguration(debuggerPath: string, target: Execut type: 'cppdbg', name: `Debug ${target.name}`, request: 'launch', - cwd: path.dirname(target.path), + cwd: target.debuggerWorkingDirectory || path.dirname(target.path), args: [], MIMode: MIModes.lldb, miDebuggerPath: debuggerPath, @@ -146,7 +148,7 @@ function createMsvcDebugConfiguration(target: ExecutableTarget): VSCodeDebugConf type: 'cppvsdbg', name: `Debug ${target.name}`, request: 'launch', - cwd: path.dirname(target.path), + cwd: target.debuggerWorkingDirectory || path.dirname(target.path), args: [], program: target.path }; @@ -288,6 +290,6 @@ export async function getDebugConfigurationFromCache(cache: CMakeCache, target: } export async function checkDebugger(debuggerPath: string): Promise { - const res = await proc.execute(debuggerPath, ['--version'], null, { shell: true }).result; + const res = await proc.execute(debuggerPath, ['--version'], null, {}).result; return res.retc === 0; } diff --git a/src/diagnostics/cmake.ts b/src/diagnostics/cmake.ts index 233f51e34c..7d55351146 100644 --- a/src/diagnostics/cmake.ts +++ b/src/diagnostics/cmake.ts @@ -22,19 +22,18 @@ export enum StateMessage { */ export class CMakeOutputConsumer extends CommandConsumer { /** - * Matches CMake status lines that signal key configure/generate lifecycle - * milestones. These are always logged at `info` so they remain visible at - * the default logging level. All other stdout lines use `debug`, keeping - * the Output panel concise while still being one setting-change away. + * Matches CMake stdout lines that originate from CMake's own built-in + * modules (compiler detection, ABI probing, feature enumeration, etc.). + * These are logged at `debug` so they stay hidden at the default logging + * level — keeping the Output panel concise — while remaining one + * setting-change away. * - * Matched patterns (all prefixed with `-- `): - * Configuring done / Configuring done (0.1s) - * Configuring incomplete, errors occurred! - * Generating done - * Build files have been written to: + * Everything else (user `message(STATUS "…")` calls, lifecycle milestones + * such as "Configuring done" / "Generating done", etc.) is logged at + * `info` so it is always visible. */ - private static readonly _milestoneRe = - /^-- +(Configuring (done|incomplete)|Generating done|Build files have been written to:)/; + private static readonly _cmakeInternalNoiseRe = + /^-- +(?:The \w+ compiler identification is |Check for working \w+ compiler[: ]|Detecting \w+ compiler ABI info|Detecting \w+ compile features)/; constructor(readonly sourceDir: string, readonly logger?: Logger) { super(); @@ -62,16 +61,16 @@ export class CMakeOutputConsumer extends CommandConsumer { /** * Writes the line of output to the log at a tiered level: - * - Milestone lines (configure/generate done, build files written) → info - * - All other CMake stdout → debug + * - CMake internal noise (compiler detection, ABI probing, etc.) → debug + * - All other CMake stdout (user STATUS messages, milestones, etc.) → info * @param line Line of output */ output(line: string) { if (this.logger) { - if (CMakeOutputConsumer._milestoneRe.test(line)) { - this.logger.info(line); - } else { + if (CMakeOutputConsumer._cmakeInternalNoiseRe.test(line)) { this.logger.debug(line); + } else { + this.logger.info(line); } } super.output(line); diff --git a/src/drivers/cmakeDriver.ts b/src/drivers/cmakeDriver.ts index 8fcd562346..4168bc64c1 100644 --- a/src/drivers/cmakeDriver.ts +++ b/src/drivers/cmakeDriver.ts @@ -95,6 +95,10 @@ export interface ExecutableTarget { * The install locations of the target. */ isInstallTarget?: boolean; + /** + * The working directory for the debugger, from the DEBUGGER_WORKING_DIRECTORY target property. + */ + debuggerWorkingDirectory?: string; } /** @@ -124,6 +128,7 @@ export interface RichTarget { targetType: string; folder?: CodeModelKind.TargetObject; installPaths?: InstallPath[]; + debuggerWorkingDirectory?: string; } export type Target = NamedTarget | RichTarget; @@ -234,17 +239,6 @@ export abstract class CMakeDriver implements vscode.Disposable { private readonly usingFileApi: boolean = false ) { this.sourceDir = this.sourceDirUnexpanded; - // We have a cache of file-compilation terminals. Wipe them out when the - // user closes those terminals. - vscode.window.onDidCloseTerminal(closed => { - for (const [key, term] of this._compileTerms) { - if (term === closed) { - log.debug(localize('user.closed.file.compilation.terminal', 'User closed a file compilation terminal')); - this._compileTerms.delete(key); - break; - } - } - }); } /** @@ -269,9 +263,6 @@ export abstract class CMakeDriver implements vscode.Disposable { */ dispose() { log.debug(localize('disposing.base.cmakedriver', 'Disposing base CMakeDriver')); - for (const term of this._compileTerms.values()) { - term.dispose(); - } for (const sub of [this._settingsSub, this._argsSub, this._envSub, this._buildArgsSub, this._buildEnvSub, this._testArgsSub, this._testEnvSub, this._packEnvSub, this._packArgsSub, this._generalEnvSub]) { sub.dispose(); } @@ -514,7 +505,8 @@ export abstract class CMakeDriver implements vscode.Disposable { getEffectiveSubprocessEnvironment(opts?: proc.ExecutionOptions): Environment { const cur_env = process.env; const kit_env = (this.config.ignoreKitEnv) ? EnvironmentUtils.create() : this._kitEnvironmentVariables; - return EnvironmentUtils.merge([cur_env, kit_env, opts?.environment]); + const cmakeToolsEnv = EnvironmentUtils.create({ VSCODE_CMAKE_TOOLS: "1" }); + return EnvironmentUtils.merge([cur_env, kit_env, cmakeToolsEnv, opts?.environment]); } executeCommand(command: string, args?: string[], consumer?: proc.OutputConsumer, options?: proc.ExecutionOptions): proc.Subprocess { @@ -528,18 +520,6 @@ export abstract class CMakeDriver implements vscode.Disposable { return proc.execute(command, args, consumer, exec_options); } - /** - * File compilation terminals. This is a map, rather than a single terminal - * instance for two reasons: - * - * 1. Different compile commands may require different environment variables. - * 2. Different compile commands may require different working directories. - * - * The key of each terminal is generated deterministically in `runCompileCommand()` - * based on the CWD and environment of the compile command. - */ - private readonly _compileTerms = new Map(); - /** * Launch the given compilation command in an embedded terminal. * @param cmd The compilation command from a compilation database to run @@ -548,30 +528,77 @@ export abstract class CMakeDriver implements vscode.Disposable { const env = await this.getCMakeBuildCommandEnvironment(); if (this.useCMakePresets && this._buildPreset && checkBuildOverridesPresent(this.config)) { - log.info(localize('compile.with.overrides', 'NOTE: You are compiling with preset {0}, but there are some overrides being applied from your VS Code settings.', this._buildPreset.displayName ?? this._buildPreset.name)); + log.info(localize('compile.with.overrides', + 'NOTE: You are compiling with preset {0}, but there are some overrides being applied from your VS Code settings.', + this._buildPreset.displayName ?? this._buildPreset.name)); } - const key = `${cmd.directory}${JSON.stringify(env)}`; - let existing = this._compileTerms.get(key); - if (existing && this.config.clearOutputBeforeBuild) { - this._compileTerms.delete(key); - existing.dispose(); - existing = undefined; - } - if (!existing) { - const shellPath = this.config.shell ?? (process.platform === 'win32' ? 'cmd.exe' : undefined); + const args = cmd.arguments; + if (!args || args.length === 0) { + // Fallback: no structured args available — send the raw command string via terminal. + // This path should never be reached because CompilationDatabase always populates arguments. const term = vscode.window.createTerminal({ name: localize('file.compilation', 'File Compilation'), cwd: cmd.directory, - env, - shellPath + env }); - this._compileTerms.set(key, term); - existing = term; - } - existing.show(); - existing.sendText(cmd.command + '\r\n'); - return existing; + term.show(); + term.sendText(cmd.command, true); + return term; + } + + // Spawn the compiler directly via proc.execute() to avoid the PTY 4096-byte + // input-buffer truncation bug (https://github.com/microsoft/vscode-cmake-tools/issues/4836). + // We open a Pseudoterminal so output appears in the Terminal panel without any + // shell intermediary — args are passed as an array straight to child_process.spawn. + const writeEmitter = new vscode.EventEmitter(); + const closeEmitter = new vscode.EventEmitter(); + let activeProcess: proc.Subprocess | undefined; + + const pty: vscode.Pseudoterminal = { + onDidWrite: writeEmitter.event, + onDidClose: closeEmitter.event, + open: () => { + const executable = args[0]; + const execArgs = args.slice(1); + writeEmitter.fire(proc.buildCmdStr(executable, execArgs) + '\r\n'); + activeProcess = proc.execute(executable, execArgs, { + output: (line: string) => writeEmitter.fire(line + '\r\n'), + error: (line: string) => writeEmitter.fire(line + '\r\n') + }, { cwd: cmd.directory, environment: env }); + activeProcess.result.then(result => { + activeProcess = undefined; + const retc = result.retc ?? 0; + if (retc !== 0) { + writeEmitter.fire(localize('compile.finished.with.error', + 'Compilation finished with error(s).') + '\r\n'); + } else { + writeEmitter.fire(localize('compile.finished.successfully', + 'Compilation finished successfully.') + '\r\n'); + } + closeEmitter.fire(retc); + }, (e: any) => { + activeProcess = undefined; + writeEmitter.fire((e?.message ?? String(e)) + '\r\n'); + closeEmitter.fire(-1); + }); + }, + close: () => { + // Terminate the compiler process if the user closes the terminal + // while compilation is still running, to avoid orphaned processes. + if (activeProcess?.child) { + void util.termProc(activeProcess.child); + activeProcess = undefined; + } + } + }; + + const term = vscode.window.createTerminal({ + name: localize('file.compilation', 'File Compilation'), + pty + }); + term.show(); + return term; } /** @@ -595,6 +622,17 @@ export abstract class CMakeDriver implements vscode.Disposable { } } + /** + * Remove the entire build directory. + */ + protected async _cleanBuildDirectory() { + const build_dir = this.binaryDir; + if (await fs.exists(build_dir)) { + log.info(localize('removing', 'Removing {0}', encodeURI(build_dir))); + await fs.rmdir(build_dir); + } + } + /** * Change the current configure preset. This lets the driver reload, if necessary. * @param configurePreset The new configure preset @@ -748,7 +786,11 @@ export abstract class CMakeDriver implements vscode.Disposable { return; } - log.info(localize('switching.to.kit', 'Switching to kit: {0}', kit.name)); + let switch_to_kit_info = localize('switching.to.kit', 'Switching to kit: {0}', kit.name); + if (Array.isArray(kit.visualStudioArguments)) { + switch_to_kit_info += ` visualStudioArguments: ${JSON.stringify(kit.visualStudioArguments)}`; + } + log.info(switch_to_kit_info); const oldBinaryDir = this.binaryDir; const needsCleanIfKitChange = kitChangeNeedsClean(kit, this._kit); @@ -1110,6 +1152,26 @@ export abstract class CMakeDriver implements vscode.Disposable { return this.configure(trigger, extra_args, consumer, cancelInformation, debuggerInformation); } + /** + * Perform a full clean configure. Deletes the entire build directory before running the config. + * @param consumer The output consumer + */ + public async fullCleanConfigure(trigger: ConfigureTrigger, extra_args: string[], consumer?: proc.OutputConsumer, cancelInformation?: ConfigureCancelInformation): Promise { + if (this.isConfigInProgress) { + await this.preconditionHandler(CMakePreconditionProblems.ConfigureIsAlreadyRunning); + return { exitCode: -1, resultType: ConfigureResultType.ForcedCancel }; + } + if (this.cmakeBuildRunner.isBuildInProgress()) { + await this.preconditionHandler(CMakePreconditionProblems.BuildIsAlreadyRunning); + return { exitCode: -1, resultType: ConfigureResultType.ConfigureInProgress }; + } + this.isConfigInProgress = true; + await this._cleanBuildDirectory(); + this.isConfigInProgress = false; + + return this.configure(trigger, extra_args, consumer, cancelInformation); + } + async testCompilerVersion(program: string, cwd: string, arg: string | undefined, regexp: RegExp, captureGroup: number): Promise { const args = []; if (arg) { @@ -1649,6 +1711,9 @@ export abstract class CMakeDriver implements vscode.Disposable { telemetryProperties.VisualStudioArchitecture = this._kit?.visualStudioArchitecture; } + if (Array.isArray(this._kit?.visualStudioArguments)) { + telemetryProperties.VisualStudioArguments = JSON.stringify(this._kit?.visualStudioArguments); + } } const telemetryMeasures: telemetry.Measures = { @@ -1796,7 +1861,7 @@ export abstract class CMakeDriver implements vscode.Disposable { } if (this._kit.cmakeSettings) { util.objectPairs(this._kit.cmakeSettings) - .forEach(([key, value]) => settingMap[key] = util.cmakeify(value as string)); + .forEach(([key, value]) => settingMap[key] = util.cmakeify(value)); } return util.objectPairs(settingMap).map(([key, value]) => { @@ -2062,9 +2127,9 @@ export abstract class CMakeDriver implements vscode.Disposable { if (useBuildTask) { const task: CMakeTask | undefined = await CMakeTaskProvider.findBuildTask(this.workspaceFolder, this._buildPreset?.name, targets, this.expansionOptions); if (task) { - const resolvedTask: CMakeTask | undefined = await CMakeTaskProvider.resolveInternalTask(task); - if (resolvedTask) { - await this.cmakeBuildRunner.setBuildProcessForTask(await vscode.tasks.executeTask(resolvedTask)); + const resolved = await CMakeTaskProvider.resolveInternalTask(task); + if (resolved) { + await this.cmakeBuildRunner.setBuildProcessForTask(await vscode.tasks.executeTask(resolved.task), resolved.exitCodePromise); } } } else { diff --git a/src/drivers/cmakeFileApi.ts b/src/drivers/cmakeFileApi.ts index 660b455b32..8c01e75877 100644 --- a/src/drivers/cmakeFileApi.ts +++ b/src/drivers/cmakeFileApi.ts @@ -8,6 +8,7 @@ import * as cache from '@cmt/cache'; import { + BacktraceGraph, CodeModelConfiguration, CodeModelContent, CodeModelFileGroup, @@ -171,6 +172,10 @@ export namespace CodeModelKind { name: string; } + export interface DebuggerInfo { + workingDirectory?: string; + } + export interface TargetObject { name: string; type: string; @@ -183,6 +188,8 @@ export namespace CodeModelKind { folder?: Folder; isGeneratorProvided?: boolean; install?: InstallInfo; + debugger?: DebuggerInfo; + backtraceGraph?: BacktraceGraph; } } @@ -427,7 +434,8 @@ async function convertTargetObjectFileToExtensionTarget(buildDirectory: string, targetType: targetObject.type, folder: targetObject.folder, type: 'rich' as 'rich', - installPaths: installPaths + installPaths: installPaths, + debuggerWorkingDirectory: targetObject.debugger?.workingDirectory } as RichTarget; } @@ -538,6 +546,7 @@ async function loadCodeModelTarget(rootPaths: CodeModelKind.PathInfo, jsonFile: sysroot, folder: targetObject.folder, dependencies: targetObject.dependencies, + backtraceGraph: targetObject.backtraceGraph, install: targetObject.install, isGeneratorProvided: targetObject.isGeneratorProvided } as CodeModelTarget; @@ -595,9 +604,9 @@ export async function loadToolchains(filename: string): Promise { if (el.compiler.path) { if (el.compiler.target) { - acc.set(el.language, { path: el.compiler.path, target: el.compiler.target }); + acc.set(el.language, { path: el.compiler.path, target: el.compiler.target, sourceFileExtensions: el.sourceFileExtensions }); } else { - acc.set(el.language, { path: el.compiler.path }); + acc.set(el.language, { path: el.compiler.path, sourceFileExtensions: el.sourceFileExtensions }); } } return acc; diff --git a/src/drivers/cmakeFileApiDriver.ts b/src/drivers/cmakeFileApiDriver.ts index 3c99a8c295..28d10b6b50 100644 --- a/src/drivers/cmakeFileApiDriver.ts +++ b/src/drivers/cmakeFileApiDriver.ts @@ -428,7 +428,8 @@ export class CMakeFileApiDriver extends CMakeDriver { const executableTargetsWithInstall = uniqueExecTargets.map(t => ({ name: t.name, path: (t as RichTarget).filepath, - isInstallTarget: false + isInstallTarget: false, + debuggerWorkingDirectory: (t as RichTarget).debuggerWorkingDirectory })); const installLoc = localize("cmake.install.name", "Install"); @@ -440,7 +441,8 @@ export class CMakeFileApiDriver extends CMakeDriver { executableTargetsWithInstall.push({ name: `${target.name} (${installLoc}${includePath ? ` - ${installPath.subPath}` : ''})`, path: installPath.path, - isInstallTarget: true + isInstallTarget: true, + debuggerWorkingDirectory: target.debuggerWorkingDirectory }); } } diff --git a/src/drivers/cmakeServerDriver.ts b/src/drivers/cmakeServerDriver.ts index d47e4de35c..797d9a8984 100644 --- a/src/drivers/cmakeServerDriver.ts +++ b/src/drivers/cmakeServerDriver.ts @@ -183,6 +183,9 @@ export class CMakeServerDriver extends CMakeDriver { } catch (e) { if (e instanceof ServerError) { log.error(localize('cmake.configure.error', 'Error during CMake configure: {0}', errorToString(e))); + if (e.stack) { + log.debug(e.stack); + } return 1; } else { throw e; diff --git a/src/drivers/codeModel.ts b/src/drivers/codeModel.ts index 09a395d209..4c8408c10e 100644 --- a/src/drivers/codeModel.ts +++ b/src/drivers/codeModel.ts @@ -10,11 +10,25 @@ export type CodeModelContent = api.CodeModel.Content; // TODO: Move framework definitions to the public API repo to avoid this intersection type. export type CodeModelFileGroup = api.CodeModel.FileGroup & { frameworks?: { path: string }[] }; export type CodeModelProject = api.CodeModel.Project; -// TODO: If requested, move folder, dependencies, and isGeneratorProvided definition to the public API repo to avoid this intersection type. -export type CodeModelTarget = api.CodeModel.Target & { folder?: { name: string }; dependencies?: { backtrace: number; id: string }[]; isGeneratorProvided?: boolean; install?: {destinations: {path: string}[]; prefix: {path: string}}}; -export type CodeModelToolchain = api.CodeModel.Toolchain; +// TODO: If requested, move folder, dependencies, backtraceGraph, and isGeneratorProvided definition to the public API repo to avoid this intersection type. +export type CodeModelTarget = api.CodeModel.Target & { folder?: { name: string }; dependencies?: { backtrace: number; id: string }[]; backtraceGraph?: BacktraceGraph; isGeneratorProvided?: boolean; install?: {destinations: {path: string}[]; prefix: {path: string}}}; +// TODO: If requested, move sourceFileExtensions to the public API repo to avoid this intersection type. +export type CodeModelToolchain = api.CodeModel.Toolchain & {sourceFileExtensions?: string[]}; export type TargetTypeString = api.CodeModel.TargetType; +export interface BacktraceGraphNode { + file: number; + line?: number; + command?: number; + parent?: number; +} + +export interface BacktraceGraph { + commands: string[]; + files: string[]; + nodes: BacktraceGraphNode[]; +} + /** * Type given when updating the configuration data stored in the file index. */ diff --git a/src/expand.ts b/src/expand.ts index 486f650d12..e74efffb27 100644 --- a/src/expand.ts +++ b/src/expand.ts @@ -149,6 +149,9 @@ export async function expandString(input: string | T, opts: ExpansionOptions, return replaceAll(result, '${dollar}', '$'); } catch (e) { log.warning(localize('exception.expanding.string.full', 'Exception while expanding string {0}: {1}', inputString, errorToString(e))); + if (e instanceof Error && e.stack) { + log.debug(e.stack); + } errorHandler?.tempErrorList.push([localize('exception.expanding.string', 'Exception expanding string'), inputString]); } @@ -269,6 +272,9 @@ async function expandStringHelper(input: string, opts: ExpansionOptions, errorHa subs.set(full, `${result}`); } catch (e) { log.warning(localize('exception.executing.command.full', 'Exception while executing command {0} for string: {1} {2}', command, input, errorToString(e))); + if (e instanceof Error && e.stack) { + log.debug(e.stack); + } errorHandler?.tempErrorList.push([localize('exception.executing.command', 'Exception executing command'), input]); } } diff --git a/src/extension.ts b/src/extension.ts index 0dd2b659f0..8b4ce79972 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -31,7 +31,7 @@ import { StateManager } from './state'; import { cmakeTaskProvider, CMakeTaskProvider } from '@cmt/cmakeTaskProvider'; import * as telemetry from '@cmt/telemetry'; import { ProjectOutline, ProjectNode, TargetNode, SourceFileNode, WorkspaceFolderNode, BaseNode, DirectoryNode, CTestTestNode } from '@cmt/ui/projectOutline/projectOutline'; -import { BookmarksProvider } from '@cmt/ui/bookmarks'; +import { BookmarksProvider, BookmarkNode } from '@cmt/ui/bookmarks'; import * as util from '@cmt/util'; import { ProgressHandle, DummyDisposable, reportProgress, runCommand } from '@cmt/util'; import { DEFAULT_VARIANTS } from '@cmt/kits/variant'; @@ -51,6 +51,7 @@ import { DebugConfigurationProvider, DynamicDebugConfigurationProvider } from '@ import { deIntegrateTestExplorer } from "@cmt/ctest"; import collections from '@cmt/diagnostics/collections'; import { LanguageServiceData } from './languageServices/languageServiceData'; +import { CMakeListsModifier } from './cmakeListsModifier'; nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })(); const localize: nls.LocalizeFunc = nls.loadMessageBundle(); @@ -189,6 +190,7 @@ export class ExtensionManager implements vscode.Disposable { subs.push(project.onTargetNameChanged(FireLate, () => this.updateCodeModel(project))); subs.push(project.onLaunchTargetNameChanged(FireLate, () => this.updateCodeModel(project))); subs.push(project.onActiveBuildPresetChanged(FireLate, () => this.updateCodeModel(project))); + subs.push(project.workspaceContext.config.onChange('outlineViewType', () => this.updateCodeModel(project))); subs.push(project.cTestController.onTestsChanged(() => this.updateTestsInOutline(project))); this.codeModelUpdateSubs.set(project.folderPath, subs); rollbar.takePromise('Post-folder-open', { folder: folder, project: project }, this.postWorkspaceOpen(project)); @@ -409,6 +411,11 @@ export class ExtensionManager implements vscode.Disposable { showCollapseAll: false }); + /** + * Automatic modifier of CMakeLists.txt files + */ + private readonly cmakeListsModifier = new CMakeListsModifier(); + /** * CppTools project configuration provider. Tells cpptools how to search for * includes, preprocessor defs, etc. @@ -679,6 +686,7 @@ export class ExtensionManager implements vscode.Disposable { void this.kitsWatcher.dispose(); this.projectOutlineTreeView.dispose(); this.bookmarksTreeView.dispose(); + this.cmakeListsModifier.dispose(); this.extensionActiveCommandsEmitter.dispose(); pinnedCommands.dispose(); if (this.cppToolsAPI) { @@ -862,7 +870,7 @@ export class ExtensionManager implements vscode.Disposable { if (!cmakeProject) { return; } - const tests = cmakeProject.cTestController.getTestsForOutline(); + const tests = cmakeProject.cTestController.getTestsForOutline(cmakeProject.codeModelContent); this.projectOutline.updateTests(cmakeProject, tests); } @@ -876,6 +884,16 @@ export class ExtensionManager implements vscode.Disposable { void this.bookmarksProvider.reattachTargets(); // Re-apply test data to the outline after code model update this.updateTestsInOutline(cmakeProject); + rollbar.invokeAsync(localize('update.code.model.for.list.modifier', 'Update code model for automatic list file modifier'), {}, async () => { + let cache: CMakeCache; + try { + cache = await CMakeCache.fromPath(await cmakeProject.cachePath); + } catch (e: any) { + rollbar.exception(localize('failed.to.open.cache.file.on.code.model.update', 'Failed to open CMake cache file on code model update'), e); + return; + } + this.cmakeListsModifier.updateCodeModel(cmakeProject, cache); + }); rollbar.invokeAsync(localize('update.code.model.for.cpptools', 'Update code model for cpptools'), {}, async () => { if (vscode.workspace.getConfiguration('C_Cpp', folder.uri).get('intelliSenseEngine')?.toLocaleLowerCase() === 'disabled') { log.debug(localize('update.intellisense.disabled', 'Not updating the configuration provider because {0} is set to {1}', '"C_Cpp.intelliSenseEngine"', '"Disabled"')); @@ -895,7 +913,7 @@ export class ExtensionManager implements vscode.Disposable { try { cache = await CMakeCache.fromPath(await cmakeProject.cachePath); } catch (e: any) { - rollbar.exception(localize('filed.to.open.cache.file.on.code.model.update', 'Failed to open CMake cache file on code model update'), e); + rollbar.exception(localize('failed.to.open.cache.file.on.code.model.update', 'Failed to open CMake cache file on code model update'), e); return; } const drv: CMakeDriver | null = await cmakeProject.getCMakeDriverInstance(); @@ -1061,9 +1079,22 @@ export class ExtensionManager implements vscode.Disposable { if (!vscode.workspace.workspaceFolders || vscode.workspace.workspaceFolders.length < 1) { return; } - const workspaceContext = DirectoryContext.createForDirectory(vscode.workspace.workspaceFolders[0], new StateManager(this.extensionContext, vscode.workspace.workspaceFolders[0])); - const cmakePath: string = await workspaceContext.getCMakePath() || ''; - const duplicateRemoved = await KitsController.scanForKits(cmakePath); + + // Resolve the cmake path from workspace folders. In a multiroot workspace different + // folders may configure different cmake.cmakePath values; try each folder and use the + // first one that resolves to a non-empty path. + let cmakePath = ''; + for (const folder of vscode.workspace.workspaceFolders) { + const workspaceContext = DirectoryContext.createForDirectory(folder, new StateManager(this.extensionContext, folder)); + cmakePath = await workspaceContext.getCMakePath() || ''; + if (cmakePath) { + break; + } + } + + const duplicateRemoved = await KitsController.scanForKits(cmakePath, { + removeStaleCompilerKits: this.workspaceConfig.removeStaleKitsOnScan + }); if (duplicateRemoved) { // Check each project. If there is an active kit set and if it is of the old definition, unset the kit. for (const project of this.projectController.getAllCMakeProjects()) { @@ -1079,38 +1110,60 @@ export class ExtensionManager implements vscode.Disposable { } /** - * Get the current additional compiler search directories, like MinGW directories + * Get the current additional compiler search directories, like MinGW directories. + * In multiroot workspaces, reads the setting from each folder's scoped configuration + * and expands ${workspaceFolder} per-folder, returning the union of all directories. */ private async getAdditionalCompilerDirs(): Promise { - const optsVars: KitContextVars = { - userHome: paths.userHome, - - // This is called during scanning for kits, which is an operation that happens - // outside the scope of a project folder, so it doesn't need the below variables. - buildKit: "", - buildType: "", - generator: "", - workspaceFolder: "", - workspaceFolderBasename: "", - workspaceHash: "", - workspaceRoot: "", - workspaceRootFolderName: "", - buildKitVendor: "", - buildKitTriple: "", - buildKitVersion: "", - buildKitHostOs: "", - buildKitTargetOs: "", - buildKitTargetArch: "", - buildKitVersionMajor: "", - buildKitVersionMinor: "", - projectName: "", - sourceDir: "" - }; const result = new Set(); - for (const dir of this.workspaceConfig.additionalCompilerSearchDirs) { - const expandedDir: string = util.lightNormalizePath(await expandString(dir, { vars: optsVars })); - result.add(expandedDir); + const folders = vscode.workspace.workspaceFolders ?? []; + + // Collect (folder, dirs) pairs from all workspace folders. + // Each folder may have its own cmake.additionalCompilerSearchDirs override. + const folderDirPairs: { folderPath: string; dirs: string[] }[] = []; + if (folders.length === 0) { + // No workspace folders — fall back to the extension-level config + folderDirPairs.push({ folderPath: '', dirs: this.workspaceConfig.additionalCompilerSearchDirs }); + } else { + for (const folder of folders) { + const folderConfig = ConfigurationReader.loadConfig(folder); + const dirs = ConfigurationReader.getAdditionalCompilerSearchDirsFromConfig(folderConfig); + folderDirPairs.push({ folderPath: folder.uri.fsPath, dirs }); + } + } + + for (const { folderPath, dirs } of folderDirPairs) { + const optsVars: KitContextVars = { + userHome: paths.userHome, + + // This is called during scanning for kits, which is an operation that happens + // outside the scope of a project folder, so it doesn't need most of the below variables. + // workspaceFolder is populated so that ${workspaceFolder} can be used in additionalCompilerSearchDirs. + buildKit: "", + buildType: "", + generator: "", + workspaceFolder: folderPath, + workspaceFolderBasename: folderPath ? path.basename(folderPath) : "", + workspaceHash: folderPath ? util.makeHashString(folderPath) : "", + workspaceRoot: folderPath, + workspaceRootFolderName: folderPath ? path.basename(folderPath) : "", + buildKitVendor: "", + buildKitTriple: "", + buildKitVersion: "", + buildKitHostOs: "", + buildKitTargetOs: "", + buildKitTargetArch: "", + buildKitVersionMajor: "", + buildKitVersionMinor: "", + projectName: "", + sourceDir: "" + }; + for (const dir of dirs) { + const expandedDir: string = util.lightNormalizePath(await expandString(dir, { vars: optsVars })); + result.add(expandedDir); + } } + return Array.from(result); } @@ -1121,15 +1174,15 @@ export class ExtensionManager implements vscode.Disposable { /** * Show UI to allow the user to select an active kit */ - async selectKit(folder?: vscode.WorkspaceFolder): Promise { + async selectKit(folder?: vscode.WorkspaceFolder): Promise { if (util.isTestMode()) { log.trace(localize('selecting.kit.in.test.mode', 'Running CMakeTools in test mode. selectKit is disabled.')); - return false; + return ''; } const cmakeProject = this.getProjectsForWorkspaceFolder(folder); if (!cmakeProject) { - return false; + return ''; } const activeProject = this.getActiveProject(); @@ -1159,11 +1212,7 @@ export class ExtensionManager implements vscode.Disposable { telemetry.logEvent('kitSelection', telemetryProperties); } - if (kitSelected) { - return true; - } - - return false; + return kitSelected ? activeKit?.name ?? '' : ''; } /** @@ -1346,10 +1395,10 @@ export class ExtensionManager implements vscode.Disposable { if (!projects || projects.length === 0) { return activeProject; } else { - // Choose project by corresponding source directory - return projects.find(project => sourceDir && (path.normalize(sourceDir) === path.normalize(project.folderPath))) + // Choose project by corresponding source directory (use platformNormalizePath for case-insensitive matching on Windows) + return projects.find(project => sourceDir && (util.platformNormalizePath(sourceDir) === util.platformNormalizePath(project.folderPath))) // Choose project by folder of active project - ?? projects.find(project => activeProject?.folderPath === project.folderPath) + ?? projects.find(project => activeProject && (util.platformNormalizePath(activeProject.folderPath) === util.platformNormalizePath(project.folderPath))) // Fallback to first project ?? projects[0]; } @@ -1407,6 +1456,16 @@ export class ExtensionManager implements vscode.Disposable { return this.runCMakeCommandForAll(async cmakeProject => (await cmakeProject.cleanConfigure(ConfigureTrigger.commandCleanConfigureAll)).exitCode, undefined, true); } + fullCleanConfigure(folder?: vscode.WorkspaceFolder) { + telemetry.logEvent("deleteBuildDirAndReconfigure"); + return this.runCMakeCommand(async cmakeProject => (await cmakeProject.fullCleanConfigure(ConfigureTrigger.commandFullCleanConfigure)).exitCode, folder, undefined, true); + } + + fullCleanConfigureAll() { + telemetry.logEvent("deleteBuildDirAndReconfigure"); + return this.runCMakeCommandForAll(async cmakeProject => (await cmakeProject.fullCleanConfigure(ConfigureTrigger.commandFullCleanConfigureAll)).exitCode, undefined, true); + } + cleanConfigureAllWithDebugger(trigger?: ConfigureTrigger) { return vscode.debug.startDebugging(undefined, { name: localize("cmake.debug.name", "CMake Debugger"), @@ -1576,6 +1635,16 @@ export class ExtensionManager implements vscode.Disposable { return this.runCMakeCommandForAll(cmakeProject => cmakeProject.cleanConfigureAndBuild(ConfigureTrigger.commandCleanConfigureAll), this.ensureActiveBuildPreset, true); } + fullCleanConfigureAndBuild(folder?: vscode.WorkspaceFolder) { + telemetry.logEvent("deleteBuildDirReconfigureAndBuild", { all: "false"}); + return this.runCMakeCommand(cmakeProject => cmakeProject.fullCleanConfigureAndBuild(ConfigureTrigger.commandFullCleanConfigure), folder, this.ensureActiveBuildPreset, true); + } + + fullCleanConfigureAndBuildAll() { + telemetry.logEvent("deleteBuildDirReconfigureAndBuild", { all: "true"}); + return this.runCMakeCommandForAll(cmakeProject => cmakeProject.fullCleanConfigureAndBuild(ConfigureTrigger.commandFullCleanConfigureAll), this.ensureActiveBuildPreset, true); + } + async buildWithTarget(target?: string) { telemetry.logEvent("build", { command: "buildWithTarget", all: "false"}); this.cleanOutputChannel(); @@ -1729,6 +1798,14 @@ export class ExtensionManager implements vscode.Disposable { return this.runCMakeCommandForProject(cmakeProject => cmakeProject.quickStart(folder)); } + addFileToCMakeLists(file?: vscode.Uri) { + return this.runCMakeCommand(project => this.cmakeListsModifier.addSourceFileToCMakeLists(file, project)); + } + + removeFileFromCMakeLists(file?: vscode.Uri) { + return this.runCMakeCommand(project => this.cmakeListsModifier.removeSourceFileFromCMakeLists(file, project)); + } + resolveFolderTargetNameArgs(args?: FolderTargetNameArgsType): [ folder?: vscode.WorkspaceFolder | string, targetName?: string ] { let folder: vscode.WorkspaceFolder | string | undefined; let targetName: string | undefined; @@ -2166,20 +2243,20 @@ export class ExtensionManager implements vscode.Disposable { /** * Show UI to allow the user to select an active configure preset */ - async selectConfigurePreset(folder?: vscode.WorkspaceFolder): Promise { + async selectConfigurePreset(folder?: vscode.WorkspaceFolder): Promise { if (util.isTestMode()) { log.trace(localize('selecting.config.preset.in.test.mode', 'Running CMakeTools in test mode. selectConfigurePreset is disabled.')); - return false; + return ''; } const project = this.getProjectFromFolder(folder); if (!project) { - return false; + return ''; } if (!project.useCMakePresets) { log.info(localize('skip.set.configure.preset', 'Using kits, skip selecting configure preset')); - return false; + return ''; } const presetSelected = await project.presetsController.selectConfigurePreset(); @@ -2191,7 +2268,7 @@ export class ExtensionManager implements vscode.Disposable { this.statusBar.setBuildPresetName(buildPreset?.displayName || buildPreset?.name || ''); const testPreset = project.testPreset; this.statusBar.setTestPresetName(testPreset?.displayName || testPreset?.name || ''); - return presetSelected; + return presetSelected ? configurePreset?.name ?? '' : ''; } viewConfigureSettings(): void { @@ -2201,26 +2278,26 @@ export class ExtensionManager implements vscode.Disposable { /** * Show UI to allow the user to select an active build preset */ - async selectBuildPreset(folder?: vscode.WorkspaceFolder): Promise { + async selectBuildPreset(folder?: vscode.WorkspaceFolder): Promise { if (util.isTestMode()) { log.trace(localize('selecting.build.preset.in.test.mode', 'Running CMakeTools in test mode. selectBuildPreset is disabled.')); - return false; + return ''; } const project = this.getProjectFromFolder(folder); if (!project) { - return false; + return ''; } if (!project.useCMakePresets) { log.info(localize('skip.set.build.preset', 'Using kits, skip selecting build preset')); - return false; + return ''; } const presetSelected = await project.presetsController.selectBuildPreset(); const buildPreset = project.buildPreset; this.statusBar.setBuildPresetName(buildPreset?.displayName || buildPreset?.name || ''); - return presetSelected; + return presetSelected ? buildPreset?.name ?? '' : ''; } viewBuildSettings(): void { @@ -2230,26 +2307,26 @@ export class ExtensionManager implements vscode.Disposable { /** * Show UI to allow the user to select an active test preset */ - async selectTestPreset(folder?: vscode.WorkspaceFolder): Promise { + async selectTestPreset(folder?: vscode.WorkspaceFolder): Promise { if (util.isTestMode()) { log.trace(localize('selecting.test.preset.in.test.mode', 'Running CMakeTools in test mode. selectTestPreset is disabled.')); - return false; + return ''; } const project = this.getProjectFromFolder(folder); if (!project) { - return false; + return ''; } if (!project.useCMakePresets) { log.info(localize('skip.set.test.preset', 'Using kits, skip selecting test preset')); - return false; + return ''; } const presetSelected = await project.presetsController.selectTestPreset(); const testPreset = project.testPreset; this.statusBar.setTestPresetName(testPreset?.displayName || testPreset?.name || ''); - return presetSelected; + return presetSelected ? testPreset?.name ?? '' : ''; } viewTestSettings(): void { @@ -2259,51 +2336,51 @@ export class ExtensionManager implements vscode.Disposable { /** * Show UI to allow the user to select an active package preset */ - async selectPackagePreset(folder?: vscode.WorkspaceFolder): Promise { + async selectPackagePreset(folder?: vscode.WorkspaceFolder): Promise { if (util.isTestMode()) { log.trace(localize('selecting.package.preset.in.test.mode', 'Running CMakeTools in test mode. selectPackagePreset is disabled.')); - return false; + return ''; } const project = this.getProjectFromFolder(folder); if (!project) { - return false; + return ''; } if (!project.useCMakePresets) { log.info(localize('skip.set.package.preset', 'Using kits, skip selecting package preset')); - return false; + return ''; } const presetSelected = await project.presetsController.selectPackagePreset(); const packagePreset = project.packagePreset; this.statusBar.setPackagePresetName(packagePreset?.displayName || packagePreset?.name || ''); - return presetSelected; + return presetSelected ? packagePreset?.name ?? '' : ''; } /** * Show UI to allow the user to select an active workflow preset */ - async selectWorkflowPreset(folder?: vscode.WorkspaceFolder): Promise { + async selectWorkflowPreset(folder?: vscode.WorkspaceFolder): Promise { if (util.isTestMode()) { log.trace(localize('selecting.workflow.preset.in.test.mode', 'Running CMakeTools in test mode. selectWorkflowPreset is disabled.')); - return false; + return ''; } const project = this.getProjectFromFolder(folder); if (!project) { - return false; + return ''; } if (!project.useCMakePresets) { log.info(localize('skip.set.workflow.preset', 'Using kits, skip selecting workflow preset')); - return false; + return ''; } const presetSelected = await project.presetsController.selectWorkflowPreset(); const workflowPreset = project.workflowPreset; this.statusBar.setWorkflowPresetName(workflowPreset?.displayName || workflowPreset?.name || ''); - return presetSelected; + return presetSelected ? workflowPreset?.name ?? '' : ''; } public api: CMakeToolsApiImpl; @@ -2432,10 +2509,14 @@ async function setup(context: vscode.ExtensionContext, progress?: ProgressHandle 'cleanConfigureWithDebugger', 'cleanConfigureAll', 'cleanConfigureAllWithDebugger', + 'fullCleanConfigure', + 'fullCleanConfigureAll', 'cleanRebuild', 'cleanRebuildAll', 'cleanConfigureAndBuild', 'cleanConfigureAndBuildAll', + 'fullCleanConfigureAndBuild', + 'fullCleanConfigureAndBuildAll', 'configure', 'configureWithDebugger', 'showConfigureCommand', @@ -2456,6 +2537,8 @@ async function setup(context: vscode.ExtensionContext, progress?: ProgressHandle 'stop', 'stopAll', 'quickStart', + 'addFileToCMakeLists', + 'removeFileFromCMakeLists', 'launchTargetPath', 'launchTargetDirectory', 'launchTargetFilename', @@ -2504,6 +2587,27 @@ async function setup(context: vscode.ExtensionContext, progress?: ProgressHandle context.subscriptions.push(vscode.commands.registerCommand('cmake.getSettingsChangePromise', () => getSettingsChangePromise())); } + // Helper to resolve a BookmarkNode to its underlying TargetNode + const resolveTargetNode = (what: TargetNode | BookmarkNode): TargetNode | undefined => { + if (what instanceof TargetNode) { + return what; + } + if (what instanceof BookmarkNode) { + // Fast path: the bookmark is already attached to a live TargetNode. + if (what.bookmark.sourceNode instanceof TargetNode) { + return what.bookmark.sourceNode; + } + // Fallback: try to resolve by stable id via the current project outline. + const node = ext.getProjectOutline().findTargetNodeById(what.bookmark.id); + if (node instanceof TargetNode) { + what.bookmark.sourceNode = node; + return node; + } + log.error(localize('bookmark.target.not.resolved', 'Bookmark "{0}" could not be resolved to a target. The project may need to be reconfigured.', what.bookmark.name)); + } + return undefined; + }; + context.subscriptions.push(...[ // Special commands that don't require logging or separate error handling vscode.commands.registerCommand('cmake.outline.configureAll', () => runCommand('configureAll')), @@ -2593,9 +2697,11 @@ async function setup(context: vscode.ExtensionContext, progress?: ProgressHandle vscode.commands.registerCommand('cmake.outline.cleanAll', () => runCommand('cleanAll')), vscode.commands.registerCommand('cmake.outline.cleanConfigureAll', () => runCommand('cleanConfigureAll')), vscode.commands.registerCommand('cmake.outline.cleanConfigureAllWithDebugger', () => runCommand('cleanConfigureAllWithDebugger', ConfigureTrigger.projectOutlineCleanConfigureAllWithDebugger)), + vscode.commands.registerCommand('cmake.outline.fullCleanConfigureAll', () => runCommand('fullCleanConfigureAll')), vscode.commands.registerCommand('cmake.outline.editCacheUI', () => runCommand('editCacheUI')), vscode.commands.registerCommand('cmake.outline.cleanRebuildAll', () => runCommand('cleanRebuildAll')), vscode.commands.registerCommand('cmake.outline.cleanConfigureAndBuildAll', () => runCommand('cleanConfigureAndBuildAll')), + vscode.commands.registerCommand('cmake.outline.fullCleanConfigureAndBuildAll', () => runCommand('fullCleanConfigureAndBuildAll')), // Commands for outline items vscode.commands.registerCommand('cmake.outline.configure', async (what: ProjectNode|SourceFileNode) => { if (what instanceof ProjectNode) { @@ -2609,13 +2715,48 @@ async function setup(context: vscode.ExtensionContext, progress?: ProgressHandle }), vscode.commands.registerCommand('cmake.outline.build', (what: ProjectNode) => runCommand('build', what.folder, "all", what.sourceDirectory)), vscode.commands.registerCommand('cmake.outline.clean', (what: ProjectNode) => runCommand('build', what.folder, "clean", what.sourceDirectory)), - vscode.commands.registerCommand('cmake.outline.buildTarget', (what: TargetNode) => runCommand('build', what.folder, what.name, what.sourceDir)), - vscode.commands.registerCommand('cmake.outline.runUtilityTarget', (what: TargetNode) => runCommand('build', what.folder, what.name, what.sourceDir)), - vscode.commands.registerCommand('cmake.outline.debugTarget', (what: TargetNode) => runCommand('debugTarget', what.folder, what.name, what.sourceDir)), - vscode.commands.registerCommand('cmake.outline.launchTarget', (what: TargetNode) => runCommand('launchTarget', what.folder, what.name, what.sourceDir)), - vscode.commands.registerCommand('cmake.outline.setDefaultTarget', (what: TargetNode) => runCommand('setDefaultTarget', what.folder, what.name, what.sourceDir)), - vscode.commands.registerCommand('cmake.outline.setLaunchTarget', (what: TargetNode) => runCommand('selectLaunchTarget', what.folder, what.name, what.sourceDir)), - vscode.commands.registerCommand('cmake.outline.revealInCMakeLists', (what: TargetNode) => what.openInCMakeLists()), + vscode.commands.registerCommand('cmake.outline.buildTarget', (what: TargetNode | BookmarkNode) => { + const target = resolveTargetNode(what); + if (target) { + return runCommand('build', target.folder, target.name, target.sourceDir); + } + }), + vscode.commands.registerCommand('cmake.outline.runUtilityTarget', (what: TargetNode | BookmarkNode) => { + const target = resolveTargetNode(what); + if (target) { + return runCommand('build', target.folder, target.name, target.sourceDir); + } + }), + vscode.commands.registerCommand('cmake.outline.debugTarget', (what: TargetNode | BookmarkNode) => { + const target = resolveTargetNode(what); + if (target) { + return runCommand('debugTarget', target.folder, target.name, target.sourceDir); + } + }), + vscode.commands.registerCommand('cmake.outline.launchTarget', (what: TargetNode | BookmarkNode) => { + const target = resolveTargetNode(what); + if (target) { + return runCommand('launchTarget', target.folder, target.name, target.sourceDir); + } + }), + vscode.commands.registerCommand('cmake.outline.setDefaultTarget', (what: TargetNode | BookmarkNode) => { + const target = resolveTargetNode(what); + if (target) { + return runCommand('setDefaultTarget', target.folder, target.name, target.sourceDir); + } + }), + vscode.commands.registerCommand('cmake.outline.setLaunchTarget', (what: TargetNode | BookmarkNode) => { + const target = resolveTargetNode(what); + if (target) { + return runCommand('selectLaunchTarget', target.folder, target.name, target.sourceDir); + } + }), + vscode.commands.registerCommand('cmake.outline.revealInCMakeLists', (what: TargetNode | BookmarkNode) => { + const target = resolveTargetNode(what); + if (target) { + return target.openInCMakeLists(); + } + }), vscode.commands.registerCommand('cmake.outline.runTest', (what: CTestTestNode) => runCommand('runTest', what.folder, what.testName, what.sourceDir)), vscode.commands.registerCommand('cmake.outline.debugTest', (what: CTestTestNode) => runCommand('debugCTest', what.folder, what.testName, what.sourceDir)), vscode.commands.registerCommand('cmake.outline.compileFile', (what: SourceFileNode) => runCommand('compileFile', what.filePath)), diff --git a/src/installs/visualStudio.ts b/src/installs/visualStudio.ts index 480cdd1afb..a14fcf147b 100644 --- a/src/installs/visualStudio.ts +++ b/src/installs/visualStudio.ts @@ -258,6 +258,7 @@ const msvcEnvVars = [ 'FrameworkVersion', 'FrameworkVersion32', 'FrameworkVersion64', + 'EXTERNAL_INCLUDE', 'INCLUDE', 'LIB', 'LIBPATH', @@ -318,6 +319,7 @@ async function collectDevBatVars(hostArch: string, devBat: string, args: string[ const envFileName = batFileName + '.env'; const bat = [ `@echo off`, + `chcp 65001`, `cd /d "%~dp0"`, `set "VS${majorVersion}0COMNTOOLS=${commonDir}"`, `set "INCLUDE="`, @@ -408,7 +410,7 @@ async function collectDevBatVars(hostArch: string, devBat: string, args: string[ } catch (err) { log.error(`Parse '${WindowsSDKVersion}' failed`); } - if (majorVersion === 14 && util.compareVersion(WindowsSDKVersionParsed, { major: 10, minor: 0, patch: 14393 }) >= 0) { + if (majorVersion === 14 && util.compareVersion(WindowsSDKVersionParsed, { major: 10, minor: 0, patch: 14393 }) > 0) { const WindowsSdkDir = vars['WindowsSdkDir'] ?? ''; const existPath = vars['PATH'] ?? ''; const oldWinSdkBinPath = path.join(WindowsSdkDir, 'bin', hostArch); @@ -463,9 +465,10 @@ export async function getVcVarsBatScript(vsInstall: VSInstallation, hostArch: st * @param hostArch The toolset host architecture * @param targetArch The toolset target architecture. If unspecified this defaults to `hostArch` * @param toolsetVersion The toolset version. If specified `inst` is assumed to have this toolset installed. + * @param extraArguments The extra arguments passed to `vcvarsall.bat`. */ -export async function varsForVSInstallation(inst: VSInstallation, hostArch: string, targetArch?: string, toolsetVersion?: string): Promise { - log.trace(`varsForVSInstallation path:'${inst.installationPath}' version:${inst.installationVersion} host arch:${hostArch} - target arch:${targetArch}`); +export async function varsForVSInstallation(inst: VSInstallation, hostArch: string, targetArch?: string, toolsetVersion?: string, extraArguments?: string[]): Promise { + log.trace(`varsForVSInstallation path:'${inst.installationPath}' version:${inst.installationVersion} host arch:${hostArch} - target arch:${targetArch} extraArguments:${JSON.stringify(extraArguments)}`); const commonDir = path.join(inst.installationPath, 'Common7', 'Tools'); const majorVersion = parseInt(inst.installationVersion); const devbat = await getVcVarsBatScript(inst, hostArch, targetArch); @@ -474,6 +477,9 @@ export async function varsForVSInstallation(inst: VSInstallation, hostArch: stri } const devBatArgs = [getHostTargetArchString(hostArch, targetArch, majorVersion < 15, true)]; + if (Array.isArray(extraArguments)) { + devBatArgs.push(...extraArguments); + } if (toolsetVersion && majorVersion >= 15) { devBatArgs.push(`-vcvars_ver=${toolsetVersion}`); } diff --git a/src/kits/kit.ts b/src/kits/kit.ts index 8c47827a3c..739de32fb5 100644 --- a/src/kits/kit.ts +++ b/src/kits/kit.ts @@ -105,9 +105,11 @@ export interface Kit extends KitDetect { preferredGenerator?: CMakeGenerator; /** - * Additional settings to pass to CMake + * Additional settings to pass to CMake. + * Values can be strings or string arrays. String arrays are joined with + * semicolons to form CMake lists (without escaping). */ - cmakeSettings?: { [key: string]: string }; + cmakeSettings?: { [key: string]: string | string[] }; /** * Additional environment variables for the kit @@ -133,6 +135,21 @@ export interface Kit extends KitDetect { */ visualStudioArchitecture?: string; + /** + * Arguments to vcvarsall.bat. + * This is used for: + * [platform_type]: {empty} | store | uwp + * [winsdk_version] : full Windows 10 SDK number (e.g. 10.0.10240.0) or "8.1" to use the Windows 8.1 SDK. + * [vc_version] : {none} for latest installed VC++ compiler toolset | + * "14.0" for VC++ 2015 Compiler Toolset | + * "14.xx" for the latest 14.xx.yyyyy toolset installed (e.g. "14.11") | + * "14.xx.yyyyy" for a specific full version number (e.g. "14.11.25503") + * [spectre_mode] : {none} for libraries without spectre mitigations | + * "spectre" for libraries with spectre mitigations + * + */ + visualStudioArguments?: string[]; + /** * Filename of a shell script which sets environment variables for the kit */ @@ -518,6 +535,9 @@ async function scanDirectory(dir: string, mapper: (filePath: string) => Pro } catch (ce) { const e = ce as NodeJS.ErrnoException; log.warning(localize('failed.to.scan', 'Failed to scan {0} by exception: {1}', dir, util.errorToString(e))); + if (e.stack) { + log.debug(e.stack); + } if (e.code === 'ENOENT') { return []; } @@ -562,6 +582,9 @@ export async function scanDirForCompilerKits(dir: string, isTrusted: boolean = t } catch (ce) { const e = ce as NodeJS.ErrnoException; log.warning(localize('filed.to.check.binary', 'Failed to check binary {0} by exception: {1}', bin, util.errorToString(e))); + if (e.stack) { + log.debug(e.stack); + } if (e.code === 'EACCES') { // The binary may not be executable by this user... return null; @@ -712,9 +735,12 @@ export async function getShellScriptEnvironment(kit: Kit, opts?: expand.Expansio // Quote the script file path before running it, in case there are spaces. run_command = `call "${script_path}"`; } else { // non-windows + // Ensure a failing setup script aborts so we don't silently capture an unmodified environment. + script += 'set -e\n'; script += `source ${environmentSetupScript}\n`; // run the user shell script - script += `printenv >> ${environment_path}`; // write env vars to temp file - run_command = `/bin/bash -c "source ${script_path}"`; // run script in bash to enable bash-builtin commands like 'source' + // Use an absolute path so PATH modifications in the setup script don't break env capture. + script += `/usr/bin/printenv > "${environment_path}"`; // write env vars to temp file + run_command = `/bin/bash "${script_path}"`; } try { await fs.unlink(environment_path); // delete the temp file if it exists @@ -1044,7 +1070,7 @@ export async function getVSKitEnvironment(kit: Kit): Promise return null; } - return varsForVSInstallation(requested, kit.visualStudioArchitecture!, kit.preferredGenerator?.platform); + return varsForVSInstallation(requested, kit.visualStudioArchitecture!, kit.preferredGenerator?.platform, undefined, kit.visualStudioArguments); } /** @@ -1066,12 +1092,13 @@ export async function effectiveKitEnvironment(kit: Kit, opts?: expand.ExpansionO const kit_env = EnvironmentUtils.create(kit.environmentVariables); const getVSKitEnv = process.platform === 'win32' && kit.visualStudio && kit.visualStudioArchitecture; if (!getVSKitEnv) { - const expandOptions: expand.ExpansionOptions = { + const expandOptions: expand.ExpansionOptions = opts ? { ...opts, envOverride: host_env, penvOverride: host_env } : { vars: {} as expand.KitContextVars, - envOverride: host_env + envOverride: host_env, + penvOverride: host_env }; for (const env_var of Object.keys(kit_env)) { - env[env_var] = await expand.expandString(kit_env[env_var], opts ?? expandOptions); + env[env_var] = await expand.expandString(kit_env[env_var], expandOptions); } if (process.platform === 'win32') { @@ -1333,7 +1360,9 @@ export async function scanForKitsIfNeeded(project: CMakeProject): Promise, removeStaleCompilerKits: boolean): boolean { + if (!removeStaleCompilerKits) { + return true; + } + if (!kit.compilers) { + return true; + } + if (kit.keep === true) { + return true; + } + return discoveredKitNames.has(kit.name); +} + // TODO: migrate all kit related things in extension.ts to this class. export class KitsController { static additionalCompilerSearchDirs: string[] | undefined; @@ -229,7 +247,9 @@ export class KitsController { // We don't have any kits defined. Scan for kits if (!KitsController.checkingHaveKits) { KitsController.checkingHaveKits = true; - await KitsController.scanForKits(await this.project.getCMakePathofProject()); + await KitsController.scanForKits(await this.project.getCMakePathofProject(), { + removeStaleCompilerKits: this.project.workspaceContext.config.removeStaleKitsOnScan + }); KitsController.checkingHaveKits = false; return true; } else { @@ -289,7 +309,9 @@ export class KitsController { return false; } else { if (chosen_kit.kit.name === SpecialKits.ScanForKits) { - await KitsController.scanForKits(await this.project.getCMakePathofProject()); + await KitsController.scanForKits(await this.project.getCMakePathofProject(), { + removeStaleCompilerKits: this.project.workspaceContext.config.removeStaleKitsOnScan + }); return false; } else if (chosen_kit.kit.name === SpecialKits.ScanSpecificDir) { await KitsController.scanForKitsInSpecificFolder(this.project); @@ -507,9 +529,12 @@ export class KitsController { * * @returns if any duplicate vs kits are removed. */ - static async scanForKits(cmakePath: string, directoriesToScan?: string[]) { + static async scanForKits(cmakePath: string, options?: ScanForKitsControllerOptions) { log.debug(localize('rescanning.for.kits', 'Rescanning for kits')); + const directoriesToScan = options?.directoriesToScan; + const removeStaleCompilerKits = options?.removeStaleCompilerKits === true && !directoriesToScan; + // Do the scan: const discovered_kits = await scanForKits(cmakePath, !!directoriesToScan ? { scanDirs: directoriesToScan, @@ -570,7 +595,15 @@ export class KitsController { old_kits_by_name ); - const new_kits = Object.keys(new_kits_by_name).map(k => new_kits_by_name[k]); + // Build the set of kit names found in this scan so we can drop stale entries. + const discovered_kit_names = new Set(discovered_kits.map(k => k.name)); + + // Optionally remove compiler-based kits that were not rediscovered in a + // full scan. Partial scans of specific directories never remove existing + // kits because they do not represent the full discovery set. + const new_kits = Object.keys(new_kits_by_name) + .map(k => new_kits_by_name[k]) + .filter(kit => shouldKeepUserKitAfterScan(kit, discovered_kit_names, removeStaleCompilerKits)); KitsController.userKits = new_kits; await KitsController._writeUserKitsFile(cmakePath, new_kits); @@ -622,10 +655,9 @@ export class KitsController { } ); - await KitsController.scanForKits( - await project.getCMakePathofProject(), - accumulatedDirs - ); + await KitsController.scanForKits(await project.getCMakePathofProject(), { + directoriesToScan: accumulatedDirs + }); } static isBetterMatch(newKit: Kit, existingKit?: Kit): boolean { diff --git a/src/kits/variant.ts b/src/kits/variant.ts index ad3f6e8043..286a913ead 100644 --- a/src/kits/variant.ts +++ b/src/kits/variant.ts @@ -283,6 +283,9 @@ export class VariantManager implements vscode.Disposable { } } catch (e) { log.error(localize('error.parsing', 'Error parsing {0}: {1}', filepath, util.errorToString(e))); + if (e instanceof Error && e.stack) { + log.debug(e.stack); + } } } diff --git a/src/languageServices/languageServiceData.ts b/src/languageServices/languageServiceData.ts index c10e376c0c..5f6a149f4a 100644 --- a/src/languageServices/languageServiceData.ts +++ b/src/languageServices/languageServiceData.ts @@ -180,14 +180,12 @@ export class LanguageServiceData implements vscode.HoverProvider, vscode.Complet } const hoverSuggestions = this.commands[value] || this.variables[value] || this.modules[value] || this.modules[`Find${value}`]; - - const markdown: vscode.MarkdownString = new vscode.MarkdownString(); - markdown.appendMarkdown(hoverSuggestions.description); - hoverSuggestions.syntax_examples?.forEach((example) => { - markdown.appendCodeblock(`\t${example}`, "cmake"); - }); - if (hoverSuggestions) { + const markdown: vscode.MarkdownString = new vscode.MarkdownString(); + markdown.appendMarkdown(hoverSuggestions.description); + hoverSuggestions.syntax_examples?.forEach((example) => { + markdown.appendCodeblock(`\t${example}`, "cmake"); + }); return new vscode.Hover(markdown); } diff --git a/src/logging.ts b/src/logging.ts index 36b1e0564b..c6c1b122f7 100644 --- a/src/logging.ts +++ b/src/logging.ts @@ -264,6 +264,9 @@ export class Logger { should_show = error_to_show; } const should_focus = (reveal_log === 'focus'); + if (should_focus) { + should_show = true; + } if (should_show) { SingletonLogger.instance().showChannel(!should_focus); diff --git a/src/paths.ts b/src/paths.ts index dd1016babd..a58d734684 100644 --- a/src/paths.ts +++ b/src/paths.ts @@ -11,6 +11,7 @@ import { vsInstallations } from '@cmt/installs/visualStudio'; import { expandString } from '@cmt/expand'; import { fs } from '@cmt/pr'; import * as util from '@cmt/util'; +import { Environment } from '@cmt/environmentVariables'; interface VSCMakePaths { cmake?: string; @@ -189,16 +190,30 @@ class Paths { return this._ninjaPath; } - async which(name: string): Promise { + private pathFromEnvironment(envOverride?: Environment): string | undefined { + if (!envOverride) { + return undefined; + } + // EnvironmentUtils.create() normalizes key casing on Windows, but keep a fallback for plain process env records. + return envOverride['PATH'] || envOverride['Path'] || undefined; + } + + async which(name: string, envOverride?: Environment): Promise { return new Promise(resolve => { - which(name, (err, resolved) => { + const pathOverride = this.pathFromEnvironment(envOverride); + const cb = (err: Error | null, resolved?: string) => { if (err) { resolve(null); } else { console.assert(resolved, '`which` didn\'t do what it should have.'); resolve(resolved!); } - }); + }; + if (pathOverride) { + which(name, { path: pathOverride }, cb); + } else { + which(name, cb); + } }); } @@ -248,17 +263,17 @@ class Paths { } } - async getCMakePath(wsc: DirectoryContext, overWriteCMakePathSetting?: string): Promise { + async getCMakePath(wsc: DirectoryContext, overWriteCMakePathSetting?: string, envOverride?: Environment): Promise { this._ninjaPath = undefined; let raw = overWriteCMakePathSetting; if (!raw) { - raw = await this.expandStringPath(wsc.config.rawCMakePath, wsc); + raw = await this.expandStringPath(wsc.config.rawCMakePath, wsc, envOverride); } if (raw === 'auto' || raw === 'cmake') { // We start by searching $PATH for cmake - const on_path = await this.which('cmake'); + const on_path = await this.which('cmake', envOverride); if (on_path) { return on_path; } @@ -289,7 +304,7 @@ class Paths { return raw; } - async expandStringPath(raw_path: string, wsc: DirectoryContext): Promise { + async expandStringPath(raw_path: string, wsc: DirectoryContext, envOverride?: Environment): Promise { return expandString(raw_path, { vars: { buildKit: '${buildKit}', @@ -310,7 +325,8 @@ class Paths { workspaceHash: util.makeHashString(wsc.folder.uri.fsPath), workspaceRoot: wsc.folder.uri.fsPath, workspaceRootFolderName: path.basename(wsc.folder.uri.fsPath) - } + }, + envOverride }); } diff --git a/src/presets/presetsController.ts b/src/presets/presetsController.ts index d9f22fd0e2..5695eecae9 100644 --- a/src/presets/presetsController.ts +++ b/src/presets/presetsController.ts @@ -28,9 +28,12 @@ export class PresetsController implements vscode.Disposable { private _presetsWatchers: FileWatcher | undefined; private _sourceDirChangedSub: vscode.Disposable | undefined; private _isChangingPresets = false; + // Populated by reapplyPresets() with paths of all preset files (CMakePresets.json, + // CMakeUserPresets.json, and any files pulled in via "include"). private _referencedFiles: string[] = []; private _presetsParser!: PresetsParser; // Using definite assigment (!) because we initialize it in the init method private _reapplyInProgress: Promise = Promise.resolve(); + private _suppressWatcherReapply: boolean = false; private readonly _presetsChangedEmitter = new vscode.EventEmitter(); private readonly _userPresetsChangedEmitter = new vscode.EventEmitter(); @@ -133,6 +136,21 @@ export class PresetsController implements vscode.Disposable { return this._presetsParser.userPresetsPath; } + get referencedFiles(): readonly string[] { + return this._referencedFiles; + } + + /** + * When true, the file-watcher's change handler will not call reapplyPresets(). + * Set this before saveAll() when the caller will explicitly await reapplyPresets() + * afterward, to avoid redundant re-reads triggered by the OS file-change + * notification for the same save (see #4792). + * Cleared automatically at the end of reapplyPresets(). + */ + set suppressWatcherReapply(value: boolean) { + this._suppressWatcherReapply = value; + } + get workspaceFolder() { return this.project.workspaceFolder; } @@ -181,6 +199,9 @@ export class PresetsController implements vscode.Disposable { // in setConfigurePreset and to ensure consistent preset state. async reapplyPresets() { const doReapply = async () => { + // Capture pre-reload state to detect root presets file creation. + const existedBefore = this.presetsFileExist; + const referencedFiles: Map = new Map(); @@ -191,7 +212,8 @@ export class PresetsController implements vscode.Disposable { this.project.workspaceContext.config.allowUnsupportedPresetsVersions ); - // reset all expanded presets storage. + // Collect the paths of all referenced preset files (main files + includes). + // resetPresetsFiles() populates the referencedFiles map as it parses each file. this._referencedFiles = Array.from(referencedFiles.keys()); this.project.minCMakeVersion = preset.minCMakeVersion(this.folderPath); @@ -202,6 +224,17 @@ export class PresetsController implements vscode.Disposable { // Don't need to set build/test presets here since they are reapplied in setConfigurePreset await this.watchPresetsChange(); + + // If a root presets file was freshly created (transitioned from absent to present), + // update the active project so the UI reflects preset mode. This replaces + // the previous onCreatePresetsFile() handler that was wired only to onDidCreate. + if (!existedBefore && this.presetsFileExist) { + await this.project.projectController?.updateActiveProject(this.workspaceFolder); + } + + // Clear after completing so that late watcher events from a + // prior saveAll() remain suppressed for the entire reapply. + this._suppressWatcherReapply = false; }; this._reapplyInProgress = this._reapplyInProgress.then(doReapply, doReapply); return this._reapplyInProgress; @@ -354,7 +387,9 @@ export class PresetsController implements vscode.Disposable { return false; } else { if (chosen_kit.kit.name === SpecialKits.ScanForKits) { - await KitsController.scanForKits(await this.project.getCMakePathofProject()); + await KitsController.scanForKits(await this.project.getCMakePathofProject(), { + removeStaleCompilerKits: this.project.workspaceContext.config.removeStaleKitsOnScan + }); return false; } else if (chosen_kit.kit.name === SpecialKits.ScanSpecificDir) { await KitsController.scanForKitsInSpecificFolder(this.project); @@ -1017,8 +1052,9 @@ export class PresetsController implements vscode.Disposable { (_preset) => this.checkCompatibility( this.project.configurePreset, + this.project.buildPreset, _preset - ).buildPresetCompatible && + ).testPresetCompatible && preset.evaluatePresetCondition(_preset, allPresets) ); for (const testPreset of testPresets) { @@ -1170,11 +1206,11 @@ export class PresetsController implements vscode.Disposable { this._isChangingPresets = true; } - if (needToCheckConfigurePreset && presetName !== preset.defaultBuildPreset.name) { + if (presetName !== preset.defaultBuildPreset.name) { preset.expandConfigurePresetForPresets(this.folderPath, 'build'); const _preset = preset.getPresetByName(preset.allBuildPresets(this.folderPath), presetName); const compatibility = this.checkCompatibility(this.project.configurePreset, _preset, this.project.testPreset, this.project.packagePreset, this.project.workflowPreset); - if (!compatibility.buildPresetCompatible) { + if (needToCheckConfigurePreset && !compatibility.buildPresetCompatible) { log.warning(localize('build.preset.configure.preset.not.match', 'Build preset {0}: The configure preset does not match the active configure preset', presetName)); await vscode.window.withProgress( { @@ -1198,7 +1234,6 @@ export class PresetsController implements vscode.Disposable { }, () => this.project.setTestPreset(null) ); - // Not sure we need to do the same for package/workflow build } } // Load the build preset into the backend @@ -1210,6 +1245,11 @@ export class PresetsController implements vscode.Disposable { () => this.project.setBuildPreset(presetName) ); + // Auto-select a compatible test preset if none is currently set + if (!this.project.testPreset) { + await this.guessTestPreset(); + } + if (checkChangingPreset) { this._isChangingPresets = false; } @@ -1706,23 +1746,16 @@ export class PresetsController implements vscode.Disposable { return vscode.window.showTextDocument(vscode.Uri.file(presetsFilePath)); } - // this is used for the file watcher on adding a new presets file - async onCreatePresetsFile() { - await this.reapplyPresets(); - await this.project.projectController?.updateActiveProject(this.workspaceFolder); - } - private async watchPresetsChange() { const presetChangeHandler = () => { - void this.reapplyPresets(); - }; - const presetCreatedHandler = () => { - void this.onCreatePresetsFile(); + if (!this._suppressWatcherReapply) { + void this.reapplyPresets(); + } }; this._presetsWatchers?.dispose(); - this._presetsWatchers = new FileWatcher(this._referencedFiles, presetChangeHandler, presetCreatedHandler); + this._presetsWatchers = new FileWatcher(this._referencedFiles, presetChangeHandler); }; dispose() { @@ -1746,7 +1779,7 @@ class FileWatcher implements vscode.Disposable { // Two change events are coming in rapid succession without this. private canRunChangeHandler = true; - public constructor(filePaths: string[], changeHandler: () => void, createHandler: () => void) { + public constructor(filePaths: string[], changeHandler: () => void) { const debouncedOnChange = () => { if (this.canRunChangeHandler) { changeHandler(); @@ -1762,12 +1795,15 @@ class FileWatcher implements vscode.Disposable { const watcher = vscode.workspace.createFileSystemWatcher(pattern); watcher.onDidChange(debouncedOnChange); - watcher.onDidCreate(createHandler); + watcher.onDidCreate(debouncedOnChange); watcher.onDidDelete(debouncedOnChange); this.watchers.push(watcher); } catch (error) { log.error(localize('failed.to.watch', 'Watcher could not be created for {0}: {1}', filePath, util.errorToString(error))); + if (error instanceof Error && error.stack) { + log.debug(error.stack); + } } } } diff --git a/src/presets/presetsParser.ts b/src/presets/presetsParser.ts index cfdb57c5fd..3ef1d2f178 100644 --- a/src/presets/presetsParser.ts +++ b/src/presets/presetsParser.ts @@ -644,6 +644,9 @@ export class PresetsParser { util.errorToString(e) ) ); + if (e instanceof Error && e.stack) { + log.debug(e.stack); + } return undefined; } return presetsFile; diff --git a/src/proc.ts b/src/proc.ts index 754c54b92f..8c405a711c 100644 --- a/src/proc.ts +++ b/src/proc.ts @@ -253,25 +253,31 @@ export function execute(command: string, args?: string[], outputConsumer?: Outpu let stderr_acc = ''; let stderr_line_acc = ''; child?.on('error', err => { - log.warning(localize({key: 'process.error', comment: ['The space before and after all placeholders should be preserved.']}, 'The command: {0} failed with error: {1} stack: {2}', `${cmdstr}`, `${err}`, `${stackTrace}`)); + log.warning(localize({key: 'process.error', comment: ['The space before and after all placeholders should be preserved.']}, 'The command: {0} failed with error: {1}', `${cmdstr}`, `${err}`)); + if (stackTrace) { + log.debug(stackTrace); + } }); child?.on('exit', (code, signal) => { if (code !== 0) { if (signal !== null && signal !== undefined) { - log.warning(localize({key: 'process.exit.with.signal', comment: ['The space before and after all placeholders should be preserved.']}, 'The command: {0} exited with code: {1} and signal: {2} stack: {3}', `${cmdstr}`, `${code}`, `${signal}`, `${stackTrace}`)); + log.warning(localize({key: 'process.exit.with.signal', comment: ['The space before and after all placeholders should be preserved.']}, 'The command: {0} exited with code: {1} and signal: {2}', `${cmdstr}`, `${code}`, `${signal}`)); } else { - log.warning(localize({key: 'process.exit', comment: ['The space before and after all placeholders should be preserved.']}, 'The command: {0} exited with code: {1} stack: {2}', `${cmdstr}`, `${code}`, `${stackTrace}`)); + log.warning(localize({key: 'process.exit', comment: ['The space before and after all placeholders should be preserved.']}, 'The command: {0} exited with code: {1}', `${cmdstr}`, `${code}`)); } if (options?.showOutputOnError) { if (stdout_acc) { const output = stdout_acc.trimEnd().replace(/\n/g, '\n\t'); - log.warning(localize('process.exit.stdout', 'Command output on standard out: {0} stack: {1}', `${output}`, `${stackTrace}`)); + log.warning(localize('process.exit.stdout', 'Command output on standard out: {0}', `${output}`)); } if (stderr_acc) { const output = stderr_acc.trimEnd().replace(/\n/g, '\n\t'); - log.warning(localize('process.exit.stderr', 'Command output on standard error: {0} stack: {1}', `${output}`, `${stackTrace}`)); + log.warning(localize('process.exit.stderr', 'Command output on standard error: {0}', `${output}`)); } } + if (stackTrace) { + log.debug(stackTrace); + } } }); child?.stdout?.on('data', (data: Uint8Array) => { diff --git a/src/ui/bookmarks.ts b/src/ui/bookmarks.ts index 865cf64d70..9e6bac1131 100644 --- a/src/ui/bookmarks.ts +++ b/src/ui/bookmarks.ts @@ -46,7 +46,24 @@ export class BookmarkNode extends BaseNode { this.bookmark.projectName || localize('not.available', 'N/A'), this.bookmark.type, this.bookmark.folderName); - item.contextValue = `nodeType=bookmark;type=${this.bookmark.type};bookmarked=true`; + + // Build contextValue. For TARGET bookmarks with a live source node, propagate + // target metadata (canBuild, canRun, isDefault, isLaunch, specific type) so + // that the same context-menu actions available in the outline also appear here. + if (this.bookmark.type === 'TARGET' && this.bookmark.sourceNode instanceof TargetNode) { + const sourceItem = this.bookmark.sourceNode.getTreeItem(); + const sourceContext = sourceItem.contextValue || ''; + item.contextValue = sourceContext + .replace(/nodeType=target/, 'nodeType=bookmark') + + ',bookmarked=true'; + } else if (this.bookmark.type === 'TARGET') { + // Unresolved target bookmark — include default flags so the contextValue + // structure is consistent but no actions that require a live node will match. + item.contextValue = 'nodeType=bookmark,type=TARGET,bookmarked=true,canBuild=false,canRun=false,isDefault=false,isLaunch=false'; + } else { + item.contextValue = `nodeType=bookmark,type=${this.bookmark.type},bookmarked=true`; + } + item.iconPath = new vscode.ThemeIcon("bookmark"); return item; } diff --git a/src/ui/projectOutline/projectOutline.ts b/src/ui/projectOutline/projectOutline.ts index 16010b9dbe..620ef18cf6 100644 --- a/src/ui/projectOutline/projectOutline.ts +++ b/src/ui/projectOutline/projectOutline.ts @@ -361,7 +361,9 @@ export class CTestTestNode extends BaseNode { readonly targetId: string, readonly testName: string, readonly folder: vscode.WorkspaceFolder, - readonly sourceDir: string + readonly sourceDir: string, + readonly sourceFilePath?: string, + readonly sourceFileLine?: number ) { super(`${targetId}::test::${testName}`); } @@ -384,6 +386,16 @@ export class CTestTestNode extends BaseNode { item.iconPath = new vscode.ThemeIcon('beaker'); item.contextValue = 'nodeType=test'; item.tooltip = localize('test.tooltip', 'Test: {0}', this.testName); + if (this.sourceFilePath) { + const uri = vscode.Uri.file(this.sourceFilePath); + const line = this.sourceFileLine ? this.sourceFileLine - 1 : 0; + const position = new vscode.Position(line, 0); + item.command = { + title: localize('open.file', 'Open file'), + command: 'vscode.open', + arguments: [uri, { selection: new vscode.Range(position, position) }] + }; + } return item; } } @@ -551,9 +563,9 @@ export class TargetNode extends BaseNode { } } - updateTests(testNames: string[]) { - this._testNodes = testNames.map(name => - new CTestTestNode(this.id, name, this.folder, this.sourceDir) + updateTests(tests: { name: string; sourceFilePath?: string; sourceFileLine?: number }[]) { + this._testNodes = tests.map(test => + new CTestTestNode(this.id, test.name, this.folder, this.sourceDir, test.sourceFilePath, test.sourceFileLine) ); } } @@ -701,10 +713,6 @@ export class WorkspaceFolderNode extends BaseNode { private readonly _projects = new Map>(); - private getNode(cmakeProject: CMakeProject, modelProjectName: string) { - return this._projects.get(cmakeProject.folderPath)?.get(modelProjectName); - } - private setNode(cmakeProject: CMakeProject, modelProjectName: string, node: ProjectNode) { let sub_map = this._projects.get(cmakeProject.folderPath); if (!sub_map) { @@ -725,20 +733,37 @@ export class WorkspaceFolderNode extends BaseNode { return; } - if (model.configurations[0].projects.length === 0) { + const configuration = model.configurations[0]; + if (configuration.projects.length === 0) { this.removeNodes(cmakeProject); ctx.nodesToUpdate.push(this); return; } - const projectOutlineModel = populateViewCodeModel(model); - const rootProject = projectOutlineModel.project; - let item = this.getNode(cmakeProject, rootProject.name); - if (!item) { - item = new ProjectNode(rootProject.name, this.wsFolder, cmakeProject.folderPath); + const outlineViewType = cmakeProject.workspaceContext.config.outlineViewType; + + // Always remove existing nodes first to ensure clean state when + // switching between view types or when projects change. + this.removeNodes(cmakeProject); + + if (outlineViewType === "tree") { + // Tree mode: create a separate ProjectNode for each CMake project, + // restoring the pre-1.15 hierarchical outline. + for (const project of configuration.projects) { + const item = new ProjectNode(project.name, this.wsFolder, project.sourceDirectory); + this.setNode(cmakeProject, project.name, item); + item.update(project, ctx); + } + } else { + // List mode (default): flatten all projects into a single node. + const projectOutlineModel = populateViewCodeModel(model); + const rootProject = projectOutlineModel.project; + const item = new ProjectNode(rootProject.name, this.wsFolder, cmakeProject.folderPath); this.setNode(cmakeProject, rootProject.name, item); + item.update(rootProject, ctx); } - item.update(rootProject, ctx); + + ctx.nodesToUpdate.push(this); } getChildren() { @@ -749,7 +774,7 @@ export class WorkspaceFolderNode extends BaseNode { return children.sort((a, b) => lexicographicalCompare(a.getOrderTuple(), b.getOrderTuple())); } - updateTests(cmakeProject: CMakeProject, tests: { name: string; executablePath: string }[]) { + updateTests(cmakeProject: CMakeProject, tests: { name: string; executablePath: string; sourceFilePath?: string; sourceFileLine?: number }[]) { const sub_map = this._projects.get(cmakeProject.folderPath); if (!sub_map) { return; @@ -772,7 +797,7 @@ export class WorkspaceFolderNode extends BaseNode { } // Group tests by their executable path (matching to targets) - const testsByTarget = new Map(); + const testsByTarget = new Map(); for (const test of tests) { const normalizedExe = platformNormalizePath(test.executablePath); const target = targetsByPath.get(normalizedExe); @@ -782,7 +807,7 @@ export class WorkspaceFolderNode extends BaseNode { arr = []; testsByTarget.set(target, arr); } - arr.push(test.name); + arr.push({ name: test.name, sourceFilePath: test.sourceFilePath, sourceFileLine: test.sourceFileLine }); } } @@ -794,8 +819,8 @@ export class WorkspaceFolderNode extends BaseNode { } // Update each target with its tests - for (const [target, testNames] of testsByTarget) { - target.updateTests(testNames); + for (const [target, targetTests] of testsByTarget) { + target.updateTests(targetTests); } } } @@ -928,7 +953,7 @@ export class ProjectOutline implements vscode.TreeDataProvider { this._changeEvent.fire(null); } - updateTests(cmakeProject: CMakeProject, tests: { name: string; executablePath: string }[]) { + updateTests(cmakeProject: CMakeProject, tests: { name: string; executablePath: string; sourceFilePath?: string; sourceFileLine?: number }[]) { const folder = cmakeProject.workspaceContext.folder; const existing = this._folders.get(folder.uri.fsPath); if (!existing) { diff --git a/src/util.ts b/src/util.ts index 62a2d8011c..5feb5526b2 100644 --- a/src/util.ts +++ b/src/util.ts @@ -280,43 +280,9 @@ export function product(arrays: T[][]): T[][] { [[]] as T[][]); } -export interface CMakeValue { - type: ('UNKNOWN' | 'BOOL' | 'STRING' | 'FILEPATH' | 'PATH' | ''); // There are more types, but we don't care ATM - value: string; -} - -/** - * Converts a given value to a CMake-compatible value. - * The function determines the type of the input value and converts it to a corresponding CMakeValue object. - * @param value The value to convert. It can be a string, boolean, number, string array, or CMakeValue. - * @returns A CMakeValue object with the appropriate type and value. - * @throws An error if the input value is invalid or cannot be converted to a CMakeValue. - */ -export function cmakeify(value: (string | boolean | number | string[] | CMakeValue)): CMakeValue { - const ret: CMakeValue = { - type: 'UNKNOWN', - value: '' - }; - if (value === true || value === false) { - ret.type = 'BOOL'; - ret.value = value ? 'TRUE' : 'FALSE'; - } else if (isString(value)) { - ret.type = 'STRING'; - ret.value = replaceAll(value, ';', '\\;'); - } else if (typeof value === 'number') { - ret.type = 'STRING'; - ret.value = value.toString(); - } else if (value instanceof Array) { - ret.type = 'STRING'; - ret.value = value.join(';'); - } else if (Object.getOwnPropertyNames(value).filter(e => e === 'type' || e === 'value').length === 2) { - ret.type = value.type; - ret.value = value.value; - } else { - throw new Error(localize('invalid.value', 'Invalid value to convert to cmake value: {0}', JSON.stringify(value))); - } - return ret; -} +// Re-export CMakeValue types and function from the pure module (no vscode dependency) +// This allows backward compatibility for existing imports from @cmt/util +export { CMakeValue, cmakeify } from '@cmt/cmakeValue'; /** * Terminates a child process and its descendant processes. @@ -446,15 +412,14 @@ export function versionToString(ver: Version): string { } /** - * Converts an error object to a string. - * If the error has a stack trace, it includes the stack trace in the string. + * Converts an error object to a human-readable string. + * Only includes the error message, not the stack trace. * @param e The error object to convert. - * @returns A string representation of the error. + * @returns A string representation of the error message. */ export function errorToString(e: any): string { - if (e.stack) { - // e.stack has both the message and the stack in it. - return `\n\t${e.stack}`; + if (e.message) { + return `\n\t${e.message}`; } return `\n\t${e.toString()}`; } @@ -817,6 +782,15 @@ export function platformPathEquivalent(a: string, b: string): boolean { return platformPathCompare(a, b) === Ordering.Equivalent; } +/** + * Normalizes a URI's file-system path according to the platform's case and Unicode normalization rules. + * @param uri The URI whose fsPath to normalize. + * @returns The normalized path string. + */ +export function platformNormalizeUri(uri: vscode.Uri): string { + return platformNormalizePath(uri.fsPath); +} + /** * Sets a context value in the VS Code context. * @param key The context key to set. @@ -827,6 +801,23 @@ export function setContextValue(key: string, value: any): Thenable { return vscode.commands.executeCommand('setContext', key, value); } +/** + * Shows a Quick Pick with typed payload items and returns the selected payload. + * @param items The Quick Pick items, each with an associated payload value. + * @param options Standard VS Code Quick Pick options. + * @returns The payload of the selected item, or null if the user cancelled. + */ +export async function quickPick( + items: (vscode.QuickPickItem & { payload: T })[], + options: vscode.QuickPickOptions +): Promise { + const selected = await vscode.window.showQuickPick(items, options); + if (!selected) { + return null; + } + return selected.payload; +} + export interface ProgressReport { message: string; increment?: number; diff --git a/src/workspace.ts b/src/workspace.ts index d5d46a564f..865d83b4ca 100644 --- a/src/workspace.ts +++ b/src/workspace.ts @@ -5,6 +5,7 @@ import * as vscode from 'vscode'; import { ConfigurationReader } from '@cmt/config'; +import { Environment } from '@cmt/environmentVariables'; import paths from '@cmt/paths'; import { StateManager } from '@cmt/state'; @@ -43,8 +44,8 @@ export class DirectoryContext { * be used over `ConfigurationReader.cmakePath` because it will do additional * path expansion and searching. */ - getCMakePath(overWriteCMakePathSetting?: string): Promise { - return paths.getCMakePath(this, overWriteCMakePathSetting); + getCMakePath(overWriteCMakePathSetting?: string, envOverride?: Environment): Promise { + return paths.getCMakePath(this, overWriteCMakePathSetting, envOverride); } /** * The CTest executable for the directory. See `cmakePath` for more diff --git a/syntaxes/CMake.tmLanguage.json b/syntaxes/CMake.tmLanguage.json index 16ea4c4657..5bbc791c7f 100644 --- a/syntaxes/CMake.tmLanguage.json +++ b/syntaxes/CMake.tmLanguage.json @@ -25,6 +25,7 @@ { "include": "#conditionalControl" }, { "include": "#loopControl" }, { "include": "#returnControl" }, + { "include": "#scopedPropertyCommand" }, { "include": "#builtInCommands" }, { "include": "#knownVariables" }, { "include": "#properties" }, @@ -41,7 +42,13 @@ }, "variableReference": { "name": "variable.other.cmake", - "match": "\\$\\{\\w+\\}" + "begin": "\\$\\{", + "beginCaptures": { "0": { "name": "punctuation.section.variable.begin.cmake" } }, + "end": "\\}", + "endCaptures": { "0": { "name": "punctuation.section.variable.end.cmake" } }, + "patterns": [ + { "include": "#knownVariables" } + ] }, "envVariableReference": { "name": "variable.other.env.cmake", @@ -330,6 +337,30 @@ } ] }, + "scopedPropertyCommand": { + "comment": "Property commands (set_property, get_property, etc.) with scoped keywords and property names", + "begin": "\\b(?i:(set_property|get_property|define_property|set_source_files_properties|set_target_properties|get_target_property|set_tests_properties|get_test_property|set_directory_properties|get_directory_property))\\b\\s*(\\()", + "beginCaptures": { + "1": { "name": "support.function.cmake" }, + "2": { "name": "punctuation.section.arguments.begin.cmake" } + }, + "end": "\\)", + "endCaptures": { "0": { "name": "punctuation.section.arguments.end.cmake" } }, + "patterns": [ + { "include": "#nestedParens" }, + { + "comment": "Property command scope keywords", + "name": "keyword.other.cmake", + "match": "\\b(?i:GLOBAL|DIRECTORY|TARGET|SOURCE|INSTALL|TEST|CACHE|PROPERTY|APPEND|APPEND_STRING|BRIEF_DOCS|FULL_DOCS|INHERITED)\\b" + }, + { + "comment": "Well-known CMake properties for targets, sources, tests, directories, and global scope", + "name": "support.type.property.cmake", + "match": "\\b(?i:COMPILE_OPTIONS|COMPILE_FEATURES|COMPILE_FLAGS|COMPILE_DEFINITIONS(_\\w+)?|LINK_OPTIONS|LINK_FLAGS(_\\w+)?|LINK_LIBRARIES|LINK_DEPENDS|LINK_SEARCH_END_STATIC|LINK_SEARCH_START_STATIC|INTERFACE_COMPILE_DEFINITIONS|INTERFACE_COMPILE_OPTIONS|INTERFACE_COMPILE_FEATURES|INTERFACE_SOURCES|INTERFACE_LINK_LIBRARIES|INTERFACE_INCLUDE_DIRECTORIES|INTERFACE_SYSTEM_INCLUDE_DIRECTORIES|INTERFACE_POSITION_INDEPENDENT_CODE|INTERFACE_HEADER_SETS|PRECOMPILE_HEADERS|UNITY_BUILD(_\\w+)?|LINK_WHAT_YOU_USE|VERIFY_INTERFACE_HEADER_SETS|OPTIMIZE_DEPENDENCIES|HEADER_SETS|POSITION_INDEPENDENT_CODE|INTERPROCEDURAL_OPTIMIZATION(_\\w+)?|EXCLUDE_FROM_ALL|SOURCES|OUTPUT_NAME(_\\w+)?|RUNTIME_OUTPUT_DIRECTORY(_\\w+)?|LIBRARY_OUTPUT_DIRECTORY(_\\w+)?|ARCHIVE_OUTPUT_(DIRECTORY|NAME)(_\\w+)?|PDB_OUTPUT_DIRECTORY|PDB_NAME(_\\w+)?|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|SKIP_BUILD_RPATH|BUILD_WITH_INSTALL_RPATH|INSTALL_NAME_DIR|SOVERSION|VERSION|PREFIX|SUFFIX|DEBUG_POSTFIX|\\w+_POSTFIX|LINKER_LANGUAGE|FOLDER|LABELS|TIMEOUT|WILL_FAIL|COST|PASS_REGULAR_EXPRESSION|FAIL_REGULAR_EXPRESSION|FIXTURES_REQUIRED|FIXTURES_SETUP|FIXTURES_CLEANUP|RESOURCE_LOCK|PROCESSORS|RUN_SERIAL|WORKING_DIRECTORY|GENERATED|LANGUAGE|HEADER_FILE_ONLY|SYMBOLIC|OBJECT_DEPENDS|WRAP_EXCLUDE|MACOSX_PACKAGE_LOCATION|XCODE_ATTRIBUTE_\\w+|VS_GLOBAL_\\w+|VS_DOTNET_REFERENCES|VS_SCC_(AUXPATH|LOCALPATH|PROJECTNAME|PROVIDER)|MAP_IMPORTED_CONFIG_\\w+|IMPORTED(_\\w+)?|IMPORT_PREFIX|IMPORT_SUFFIX|AUTOMOC|AUTOMOC_MOC_OPTIONS|AUTOUIC|AUTORCC|ENABLE_EXPORTS|DEFINE_SYMBOL|OSX_ARCHITECTURES(_\\w+)?|MACOSX_BUNDLE|MACOSX_BUNDLE_INFO_PLIST|MACOSX_FRAMEWORK_INFO_PLIST|MACOSX_RPATH|STATIC_LIBRARY_FLAGS(_\\w+)?|WIN32_EXECUTABLE|VS_WINRT_EXTENSIONS|VS_WINRT_REFERENCES|COMPATIBLE_INTERFACE_BOOL|COMPATIBLE_INTERFACE_STRING|COMPATIBLE_INTERFACE_NUMBER_MAX|COMPATIBLE_INTERFACE_NUMBER_MIN|NO_SONAME|HAS_CXX|GNUtoMS|FRAMEWORK|BUNDLE(_EXTENSION)?)\\b" + }, + { "include": "#commonArgPatterns" } + ] + }, "deprecatedKeywords": { "comment": "Deprecated CMake keywords. All previous entries (ABSTRACT_FILES, BUILD_NAME, SOURCE_FILES, SOURCE_FILES_REMOVE, VTK_MAKE_INSTANTIATOR, VTK_WRAP_JAVA, VTK_WRAP_PYTHON, VTK_WRAP_TCL, WRAP_EXCLUDE_FILES) were removed per #4613 because they were removed from CMake 20+ years ago and collide with common user variable names like SOURCE_FILES. Re-add entries here when CMake deprecates new keywords that need highlighting.", "name": "invalid.deprecated.cmake", @@ -348,7 +379,7 @@ "knownVariables": { "comment": "Well-known CMake variables: system/platform detection, behavior-changing, build-control, and information-providing. Consolidated from systemVariables, changeBehaviorVariables, controlBuildVariables, provideInformationVariables — all rendered identically by standard themes (support.type prefix).", "name": "support.type.variable.cmake", - "match": "\\b(?i:APPLE|BORLAND|CMAKE_CL_64|CMAKE_COMPILER_2005|CMAKE_HOST_APPLE|CMAKE_HOST_SYSTEM|CMAKE_HOST_SYSTEM_NAME|CMAKE_HOST_SYSTEM_PROCESSOR|CMAKE_HOST_SYSTEM_VERSION|CMAKE_HOST_UNIX|CMAKE_HOST_WIN32|CMAKE_LIBRARY_ARCHITECTURE|CMAKE_LIBRARY_ARCHITECTURE_REGEX|CMAKE_OBJECT_PATH_MAX|CMAKE_SYSTEM|CMAKE_SYSTEM_NAME|CMAKE_SYSTEM_PROCESSOR|CMAKE_SYSTEM_VERSION|CYGWIN|MSVC|MSVC_IDE|MSVC_VERSION|MSVC_TOOLSET_VERSION|UNIX|WIN32|XCODE_VERSION|ANDROID|IOS|LINUX|MSYS|WINCE|WINDOWS_PHONE|WINDOWS_STORE|CMAKE_CROSSCOMPILING|CMAKE_SIZEOF_VOID_P|BUILD_SHARED_LIBS|(CMAKE_)?(ABSOLUTE_DESTINATION_FILES|AUTOMOC_RELAXED_MODE|BACKWARDS_COMPATIBILITY|BUILD_TYPE|COLOR_MAKEFILE|CONFIGURATION_TYPES|DEBUG_TARGET_PROPERTIES|DISABLE_FIND_PACKAGE_\\w+|FIND_LIBRARY_PREFIXES|FIND_LIBRARY_SUFFIXES|IGNORE_PATH|INCLUDE_PATH|INSTALL_DEFAULT_COMPONENT_NAME|INSTALL_PREFIX|LIBRARY_PATH|MFC_FLAG|MODULE_PATH|NOT_USING_CONFIG_FLAGS|POLICY_DEFAULT_CMP\\w+|PREFIX_PATH|PROGRAM_PATH|SKIP_INSTALL_ALL_DEPENDENCY|SYSTEM_IGNORE_PATH|SYSTEM_INCLUDE_PATH|SYSTEM_LIBRARY_PATH|SYSTEM_PREFIX_PATH|SYSTEM_PROGRAM_PATH|USER_MAKE_RULES_OVERRIDE|WARN_ON_ABSOLUTE_INSTALL_DESTINATION)|(CMAKE_)?(\\w+_POSTFIX|ARCHIVE_OUTPUT_DIRECTORY|AUTOMOC|AUTOMOC_MOC_OPTIONS|BUILD_WITH_INSTALL_RPATH|DEBUG_POSTFIX|EXE_LINKER_FLAGS|EXE_LINKER_FLAGS_\\w+|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GNUtoMS|INCLUDE_CURRENT_DIR|INCLUDE_CURRENT_DIR_IN_INTERFACE|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_PATH_FLAG|LINK_DEF_FILE_FLAG|LINK_DEPENDS_NO_SHARED|LINK_INTERFACE_LIBRARIES|LINK_LIBRARY_FILE_FLAG|LINK_LIBRARY_FLAG|MACOSX_BUNDLE|NO_BUILTIN_CHRPATH|PDB_OUTPUT_DIRECTORY|COMPILE_PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|RUNTIME_OUTPUT_DIRECTORY|SKIP_BUILD_RPATH|SKIP_INSTALL_RPATH|TRY_COMPILE_CONFIGURATION|USE_RELATIVE_PATHS|WIN32_EXECUTABLE)|EXECUTABLE_OUTPUT_PATH|LIBRARY_OUTPUT_PATH|CMAKE_(AR|ARGC|ARGV0|BINARY_DIR|BUILD_TOOL|C_STANDARD|C_STANDARD_REQUIRED|CXX_STANDARD|CXX_STANDARD_REQUIRED|C_COMPILER|CXX_COMPILER|C_COMPILER_ID|CXX_COMPILER_ID|C_FLAGS|CXX_FLAGS|C_FLAGS_DEBUG|C_FLAGS_RELEASE|C_FLAGS_MINSIZEREL|C_FLAGS_RELWITHDEBINFO|CXX_FLAGS_DEBUG|CXX_FLAGS_RELEASE|CXX_FLAGS_MINSIZEREL|CXX_FLAGS_RELWITHDEBINFO|CACHEFILE_DIR|CACHE_MAJOR_VERSION|CACHE_MINOR_VERSION|CACHE_PATCH_VERSION|CFG_INTDIR|COMMAND|CROSSCOMPILING|CTEST_COMMAND|CURRENT_BINARY_DIR|CURRENT_LIST_DIR|CURRENT_LIST_FILE|CURRENT_LIST_LINE|CURRENT_SOURCE_DIR|CURRENT_FUNCTION|CURRENT_FUNCTION_LIST_DIR|CURRENT_FUNCTION_LIST_FILE|CURRENT_FUNCTION_LIST_LINE|DL_LIBS|EDIT_COMMAND|EXECUTABLE_SUFFIX|EXTRA_GENERATOR|EXTRA_SHARED_LIBRARY_SUFFIXES|GENERATOR|GENERATOR_PLATFORM|GENERATOR_TOOLSET|HOME_DIRECTORY|IMPORT_LIBRARY_PREFIX|IMPORT_LIBRARY_SUFFIX|LINK_LIBRARY_SUFFIX|MAJOR_VERSION|MAKE_PROGRAM|MINOR_VERSION|PARENT_LIST_FILE|PATCH_VERSION|PROJECT_NAME|RANLIB|ROOT|SCRIPT_MODE_FILE|SHARED_LIBRARY_PREFIX|SHARED_LIBRARY_SUFFIX|SHARED_LINKER_FLAGS|SHARED_MODULE_PREFIX|SHARED_MODULE_SUFFIX|SIZEOF_VOID_P|SKIP_RPATH|SOURCE_DIR|STANDARD_LIBRARIES|STATIC_LIBRARY_PREFIX|STATIC_LIBRARY_SUFFIX|TWEAK_VERSION|USING_VC_FREE_TOOLS|VERBOSE_MAKEFILE|VERSION|EXPORT_COMPILE_COMMANDS|TOOLCHAIN_FILE|SYSROOT|STAGING_PREFIX|FIND_ROOT_PATH|FIND_ROOT_PATH_MODE_PROGRAM|FIND_ROOT_PATH_MODE_LIBRARY|FIND_ROOT_PATH_MODE_INCLUDE|FIND_ROOT_PATH_MODE_PACKAGE)|PROJECT_BINARY_DIR|PROJECT_NAME|PROJECT_SOURCE_DIR|PROJECT_VERSION|PROJECT_VERSION_MAJOR|PROJECT_VERSION_MINOR|PROJECT_VERSION_PATCH|PROJECT_VERSION_TWEAK|PROJECT_DESCRIPTION|PROJECT_HOMEPAGE_URL|\\w+_BINARY_DIR|\\w+_SOURCE_DIR)\\b" + "match": "\\b(?i:APPLE|BORLAND|CMAKE_CL_64|CMAKE_COMPILER_2005|CMAKE_HOST_APPLE|CMAKE_HOST_SYSTEM|CMAKE_HOST_SYSTEM_NAME|CMAKE_HOST_SYSTEM_PROCESSOR|CMAKE_HOST_SYSTEM_VERSION|CMAKE_HOST_UNIX|CMAKE_HOST_WIN32|CMAKE_LIBRARY_ARCHITECTURE|CMAKE_LIBRARY_ARCHITECTURE_REGEX|CMAKE_OBJECT_PATH_MAX|CMAKE_SYSTEM|CMAKE_SYSTEM_NAME|CMAKE_SYSTEM_PROCESSOR|CMAKE_SYSTEM_VERSION|CYGWIN|MSVC|MSVC_IDE|MSVC_VERSION|MSVC_TOOLSET_VERSION|UNIX|WIN32|XCODE_VERSION|ANDROID|IOS|LINUX|MSYS|WINCE|WINDOWS_PHONE|WINDOWS_STORE|CMAKE_CROSSCOMPILING|CMAKE_SIZEOF_VOID_P|BUILD_SHARED_LIBS|(CMAKE_)?(ABSOLUTE_DESTINATION_FILES|AUTOMOC_RELAXED_MODE|BACKWARDS_COMPATIBILITY|BUILD_TYPE|COLOR_MAKEFILE|CONFIGURATION_TYPES|DEBUG_TARGET_PROPERTIES|DISABLE_FIND_PACKAGE_\\w+|FIND_LIBRARY_PREFIXES|FIND_LIBRARY_SUFFIXES|IGNORE_PATH|INCLUDE_PATH|INSTALL_DEFAULT_COMPONENT_NAME|INSTALL_PREFIX|LIBRARY_PATH|MFC_FLAG|MODULE_PATH|NOT_USING_CONFIG_FLAGS|POLICY_DEFAULT_CMP\\w+|PREFIX_PATH|PROGRAM_PATH|SKIP_INSTALL_ALL_DEPENDENCY|SYSTEM_IGNORE_PATH|SYSTEM_INCLUDE_PATH|SYSTEM_LIBRARY_PATH|SYSTEM_PREFIX_PATH|SYSTEM_PROGRAM_PATH|USER_MAKE_RULES_OVERRIDE|WARN_ON_ABSOLUTE_INSTALL_DESTINATION)|(CMAKE_)?(\\w+_POSTFIX|ARCHIVE_OUTPUT_DIRECTORY|AUTOMOC|AUTOMOC_MOC_OPTIONS|BUILD_WITH_INSTALL_RPATH|DEBUG_POSTFIX|EXE_LINKER_FLAGS|EXE_LINKER_FLAGS_\\w+|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GNUtoMS|INCLUDE_CURRENT_DIR|INCLUDE_CURRENT_DIR_IN_INTERFACE|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_PATH_FLAG|LINK_DEF_FILE_FLAG|LINK_DEPENDS_NO_SHARED|LINK_INTERFACE_LIBRARIES|LINK_LIBRARY_FILE_FLAG|LINK_LIBRARY_FLAG|MACOSX_BUNDLE|NO_BUILTIN_CHRPATH|PDB_OUTPUT_DIRECTORY|COMPILE_PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|RUNTIME_OUTPUT_DIRECTORY|SKIP_BUILD_RPATH|SKIP_INSTALL_RPATH|TRY_COMPILE_CONFIGURATION|USE_RELATIVE_PATHS|WIN32_EXECUTABLE)|EXECUTABLE_OUTPUT_PATH|LIBRARY_OUTPUT_PATH|CMAKE_(AR|ARGC|ARGV0|BINARY_DIR|BUILD_TOOL|C_STANDARD|C_STANDARD_REQUIRED|CXX_STANDARD|CXX_STANDARD_REQUIRED|C_COMPILER|CXX_COMPILER|C_COMPILER_ID|CXX_COMPILER_ID|C_FLAGS|CXX_FLAGS|C_FLAGS_DEBUG|C_FLAGS_RELEASE|C_FLAGS_MINSIZEREL|C_FLAGS_RELWITHDEBINFO|CXX_FLAGS_DEBUG|CXX_FLAGS_RELEASE|CXX_FLAGS_MINSIZEREL|CXX_FLAGS_RELWITHDEBINFO|CACHEFILE_DIR|CACHE_MAJOR_VERSION|CACHE_MINOR_VERSION|CACHE_PATCH_VERSION|CFG_INTDIR|COMMAND|CROSSCOMPILING|CTEST_COMMAND|CURRENT_BINARY_DIR|CURRENT_LIST_DIR|CURRENT_LIST_FILE|CURRENT_LIST_LINE|CURRENT_SOURCE_DIR|CURRENT_FUNCTION|CURRENT_FUNCTION_LIST_DIR|CURRENT_FUNCTION_LIST_FILE|CURRENT_FUNCTION_LIST_LINE|DL_LIBS|EDIT_COMMAND|EXECUTABLE_SUFFIX|EXTRA_GENERATOR|EXTRA_SHARED_LIBRARY_SUFFIXES|GENERATOR|GENERATOR_PLATFORM|GENERATOR_TOOLSET|HOME_DIRECTORY|IMPORT_LIBRARY_PREFIX|IMPORT_LIBRARY_SUFFIX|LINK_LIBRARY_SUFFIX|MAJOR_VERSION|MAKE_PROGRAM|MINOR_VERSION|PARENT_LIST_FILE|PATCH_VERSION|PROJECT_NAME|RANLIB|ROOT|SCRIPT_MODE_FILE|SHARED_LIBRARY_PREFIX|SHARED_LIBRARY_SUFFIX|SHARED_LINKER_FLAGS|SHARED_MODULE_PREFIX|SHARED_MODULE_SUFFIX|SIZEOF_VOID_P|SKIP_RPATH|SOURCE_DIR|STANDARD_LIBRARIES|STATIC_LIBRARY_PREFIX|STATIC_LIBRARY_SUFFIX|TWEAK_VERSION|USING_VC_FREE_TOOLS|VERBOSE_MAKEFILE|VERSION|EXPORT_COMPILE_COMMANDS|TOOLCHAIN_FILE|SYSROOT|STAGING_PREFIX|FIND_ROOT_PATH|FIND_ROOT_PATH_MODE_PROGRAM|FIND_ROOT_PATH_MODE_LIBRARY|FIND_ROOT_PATH_MODE_INCLUDE|FIND_ROOT_PATH_MODE_PACKAGE)|PROJECT_BINARY_DIR|PROJECT_NAME|PROJECT_SOURCE_DIR|PROJECT_VERSION|PROJECT_VERSION_MAJOR|PROJECT_VERSION_MINOR|PROJECT_VERSION_PATCH|PROJECT_VERSION_TWEAK|PROJECT_DESCRIPTION|PROJECT_HOMEPAGE_URL|CMAKE_\\w+_COMPILER_VERSION|CMAKE_\\w+_COMPILER_FRONTEND_VARIANT|CMAKE_\\w+_SIMULATE_ID|CMAKE_\\w+_SIMULATE_VERSION|CMAKE_\\w+_EXTENSIONS|CMAKE_\\w+_STANDARD_REQUIRED|CMAKE_\\w+_COMPILE_FEATURES|CMAKE_MSVC_RUNTIME_LIBRARY|CMAKE_INTERPROCEDURAL_OPTIMIZATION|CMAKE_UNITY_BUILD(_\\w+)?|CMAKE_COMPILE_WARNING_AS_ERROR|CMAKE_COLOR_DIAGNOSTICS|CMAKE_LINK_WHAT_YOU_USE|CMAKE_VERIFY_INTERFACE_HEADER_SETS|CMAKE_OPTIMIZE_DEPENDENCIES|CMAKE_BUILD_RPATH(_USE_ORIGIN)?|\\w+_BINARY_DIR|\\w+_SOURCE_DIR)\\b" }, "properties": { "comment": "CMake properties for cache entries, source files, tests, directories, global scope, and targets. Consolidated from 6 category-specific rules — all rendered identically by standard themes (support.type prefix). commandProperties is kept separate (support.function prefix = different theme color).", diff --git a/test/end-to-end-tests/successful-build/test/debugger.test.ts b/test/end-to-end-tests/successful-build/test/debugger.test.ts index 99b15ff31f..e5c54df130 100644 --- a/test/end-to-end-tests/successful-build/test/debugger.test.ts +++ b/test/end-to-end-tests/successful-build/test/debugger.test.ts @@ -294,23 +294,28 @@ suite('Debug/Launch interface', () => { const terminal = await cmakeProject.launchTarget(); expect(terminal).to.be.not.null; - expect(terminal!.name).to.eq(`CMake/Launch - ${executablesTargets[0].name}`); - const start = new Date(); - // Needed to get launch target result - await new Promise(resolve => setTimeout(resolve, 3000)); + try { + // Use creationOptions.name — terminal.name may be dynamically + // overridden by the shell process title in newer VS Code versions. + expect(terminal!.creationOptions.name).to.eq(`CMake/Launch - ${executablesTargets[0].name}`); - const elapsed = (new Date().getTime() - start.getTime()) / 1000; - console.log(`Waited ${elapsed} seconds for output file to appear`); + const start = new Date(); + // Needed to get launch target result + await new Promise(resolve => setTimeout(resolve, 3000)); - const exists = fs.existsSync(createdFileOnExecution); - // Check that it is compiled as a new file - expect(exists).to.be.true; + const elapsed = (new Date().getTime() - start.getTime()) / 1000; + console.log(`Waited ${elapsed} seconds for output file to appear`); - terminal?.dispose(); + const exists = fs.existsSync(createdFileOnExecution); + // Check that it is compiled as a new file + expect(exists).to.be.true; + } finally { + terminal?.dispose(); - // Needed to ensure things get disposed - await new Promise((resolve) => setTimeout(resolve, 3000)); + // Needed to ensure things get disposed + await new Promise((resolve) => setTimeout(resolve, 3000)); + } }).timeout(60000); test('Test launch same target multiple times when newTerminal run is enabled', async () => { @@ -341,17 +346,23 @@ suite('Debug/Launch interface', () => { const term2 = await cmakeProject.launchTarget(); expect(term2).to.be.not.null; - expect(term2!.name).to.eq( - `CMake/Launch - ${executablesTargets[0].name}` - ); - - const term2Pid = await term2?.processId; - expect(term1Pid).to.not.eq(term2Pid); - term1?.dispose(); - term2?.dispose(); - // Needed to ensure things get disposed - await new Promise((resolve) => setTimeout(resolve, 3000)); + try { + // Use creationOptions.name — terminal.name may be dynamically + // overridden by the shell process title in newer VS Code versions. + expect(term2!.creationOptions.name).to.eq( + `CMake/Launch - ${executablesTargets[0].name}` + ); + + const term2Pid = await term2?.processId; + expect(term1Pid).to.not.eq(term2Pid); + } finally { + term1?.dispose(); + term2?.dispose(); + + // Needed to ensure things get disposed + await new Promise((resolve) => setTimeout(resolve, 3000)); + } }).timeout(60000); test('Test launch same target multiple times when newTerminal run is disabled', async () => { diff --git a/test/unit-tests/backend/buildCmdStr.test.ts b/test/unit-tests/backend/buildCmdStr.test.ts new file mode 100644 index 0000000000..cf766f398d --- /dev/null +++ b/test/unit-tests/backend/buildCmdStr.test.ts @@ -0,0 +1,108 @@ +import { expect } from 'chai'; + +/** + * Tests for the buildCmdStr() function from src/proc.ts. + * + * This function constructs a human-readable command string from a command and + * its arguments, quoting any arguments that contain whitespace or special characters. + * It is used for logging executed commands to the output panel. + * + * The function is mirrored here because proc.ts transitively depends on 'vscode', + * which cannot be imported in backend tests. + */ + +// --- Mirror of proc.buildCmdStr --- +function buildCmdStr(command: string, args?: string[]): string { + let cmdarr = [command]; + if (args) { + cmdarr = cmdarr.concat(args); + } + return cmdarr.map(a => /[ \n\r\f;\t]/.test(a) ? `"${a}"` : a).join(' '); +} + +suite('[buildCmdStr]', () => { + + test('Command with no arguments', () => { + const result = buildCmdStr('cmake'); + expect(result).to.equal('cmake'); + }); + + test('Command with simple arguments', () => { + const result = buildCmdStr('cmake', ['--build', '.', '--target', 'all']); + expect(result).to.equal('cmake --build . --target all'); + }); + + test('Argument with spaces is quoted', () => { + const result = buildCmdStr('cmake', ['-S', '/path with spaces/src']); + expect(result).to.equal('cmake -S "/path with spaces/src"'); + }); + + test('Command itself with spaces is quoted', () => { + const result = buildCmdStr('/Program Files/CMake/bin/cmake', ['--version']); + expect(result).to.equal('"/Program Files/CMake/bin/cmake" --version'); + }); + + test('Argument with tab is quoted', () => { + const result = buildCmdStr('cmake', ['-DVAR=value\twith\ttabs']); + expect(result).to.equal('cmake "-DVAR=value\twith\ttabs"'); + }); + + test('Argument with newline is quoted', () => { + const result = buildCmdStr('cmake', ['-DVAR=line1\nline2']); + expect(result).to.equal('cmake "-DVAR=line1\nline2"'); + }); + + test('Argument with carriage return is quoted', () => { + const result = buildCmdStr('cmake', ['-DVAR=line1\rline2']); + expect(result).to.equal('cmake "-DVAR=line1\rline2"'); + }); + + test('Argument with form feed is quoted', () => { + const result = buildCmdStr('cmake', ['-DVAR=value\fmore']); + expect(result).to.equal('cmake "-DVAR=value\fmore"'); + }); + + test('Argument with semicolon is quoted', () => { + const result = buildCmdStr('cmake', ['-DCMAKE_PREFIX_PATH=/a;/b;/c']); + expect(result).to.equal('cmake "-DCMAKE_PREFIX_PATH=/a;/b;/c"'); + }); + + test('Mixed quoted and unquoted arguments', () => { + const result = buildCmdStr('cmake', ['--build', '/path with space', '--config', 'Release']); + expect(result).to.equal('cmake --build "/path with space" --config Release'); + }); + + test('Empty arguments list', () => { + const result = buildCmdStr('cmake', []); + expect(result).to.equal('cmake'); + }); + + test('Undefined arguments', () => { + const result = buildCmdStr('cmake', undefined); + expect(result).to.equal('cmake'); + }); + + test('Multiple CMake-style define arguments', () => { + const result = buildCmdStr('cmake', [ + '-DCMAKE_BUILD_TYPE=Debug', + '-DCMAKE_INSTALL_PREFIX=/usr/local', + '-DBUILD_SHARED_LIBS=ON' + ]); + expect(result).to.equal('cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_SHARED_LIBS=ON'); + }); + + test('Windows path with backslashes is not quoted (no special chars)', () => { + const result = buildCmdStr('C:\\CMake\\bin\\cmake.exe', ['--version']); + expect(result).to.equal('C:\\CMake\\bin\\cmake.exe --version'); + }); + + test('Argument that is just a space is quoted', () => { + const result = buildCmdStr('echo', [' ']); + expect(result).to.equal('echo " "'); + }); + + test('Arguments preserving cmake --install pattern', () => { + const result = buildCmdStr('cmake', ['--install', '/build/dir', '--config', 'Release', '--prefix', '/opt/install path']); + expect(result).to.equal('cmake --install /build/dir --config Release --prefix "/opt/install path"'); + }); +}); diff --git a/test/unit-tests/backend/cmakeListsModifier.test.ts b/test/unit-tests/backend/cmakeListsModifier.test.ts new file mode 100644 index 0000000000..75c25012ff --- /dev/null +++ b/test/unit-tests/backend/cmakeListsModifier.test.ts @@ -0,0 +1,153 @@ +import { expect } from 'chai'; +import { resolveNormalized, compareSortKeys, quoteArgument } from '@cmt/cmakeListsModifier'; +import { platformNormalizePath, platformPathEquivalent, splitPath } from '@cmt/util'; +import * as path from 'path'; + +suite('cmakeListsModifier pure functions', () => { + + suite('quoteArgument', () => { + test('Returns plain string unchanged', () => { + expect(quoteArgument('hello')).to.equal('hello'); + }); + + test('Returns path without special chars unchanged', () => { + expect(quoteArgument('src/main.cpp')).to.equal('src/main.cpp'); + }); + + test('Quotes string with spaces', () => { + expect(quoteArgument('hello world')).to.equal('"hello world"'); + }); + + test('Quotes string with parentheses', () => { + expect(quoteArgument('foo(bar)')).to.equal('"foo(bar)"'); + }); + + test('Quotes string with hash', () => { + expect(quoteArgument('foo#bar')).to.equal('"foo#bar"'); + }); + + test('Escapes embedded quotes', () => { + expect(quoteArgument('say "hi"')).to.equal('"say \\"hi\\""'); + }); + + test('Escapes tabs', () => { + expect(quoteArgument('a\tb')).to.equal('"a\\tb"'); + }); + + test('Escapes carriage returns', () => { + expect(quoteArgument('a\rb')).to.equal('"a\\rb"'); + }); + + test('Escapes newlines', () => { + expect(quoteArgument('a\nb')).to.equal('"a\\nb"'); + }); + + test('Escapes backslash', () => { + expect(quoteArgument('C:\\path')).to.equal('"C:\\path"'); + }); + + test('Empty string is returned unchanged', () => { + expect(quoteArgument('')).to.equal(''); + }); + + test('String with only special chars is quoted', () => { + expect(quoteArgument(' ')).to.equal('" "'); + }); + }); + + suite('compareSortKeys', () => { + test('Equal keys return 0', () => { + expect(compareSortKeys([1, 2, 3], [1, 2, 3])).to.equal(0); + }); + + test('First differing numeric key determines order', () => { + expect(compareSortKeys([1, 2], [1, 3])).to.be.lessThan(0); + expect(compareSortKeys([1, 3], [1, 2])).to.be.greaterThan(0); + }); + + test('First differing string key determines order', () => { + expect(compareSortKeys(['a', 'b'], ['a', 'c'])).to.be.lessThan(0); + expect(compareSortKeys(['a', 'c'], ['a', 'b'])).to.be.greaterThan(0); + }); + + test('Shorter array is less when prefix matches', () => { + expect(compareSortKeys([1, 2], [1, 2, 3])).to.be.lessThan(0); + expect(compareSortKeys([1, 2, 3], [1, 2])).to.be.greaterThan(0); + }); + + test('Empty arrays are equal', () => { + expect(compareSortKeys([], [])).to.equal(0); + }); + + test('Empty vs non-empty', () => { + expect(compareSortKeys([], [1])).to.be.lessThan(0); + }); + + test('Mixed number and string keys', () => { + // Numbers compared numerically, strings by localeCompare + expect(compareSortKeys([0, 'a'], [0, 'b'])).to.be.lessThan(0); + expect(compareSortKeys([1, 'z'], [0, 'a'])).to.be.greaterThan(0); + }); + + test('Negative numbers sort correctly', () => { + expect(compareSortKeys([-5], [-3])).to.be.lessThan(0); + expect(compareSortKeys([-1], [-10])).to.be.greaterThan(0); + }); + }); + + suite('resolveNormalized', () => { + test('Resolves relative path against base', () => { + const result = resolveNormalized('/project/src', 'main.cpp'); + const expected = platformNormalizePath(path.resolve('/project/src', 'main.cpp')); + expect(result).to.equal(expected); + }); + + test('Absolute path ignores base', () => { + const absPath = path.resolve('/absolute/path.cpp'); + const result = resolveNormalized('/project/src', absPath); + expect(result).to.equal(platformNormalizePath(absPath)); + }); + + test('Normalizes parent directory references', () => { + const result = resolveNormalized('/project/src', '../include/header.h'); + const expected = platformNormalizePath(path.resolve('/project/src', '../include/header.h')); + expect(result).to.equal(expected); + }); + }); + + suite('platformPathEquivalent', () => { + test('Identical paths are equivalent', () => { + expect(platformPathEquivalent('/project/src/main.cpp', '/project/src/main.cpp')).to.be.true; + }); + + test('Different paths are not equivalent', () => { + expect(platformPathEquivalent('/project/src/a.cpp', '/project/src/b.cpp')).to.be.false; + }); + + if (process.platform === 'win32') { + test('Case-insensitive comparison on Windows', () => { + expect(platformPathEquivalent('C:\\Project\\Src\\Main.cpp', 'c:\\project\\src\\main.cpp')).to.be.true; + }); + + test('Forward and back slashes treated same on Windows', () => { + expect(platformPathEquivalent('C:/project/src/main.cpp', 'C:\\project\\src\\main.cpp')).to.be.true; + }); + } + }); + + suite('splitPath', () => { + test('Splits simple path', () => { + const parts = splitPath('a/b/c'); + expect(parts).to.have.length.greaterThan(0); + expect(parts[parts.length - 1]).to.equal('c'); + }); + + test('Empty string returns empty array', () => { + expect(splitPath('')).to.deep.equal([]); + }); + + test('Dot returns empty array', () => { + expect(splitPath('.')).to.deep.equal([]); + }); + }); +}); diff --git a/test/unit-tests/backend/cmakeParser.test.ts b/test/unit-tests/backend/cmakeParser.test.ts new file mode 100644 index 0000000000..2651720af1 --- /dev/null +++ b/test/unit-tests/backend/cmakeParser.test.ts @@ -0,0 +1,276 @@ +import { expect } from 'chai'; +import { createMockDocument } from './vscode-mock'; +import { CMakeParser, Token } from '@cmt/cmakeParser'; + +function parse(text: string) { + const doc = createMockDocument(text) as any; + return new CMakeParser(doc).parseDocument(); +} + +function parseOne(text: string) { + const ast = parse(text); + expect(ast.invocations).to.have.lengthOf(1); + return ast.invocations[0]; +} + +function argValues(text: string): string[] { + return parseOne(text).args.map((a: Token) => a.value); +} + +suite('CMakeParser', () => { + + suite('Basic command parsing', () => { + test('Parse simple command with no arguments', () => { + const inv = parseOne('command()'); + expect(inv.command.value).to.equal('command'); + expect(inv.args).to.have.lengthOf(0); + }); + + test('Parse command with one unquoted argument', () => { + const inv = parseOne('message(hello)'); + expect(inv.command.value).to.equal('message'); + expect(inv.args).to.have.lengthOf(1); + expect(inv.args[0].value).to.equal('hello'); + }); + + test('Parse command with multiple unquoted arguments', () => { + const values = argValues('set(MY_VAR a b c)'); + expect(values).to.deep.equal(['MY_VAR', 'a', 'b', 'c']); + }); + + test('Parse multiple commands', () => { + const ast = parse('cmake_minimum_required(VERSION 3.10)\nproject(MyProject)\n'); + expect(ast.invocations).to.have.lengthOf(2); + expect(ast.invocations[0].command.value).to.equal('cmake_minimum_required'); + expect(ast.invocations[1].command.value).to.equal('project'); + }); + + test('Parse empty document', () => { + const ast = parse(''); + expect(ast.invocations).to.have.lengthOf(0); + }); + + test('Parse document with only whitespace', () => { + const ast = parse(' \n\n \n'); + expect(ast.invocations).to.have.lengthOf(0); + }); + }); + + suite('Quoted arguments', () => { + test('Parse quoted argument', () => { + const values = argValues('message("hello world")'); + expect(values).to.deep.equal(['hello world']); + }); + + test('Parse quoted argument with escaped character', () => { + // CMake unescape: \\X -> X (the backslash is removed) + const values = argValues('message("hello\\nworld")'); + expect(values).to.deep.equal(['hellonworld']); + }); + + test('Parse quoted argument with escaped quote', () => { + const values = argValues('message("say \\"hi\\"")'); + expect(values).to.deep.equal(['say "hi"']); + }); + + test('Parse empty quoted argument', () => { + const values = argValues('message("")'); + expect(values).to.deep.equal(['']); + }); + + test('Parse quoted argument with escaped backslash', () => { + // \\\\ -> raw is \\, unescape removes one backslash -> \ + const values = argValues('message("C:\\\\path")'); + expect(values).to.deep.equal(['C:\\path']); + }); + }); + + suite('Bracketed arguments', () => { + // Note: The parser's ARG_TYPES order places UNQUOTED before BRACKETED, + // so bracket arguments inside command invocations are currently tokenized + // as UNQUOTED. The tests below verify the bracket value extraction regex + // (the assignArgumentValues BRACKETED case) works correctly when tokens + // are correctly typed as BRACKETED. + + test('Bracket argument regex extracts content (group 2, not group 1)', () => { + // This tests the regex used in assignArgumentValues for BRACKETED tokens. + // The regex: /^\[(=*)\[(.*)\]\1\]$/s + // Group 1 = equal signs, Group 2 = content. Value should be content. + const re = /^\[(=*)\[(.*)\]\1\]$/s; + + const simple = '[[hello world]]'; + expect(simple.replace(re, '$2')).to.equal('hello world'); + // Verify $1 would give wrong result (empty string for no = signs) + expect(simple.replace(re, '$1')).to.equal(''); + + const withEquals = '[=[hello]=]'; + expect(withEquals.replace(re, '$2')).to.equal('hello'); + expect(withEquals.replace(re, '$1')).to.equal('='); + + const doubleEquals = '[==[content]==]'; + expect(doubleEquals.replace(re, '$2')).to.equal('content'); + expect(doubleEquals.replace(re, '$1')).to.equal('=='); + + const withNewlines = '[[line1\nline2]]'; + expect(withNewlines.replace(re, '$2')).to.equal('line1\nline2'); + + const empty = '[[]]'; + expect(empty.replace(re, '$2')).to.equal(''); + }); + }); + + suite('Unquoted argument escaping', () => { + test('Unquoted argument with escaped space', () => { + const values = argValues('message(hello\\ world)'); + expect(values).to.deep.equal(['hello world']); + }); + + test('Unquoted argument with escaped paren', () => { + const values = argValues('message(hello\\()'); + expect(values).to.deep.equal(['hello(']); + }); + }); + + suite('Comments', () => { + test('Line comment before command', () => { + const ast = parse('# this is a comment\nmessage(hello)\n'); + expect(ast.invocations).to.have.lengthOf(1); + expect(ast.invocations[0].command.value).to.equal('message'); + }); + + test('Line comment between commands', () => { + const ast = parse('set(A 1)\n# comment\nset(B 2)\n'); + expect(ast.invocations).to.have.lengthOf(2); + }); + + test('Comments between arguments', () => { + const values = argValues('set(A # comment\n B C)\n'); + expect(values).to.deep.equal(['A', 'B', 'C']); + }); + + test('Bracket comment on its own line between arguments', () => { + // Bracket comments must be on their own line since LINE_COMMENT + // is tried before BRACKETED_COMMENT in the parser + const values = argValues('set(A\n#[[bracket comment]]\nB)\n'); + expect(values).to.deep.equal(['A', 'B']); + }); + + test('Bracket comment with equal signs on its own line', () => { + const values = argValues('set(A\n#[==[bracket comment]==]\nB)\n'); + expect(values).to.deep.equal(['A', 'B']); + }); + }); + + suite('Nested parentheses', () => { + test('Nested parentheses are consumed but not included as args', () => { + // In CMake, nested parens are allowed in unquoted args in some contexts, + // but the parser tracks depth. Generator expressions use them. + // The parser increments depth on LPAREN and decrements on RPAREN, + // so content inside nested parens is not added as args. + const inv = parseOne('if(A AND (B OR C))'); + // The parser sees: A AND ( B OR C ) + // ( increments depth, B OR C are at depth>1 but still collected as args, + // ) decrements depth + // Actually, re-reading the parser: args are pushed for UNQUOTED/QUOTED/BRACKETED + // regardless of depth. LPAREN/RPAREN just adjust depth. + expect(inv.args.map((a: Token) => a.value)).to.deep.equal(['A', 'AND', 'B', 'OR', 'C']); + }); + + test('Deeply nested parentheses', () => { + const inv = parseOne('func(a (b (c)))'); + expect(inv.args.map((a: Token) => a.value)).to.deep.equal(['a', 'b', 'c']); + }); + }); + + suite('Token offsets', () => { + test('Command token has correct offset', () => { + const inv = parseOne('message(hello)'); + expect(inv.command.offset).to.equal(0); + expect(inv.command.raw).to.equal('message'); + expect(inv.command.endOffset).to.equal(7); + }); + + test('Argument tokens have correct offsets', () => { + const inv = parseOne('set(A B)'); + expect(inv.args[0].offset).to.equal(4); + expect(inv.args[0].raw).to.equal('A'); + expect(inv.args[0].endOffset).to.equal(5); + expect(inv.args[1].offset).to.equal(6); + expect(inv.args[1].raw).to.equal('B'); + expect(inv.args[1].endOffset).to.equal(7); + }); + + test('Quoted argument raw includes quotes', () => { + const inv = parseOne('message("hello")'); + expect(inv.args[0].raw).to.equal('"hello"'); + expect(inv.args[0].value).to.equal('hello'); + expect(inv.args[0].offset).to.equal(8); + expect(inv.args[0].endOffset).to.equal(15); + }); + + test('Lparen and rparen tokens have correct offsets', () => { + const inv = parseOne('msg(A)'); + expect(inv.lparen.offset).to.equal(3); + expect(inv.lparen.endOffset).to.equal(4); + expect(inv.rparen.offset).to.equal(5); + expect(inv.rparen.endOffset).to.equal(6); + }); + }); + + suite('Error handling', () => { + test('Throws on unterminated command', () => { + expect(() => parse('message(')).to.throw(); + }); + + test('Throws on missing lparen', () => { + expect(() => parse('message')).to.throw(); + }); + + test('Throws on unmatched rparen', () => { + expect(() => parse(')')).to.throw(); + }); + }); + + suite('Multiline commands', () => { + test('Arguments on multiple lines', () => { + const text = 'set(MY_VAR\n a\n b\n c\n)'; + const values = argValues(text); + expect(values).to.deep.equal(['MY_VAR', 'a', 'b', 'c']); + }); + + test('Arguments with mixed quoting on multiple lines', () => { + const text = 'target_sources(mylib\n PRIVATE\n "src/a.cpp"\n src/b.cpp\n)'; + const values = argValues(text); + expect(values).to.deep.equal(['mylib', 'PRIVATE', 'src/a.cpp', 'src/b.cpp']); + }); + }); + + suite('Case sensitivity', () => { + test('Command identifiers are case-preserved', () => { + const inv = parseOne('MESSAGE(hello)'); + expect(inv.command.value).to.equal('MESSAGE'); + }); + + test('Mixed case command', () => { + const inv = parseOne('Add_Executable(myapp main.cpp)'); + expect(inv.command.value).to.equal('Add_Executable'); + }); + }); + + suite('regexpPrepend', () => { + // Imported indirectly via the parser module + test('Prepend works with simple regex', () => { + const { regexpPrepend } = require('@cmt/cmakeParser'); + const re = regexpPrepend('^', /hello/); + expect(re.test('hello world')).to.be.true; + expect(re.test('say hello')).to.be.false; + }); + + test('Prepend preserves flags', () => { + const { regexpPrepend } = require('@cmt/cmakeParser'); + const re = regexpPrepend('^', /hello/i); + expect(re.flags).to.include('i'); + expect(re.test('HELLO')).to.be.true; + }); + }); +}); diff --git a/test/unit-tests/backend/cmakeify.test.ts b/test/unit-tests/backend/cmakeify.test.ts new file mode 100644 index 0000000000..73357e57dd --- /dev/null +++ b/test/unit-tests/backend/cmakeify.test.ts @@ -0,0 +1,96 @@ +import { expect } from 'chai'; +import { cmakeify, CMakeValue } from '@cmt/cmakeValue'; + +/** + * Tests for the cmakeify function that converts values to CMake cache variable format. + * + * This tests the REAL implementation from @cmt/cmakeValue (not a mirrored copy). + * The cmakeValue module is pure TypeScript with no vscode dependencies, making it + * safe to import in backend tests. + * + * Key behavior tested: + * - String values have semicolons ESCAPED (`;` → `\;`) to prevent CMake list interpretation + * - Array values are joined with semicolons WITHOUT escaping to form CMake lists + */ + +suite('[cmakeify]', () => { + + test('Boolean true converts to BOOL TRUE', () => { + const result = cmakeify(true); + expect(result.type).to.equal('BOOL'); + expect(result.value).to.equal('TRUE'); + }); + + test('Boolean false converts to BOOL FALSE', () => { + const result = cmakeify(false); + expect(result.type).to.equal('BOOL'); + expect(result.value).to.equal('FALSE'); + }); + + test('Simple string converts to STRING', () => { + const result = cmakeify('hello'); + expect(result.type).to.equal('STRING'); + expect(result.value).to.equal('hello'); + }); + + test('String with semicolon is escaped', () => { + const result = cmakeify('clang;lld'); + expect(result.type).to.equal('STRING'); + expect(result.value).to.equal('clang\\;lld'); + }); + + test('Number converts to STRING', () => { + const result = cmakeify(42); + expect(result.type).to.equal('STRING'); + expect(result.value).to.equal('42'); + }); + + test('String array joins with semicolons without escaping', () => { + const result = cmakeify(['clang', 'lld']); + expect(result.type).to.equal('STRING'); + expect(result.value).to.equal('clang;lld'); + }); + + test('String array with multiple elements creates CMake list', () => { + const result = cmakeify(['clang', 'lld', 'compiler-rt', 'libcxx']); + expect(result.type).to.equal('STRING'); + expect(result.value).to.equal('clang;lld;compiler-rt;libcxx'); + }); + + test('Empty array produces empty string', () => { + const result = cmakeify([]); + expect(result.type).to.equal('STRING'); + expect(result.value).to.equal(''); + }); + + test('Single element array produces single value', () => { + const result = cmakeify(['clang']); + expect(result.type).to.equal('STRING'); + expect(result.value).to.equal('clang'); + }); + + test('CMakeValue passthrough preserves type and value', () => { + const input: CMakeValue = { type: 'FILEPATH', value: '/path/to/file' }; + const result = cmakeify(input); + expect(result.type).to.equal('FILEPATH'); + expect(result.value).to.equal('/path/to/file'); + }); + + test('LLVM_ENABLE_PROJECTS use case - array notation avoids escaping', () => { + // This is the main use case from issue #4503 + const result = cmakeify(['clang', 'lld']); + expect(result.type).to.equal('STRING'); + // Array notation should NOT escape semicolons - they are joined directly + expect(result.value).to.equal('clang;lld'); + // This would produce: -DLLVM_ENABLE_PROJECTS:STRING=clang;lld + }); + + test('LLVM_ENABLE_PROJECTS use case - string notation escapes semicolons', () => { + // When using string notation, semicolons are escaped + const result = cmakeify('clang;lld'); + expect(result.type).to.equal('STRING'); + // String notation DOES escape semicolons + expect(result.value).to.equal('clang\\;lld'); + // This would produce: -DLLVM_ENABLE_PROJECTS:STRING=clang\;lld + }); +}); diff --git a/test/unit-tests/backend/compile-command.test.ts b/test/unit-tests/backend/compile-command.test.ts new file mode 100644 index 0000000000..aa23c57a2d --- /dev/null +++ b/test/unit-tests/backend/compile-command.test.ts @@ -0,0 +1,206 @@ +import { expect } from 'chai'; +import * as shlex from '@cmt/shlex'; + +/** + * Tests for the compile command argument handling used by CMakeDriver.runCompileCommand(). + * + * The fix (https://github.com/microsoft/vscode-cmake-tools/issues/4836) replaces + * terminal.sendText() — which is subject to the PTY 4096-byte input buffer + * truncation — with proc.execute(), which passes args as an array directly to + * child_process.spawn() and has no such limit. + * + * These tests validate the data flow: + * 1. CompilationDatabase splits a command string into an arguments array via shlex + * 2. runCompileCommand() extracts args[0] as the executable and args.slice(1) as + * the spawn arguments + * 3. The full argument list is preserved regardless of total command length + */ + +// Mirror of proc.buildCmdStr (cannot import proc.ts directly +// because it transitively depends on 'vscode'). +function buildCmdStr(command: string, args?: string[]): string { + let cmdarr = [command]; + if (args) { + cmdarr = cmdarr.concat(args); + } + return cmdarr.map(a => /[ \n\r\f;\t]/.test(a) ? `"${a}"` : a).join(' '); +} + +/** + * Mirrors the argument-population logic from CompilationDatabase's constructor: + * arguments: cur.arguments ? cur.arguments : [...shlex.split(cur.command)] + */ +function populateArguments(entry: { command: string; arguments?: string[] }): string[] { + return entry.arguments ? entry.arguments : [...shlex.split(entry.command)]; +} + +/** + * Mirrors the executable/args extraction from runCompileCommand(): + * const executable = args[0]; + * const execArgs = args.slice(1); + */ +function extractExecAndArgs(args: string[]): { executable: string; execArgs: string[] } { + return { executable: args[0], execArgs: args.slice(1) }; +} + +suite('Compile command argument handling (issue #4836)', () => { + + suite('CompilationDatabase argument population', () => { + test('Pre-split arguments are preserved as-is', () => { + const entry = { + command: '/usr/bin/g++ -o main.o -c main.cpp', + arguments: ['/usr/bin/g++', '-o', 'main.o', '-c', 'main.cpp'] + }; + const args = populateArguments(entry); + expect(args).to.deep.equal(['/usr/bin/g++', '-o', 'main.o', '-c', 'main.cpp']); + }); + + test('Command string is split via shlex when arguments not provided', () => { + const entry = { + command: '/usr/bin/g++ -DBOOST_THREAD_VERSION=3 -isystem ../extern -g -std=gnu++11 -o out.o -c main.cpp' + }; + const args = populateArguments(entry); + expect(args[0]).to.equal('/usr/bin/g++'); + expect(args).to.include('-DBOOST_THREAD_VERSION=3'); + expect(args).to.include('-std=gnu++11'); + expect(args[args.length - 1]).to.equal('main.cpp'); + }); + + test('Command with quoted paths is correctly split', () => { + const entry = { + command: '"C:\\Program Files\\MSVC\\cl.exe" /nologo /TP "-IC:\\My Project\\include" /Fo"build\\main.obj" /c "C:\\My Project\\main.cpp"' + }; + const args = populateArguments(entry); + expect(args[0]).to.equal('"C:\\Program Files\\MSVC\\cl.exe"'); + expect(args.length).to.be.greaterThan(1); + }); + }); + + suite('Executable and arguments extraction', () => { + test('First element is the executable, rest are arguments', () => { + const args = ['/usr/bin/g++', '-o', 'main.o', '-c', 'main.cpp']; + const { executable, execArgs } = extractExecAndArgs(args); + expect(executable).to.equal('/usr/bin/g++'); + expect(execArgs).to.deep.equal(['-o', 'main.o', '-c', 'main.cpp']); + }); + + test('Single-element array yields executable with no arguments', () => { + const args = ['/usr/bin/g++']; + const { executable, execArgs } = extractExecAndArgs(args); + expect(executable).to.equal('/usr/bin/g++'); + expect(execArgs).to.deep.equal([]); + }); + + test('MSVC-style executable with many flags', () => { + const args = ['cl.exe', '/nologo', '/TP', '/DWIN32', '/D_WINDOWS', '/W3', '/GR', '/EHsc', + '/MDd', '/Zi', '/Ob0', '/Od', '/RTC1', '/Fo"build\\main.obj"', '/c', 'main.cpp']; + const { executable, execArgs } = extractExecAndArgs(args); + expect(executable).to.equal('cl.exe'); + expect(execArgs.length).to.equal(15); + expect(execArgs[execArgs.length - 1]).to.equal('main.cpp'); + }); + }); + + suite('Long command lines exceeding 4096 bytes', () => { + /** + * Generate a realistic compile command that exceeds 4096 bytes. + * This simulates the real-world scenario from issue #4836 where + * many -I include paths and -D defines push the command past the + * PTY input buffer limit. + */ + function generateLongCommand(minLength: number): { command: string; expectedArgCount: number } { + const compiler = '/usr/bin/g++'; + const baseFlags = ['-std=gnu++17', '-g', '-O2', '-Wall', '-Wextra', '-fPIC']; + // Generate enough -I and -D flags to exceed the target length + const extraFlags: string[] = []; + for (let i = 0; extraFlags.join(' ').length < minLength; i++) { + extraFlags.push(`-I/very/long/path/to/include/directory/number_${i}/nested/deeply`); + extraFlags.push(`-DSOME_VERY_LONG_DEFINE_NAME_${i}=some_long_value_${i}`); + } + const tail = ['-o', 'CMakeFiles/myTarget.dir/src/main.cpp.o', '-c', '/home/user/project/src/main.cpp']; + const allArgs = [compiler, ...baseFlags, ...extraFlags, ...tail]; + return { + command: allArgs.join(' '), + expectedArgCount: allArgs.length + }; + } + + test('Command exceeding 4096 chars is fully preserved when split via shlex', () => { + const { command, expectedArgCount } = generateLongCommand(5000); + // Verify the command actually exceeds 4096 bytes + expect(command.length).to.be.greaterThan(4096); + + const args = populateArguments({ command }); + expect(args.length).to.equal(expectedArgCount); + expect(args[0]).to.equal('/usr/bin/g++'); + expect(args[args.length - 1]).to.equal('/home/user/project/src/main.cpp'); + }); + + test('Command exceeding 8192 chars is fully preserved', () => { + const { command, expectedArgCount } = generateLongCommand(10000); + expect(command.length).to.be.greaterThan(8192); + + const args = populateArguments({ command }); + expect(args.length).to.equal(expectedArgCount); + }); + + test('Long command roundtrips through extraction and buildCmdStr', () => { + const { command } = generateLongCommand(5000); + + const args = populateArguments({ command }); + const { executable, execArgs } = extractExecAndArgs(args); + const displayed = buildCmdStr(executable, execArgs); + + // The displayed string should contain the executable + expect(displayed).to.include('/usr/bin/g++'); + // ... the last source file + expect(displayed).to.include('/home/user/project/src/main.cpp'); + // ... and all include paths (spot-check a few) + expect(displayed).to.include('-I/very/long/path/to/include/directory/number_0/nested/deeply'); + expect(displayed).to.include('-I/very/long/path/to/include/directory/number_10/nested/deeply'); + // The displayed string should also exceed 4096 chars + expect(displayed.length).to.be.greaterThan(4096); + }); + + test('Pre-split arguments array for a long command bypasses shlex entirely', () => { + // When compile_commands.json provides "arguments" directly (CMake >= 3.something), + // shlex is never invoked. Verify the array passes through untouched. + const compiler = '/usr/bin/clang++'; + const flags: string[] = []; + for (let i = 0; i < 200; i++) { + flags.push(`-I/workspace/third_party/library_${i}/include`); + } + flags.push('-c', '/workspace/src/main.cpp'); + const allArgs = [compiler, ...flags]; + const totalLength = allArgs.join(' ').length; + expect(totalLength).to.be.greaterThan(4096); + + const args = populateArguments({ command: 'ignored', arguments: allArgs }); + expect(args).to.deep.equal(allArgs); + expect(args.length).to.equal(allArgs.length); + + const { executable, execArgs } = extractExecAndArgs(args); + expect(executable).to.equal(compiler); + expect(execArgs.length).to.equal(allArgs.length - 1); + }); + }); + + suite('buildCmdStr display formatting', () => { + test('Simple command without spaces', () => { + expect(buildCmdStr('gcc', ['-c', 'main.cpp'])).to.equal('gcc -c main.cpp'); + }); + + test('Arguments with spaces are quoted', () => { + expect(buildCmdStr('gcc', ['-I/path with spaces/include', '-c', 'main.cpp'])) + .to.equal('gcc "-I/path with spaces/include" -c main.cpp'); + }); + + test('Empty args array shows only command', () => { + expect(buildCmdStr('gcc', [])).to.equal('gcc'); + }); + + test('Undefined args shows only command', () => { + expect(buildCmdStr('gcc')).to.equal('gcc'); + }); + }); +}); diff --git a/test/unit-tests/backend/contextKeyExpr.test.ts b/test/unit-tests/backend/contextKeyExpr.test.ts new file mode 100644 index 0000000000..5b27898f5e --- /dev/null +++ b/test/unit-tests/backend/contextKeyExpr.test.ts @@ -0,0 +1,496 @@ +import { expect } from 'chai'; +import { + Parser, + ContextKeyExpr, + ContextKeyFalseExpr, + ContextKeyTrueExpr, + validateWhenClauses, + expressionsAreEqualWithConstantSubstitution, + setConstant, + isFalsyOrWhitespace, + implies, + IContext +} from '@cmt/contextKeyExpr'; + +/** + * Tests for the context key expression parser and evaluator from src/contextKeyExpr.ts. + * + * This module (2900+ lines) is recycled from VS Code and has zero tests in this + * repository. It is a pure-logic module with only a vscode-nls dependency (no vscode + * dependency), making it safe to import directly in backend tests. + * + * These tests cover: + * - Parser: parsing when-clause strings into expression ASTs + * - Expression evaluation against context maps + * - Serialization roundtrips + * - Error handling for malformed expressions + * - Utility functions: validateWhenClauses, isFalsyOrWhitespace, implies + */ + +/** Helper to create a simple IContext from a key-value map */ +function createContext(values: Record): IContext { + return { + getValue(key: string): T | undefined { + return values[key] as T | undefined; + } + }; +} + +suite('[contextKeyExpr Parser]', () => { + let parser: InstanceType; + + setup(() => { + parser = new Parser(); + }); + + test('Parse simple key (defined check)', () => { + const expr = parser.parse('myKey'); + expect(expr).to.not.be.undefined; + expect(expr!.serialize()).to.equal('myKey'); + }); + + test('Parse equality expression', () => { + const expr = parser.parse('resourceScheme == file'); + expect(expr).to.not.be.undefined; + expect(expr!.serialize()).to.equal("resourceScheme == 'file'"); + }); + + test('Parse inequality expression', () => { + const expr = parser.parse('editorLangId != markdown'); + expect(expr).to.not.be.undefined; + expect(expr!.serialize()).to.equal("editorLangId != 'markdown'"); + }); + + test('Parse negation', () => { + const expr = parser.parse('!inDebugMode'); + expect(expr).to.not.be.undefined; + expect(expr!.serialize()).to.equal('!inDebugMode'); + }); + + test('Parse AND expression', () => { + const expr = parser.parse('editorFocus && textInputFocus'); + expect(expr).to.not.be.undefined; + expect(expr!.serialize()).to.equal('editorFocus && textInputFocus'); + }); + + test('Parse OR expression', () => { + const expr = parser.parse('isLinux || isMac'); + expect(expr).to.not.be.undefined; + expect(expr!.serialize()).to.equal('isLinux || isMac'); + }); + + test('Parse combined AND/OR with correct precedence (AND binds tighter)', () => { + const expr = parser.parse('a && b || c && d'); + expect(expr).to.not.be.undefined; + // AND binds tighter than OR => (a && b) || (c && d) + expect(expr!.serialize()).to.equal('a && b || c && d'); + }); + + test('Parse parenthesized expression', () => { + const expr = parser.parse('(a || b) && c'); + expect(expr).to.not.be.undefined; + // Parenthesized OR with AND + const serialized = expr!.serialize(); + expect(serialized).to.contain('&&'); + expect(serialized).to.contain('||'); + }); + + test('Parse true literal', () => { + const expr = parser.parse('true'); + expect(expr).to.not.be.undefined; + expect(expr!.serialize()).to.equal('true'); + }); + + test('Parse false literal', () => { + const expr = parser.parse('false'); + expect(expr).to.not.be.undefined; + expect(expr!.serialize()).to.equal('false'); + }); + + test('Parse !true yields false', () => { + const expr = parser.parse('!true'); + expect(expr).to.not.be.undefined; + expect(expr!.serialize()).to.equal('false'); + }); + + test('Parse !false yields true', () => { + const expr = parser.parse('!false'); + expect(expr).to.not.be.undefined; + expect(expr!.serialize()).to.equal('true'); + }); + + test('Parse regex expression', () => { + const expr = parser.parse('resourceFileName =~ /docker/'); + expect(expr).to.not.be.undefined; + expect(expr!.serialize()).to.contain('=~'); + }); + + test('Parse greater than expression', () => { + const expr = parser.parse('listItemCount > 0'); + expect(expr).to.not.be.undefined; + // Serialized form uses > operator + expect(expr!.serialize()).to.contain('>'); + }); + + test('Parse less than expression', () => { + const expr = parser.parse('listItemCount < 10'); + expect(expr).to.not.be.undefined; + expect(expr!.serialize()).to.contain('<'); + }); + + test('Parse greater-or-equal expression', () => { + const expr = parser.parse('count >= 5'); + expect(expr).to.not.be.undefined; + expect(expr!.serialize()).to.contain('>='); + }); + + test('Parse less-or-equal expression', () => { + const expr = parser.parse('count <= 5'); + expect(expr).to.not.be.undefined; + expect(expr!.serialize()).to.contain('<='); + }); + + test('Parse in expression', () => { + const expr = parser.parse('item in collection'); + expect(expr).to.not.be.undefined; + expect(expr!.serialize()).to.equal("item in 'collection'"); + }); + + test('Parse not-in expression', () => { + const expr = parser.parse('item not in collection'); + expect(expr).to.not.be.undefined; + expect(expr!.serialize()).to.contain('not in'); + }); + + test('Parse quoted string value', () => { + const expr = parser.parse("resourceScheme == 'untitled'"); + expect(expr).to.not.be.undefined; + expect(expr!.serialize()).to.equal("resourceScheme == 'untitled'"); + }); + + test('Empty string produces parsing error', () => { + const expr = parser.parse(''); + expect(expr).to.be.undefined; + expect(parser.parsingErrors.length).to.be.greaterThan(0); + }); + + test('No lexing or parsing errors for valid expression', () => { + parser.parse('foo == bar && baz'); + expect(parser.lexingErrors.length).to.equal(0); + expect(parser.parsingErrors.length).to.equal(0); + }); +}); + +suite('[contextKeyExpr Evaluation]', () => { + + test('Defined key evaluates to true when key is present', () => { + const expr = ContextKeyExpr.has('myKey'); + const ctx = createContext({ myKey: true }); + expect(expr.evaluate(ctx)).to.be.true; + }); + + test('Defined key evaluates to false when key is absent', () => { + const expr = ContextKeyExpr.has('myKey'); + const ctx = createContext({}); + expect(expr.evaluate(ctx)).to.be.false; + }); + + test('Equality evaluates correctly', () => { + const expr = ContextKeyExpr.equals('lang', 'cpp'); + expect(expr.evaluate(createContext({ lang: 'cpp' }))).to.be.true; + expect(expr.evaluate(createContext({ lang: 'python' }))).to.be.false; + }); + + test('Not-equals evaluates correctly', () => { + const expr = ContextKeyExpr.notEquals('lang', 'cpp'); + expect(expr.evaluate(createContext({ lang: 'python' }))).to.be.true; + expect(expr.evaluate(createContext({ lang: 'cpp' }))).to.be.false; + }); + + test('AND expression: both must be true', () => { + const expr = ContextKeyExpr.and( + ContextKeyExpr.has('a'), + ContextKeyExpr.has('b') + ); + expect(expr).to.not.be.undefined; + expect(expr!.evaluate(createContext({ a: true, b: true }))).to.be.true; + expect(expr!.evaluate(createContext({ a: true }))).to.be.false; + }); + + test('OR expression: at least one must be true', () => { + const expr = ContextKeyExpr.or( + ContextKeyExpr.has('a'), + ContextKeyExpr.has('b') + ); + expect(expr).to.not.be.undefined; + expect(expr!.evaluate(createContext({ a: true }))).to.be.true; + expect(expr!.evaluate(createContext({ b: true }))).to.be.true; + expect(expr!.evaluate(createContext({}))).to.be.false; + }); + + test('NOT expression inverts defined check', () => { + const expr = ContextKeyExpr.not('myKey'); + expect(expr.evaluate(createContext({}))).to.be.true; + expect(expr.evaluate(createContext({ myKey: true }))).to.be.false; + }); + + test('Greater-than comparison', () => { + const expr = ContextKeyExpr.greater('count', 5); + expect(expr.evaluate(createContext({ count: 10 }))).to.be.true; + expect(expr.evaluate(createContext({ count: 5 }))).to.be.false; + expect(expr.evaluate(createContext({ count: 3 }))).to.be.false; + }); + + test('Greater-or-equal comparison', () => { + const expr = ContextKeyExpr.greaterEquals('count', 5); + expect(expr.evaluate(createContext({ count: 5 }))).to.be.true; + expect(expr.evaluate(createContext({ count: 4 }))).to.be.false; + }); + + test('Smaller-than comparison', () => { + const expr = ContextKeyExpr.smaller('count', 5); + expect(expr.evaluate(createContext({ count: 3 }))).to.be.true; + expect(expr.evaluate(createContext({ count: 5 }))).to.be.false; + }); + + test('Smaller-or-equal comparison', () => { + const expr = ContextKeyExpr.smallerEquals('count', 5); + expect(expr.evaluate(createContext({ count: 5 }))).to.be.true; + expect(expr.evaluate(createContext({ count: 6 }))).to.be.false; + }); + + test('Regex expression matches', () => { + const expr = ContextKeyExpr.regex('fileName', /docker/i); + expect(expr.evaluate(createContext({ fileName: 'Dockerfile' }))).to.be.true; + expect(expr.evaluate(createContext({ fileName: 'README.md' }))).to.be.false; + }); + + test('In expression checks set membership', () => { + const expr = ContextKeyExpr.in('item', 'myList'); + const ctx = createContext({ item: 'apple', myList: ['apple', 'banana'] }); + expect(expr.evaluate(ctx)).to.be.true; + + const ctx2 = createContext({ item: 'cherry', myList: ['apple', 'banana'] }); + expect(expr.evaluate(ctx2)).to.be.false; + }); + + test('True expression always evaluates to true', () => { + expect(ContextKeyExpr.true().evaluate(createContext({}))).to.be.true; + }); + + test('False expression always evaluates to false', () => { + expect(ContextKeyExpr.false().evaluate(createContext({}))).to.be.false; + }); + + test('Complex cmake-tools when-clause evaluates correctly', () => { + // Simulates: cmake:enableFullFeatureSet && !cmake:isBuilding + const parser = new Parser(); + const expr = parser.parse('cmake:enableFullFeatureSet && !cmake:isBuilding'); + expect(expr).to.not.be.undefined; + + const ctx1 = createContext({ + 'cmake:enableFullFeatureSet': true, + 'cmake:isBuilding': false + }); + expect(expr!.evaluate(ctx1)).to.be.true; + + const ctx2 = createContext({ + 'cmake:enableFullFeatureSet': true, + 'cmake:isBuilding': true + }); + expect(expr!.evaluate(ctx2)).to.be.false; + }); +}); + +suite('[contextKeyExpr Serialization]', () => { + + test('Roundtrip: parse then serialize simple expression', () => { + const parser = new Parser(); + const expr = parser.parse('myKey'); + expect(expr).to.not.be.undefined; + expect(expr!.serialize()).to.equal('myKey'); + }); + + test('Roundtrip: parse then serialize equality', () => { + const parser = new Parser(); + const expr = parser.parse("lang == 'cpp'"); + expect(expr).to.not.be.undefined; + expect(expr!.serialize()).to.equal("lang == 'cpp'"); + }); + + test('Roundtrip: parse then serialize AND', () => { + const parser = new Parser(); + const expr = parser.parse('a && b'); + expect(expr).to.not.be.undefined; + expect(expr!.serialize()).to.equal('a && b'); + }); + + test('Roundtrip: parse then serialize OR', () => { + const parser = new Parser(); + const expr = parser.parse('a || b'); + expect(expr).to.not.be.undefined; + expect(expr!.serialize()).to.equal('a || b'); + }); + + test('Negate produces inverse', () => { + const parser = new Parser(); + const expr = parser.parse('foo'); + expect(expr).to.not.be.undefined; + const neg = expr!.negate(); + expect(neg.serialize()).to.equal('!foo'); + }); + + test('Double negate returns to original', () => { + const parser = new Parser(); + const expr = parser.parse('foo'); + expect(expr).to.not.be.undefined; + const neg = expr!.negate().negate(); + expect(neg.serialize()).to.equal('foo'); + }); + + test('keys() returns referenced keys', () => { + const parser = new Parser(); + const expr = parser.parse('foo && bar == baz'); + expect(expr).to.not.be.undefined; + const keys = expr!.keys(); + expect(keys).to.include('foo'); + expect(keys).to.include('bar'); + }); + + test('Deserialize via ContextKeyExpr.deserialize', () => { + const expr = ContextKeyExpr.deserialize('a && b'); + expect(expr).to.not.be.undefined; + expect(expr!.serialize()).to.equal('a && b'); + }); + + test('Deserialize null returns undefined', () => { + expect(ContextKeyExpr.deserialize(null)).to.be.undefined; + }); + + test('Deserialize undefined returns undefined', () => { + expect(ContextKeyExpr.deserialize(undefined)).to.be.undefined; + }); +}); + +suite('[contextKeyExpr Utility Functions]', () => { + + test('isFalsyOrWhitespace: empty string', () => { + expect(isFalsyOrWhitespace('')).to.be.true; + }); + + test('isFalsyOrWhitespace: whitespace only', () => { + expect(isFalsyOrWhitespace(' ')).to.be.true; + }); + + test('isFalsyOrWhitespace: undefined', () => { + expect(isFalsyOrWhitespace(undefined)).to.be.true; + }); + + test('isFalsyOrWhitespace: non-empty string', () => { + expect(isFalsyOrWhitespace('hello')).to.be.false; + }); + + test('isFalsyOrWhitespace: string with spaces around content', () => { + expect(isFalsyOrWhitespace(' hello ')).to.be.false; + }); + + test('validateWhenClauses: valid clause returns empty errors', () => { + const result = validateWhenClauses(['foo == bar']); + expect(result[0]).to.have.lengthOf(0); + }); + + test('validateWhenClauses: empty string clause returns error', () => { + const result = validateWhenClauses(['']); + expect(result[0]).to.have.length.greaterThan(0); + }); + + test('validateWhenClauses: multiple clauses validated independently', () => { + const result = validateWhenClauses(['foo', '', 'bar == baz']); + expect(result[0]).to.have.lengthOf(0); // valid + expect(result[1]).to.have.length.greaterThan(0); // empty = error + expect(result[2]).to.have.lengthOf(0); // valid + }); + + test('expressionsAreEqualWithConstantSubstitution: same expressions', () => { + const a = ContextKeyExpr.has('foo'); + const b = ContextKeyExpr.has('foo'); + expect(expressionsAreEqualWithConstantSubstitution(a, b)).to.be.true; + }); + + test('expressionsAreEqualWithConstantSubstitution: different expressions', () => { + const a = ContextKeyExpr.has('foo'); + const b = ContextKeyExpr.has('bar'); + expect(expressionsAreEqualWithConstantSubstitution(a, b)).to.be.false; + }); + + test('expressionsAreEqualWithConstantSubstitution: both null/undefined', () => { + expect(expressionsAreEqualWithConstantSubstitution(null, undefined)).to.be.true; + }); + + test('expressionsAreEqualWithConstantSubstitution: one null', () => { + const a = ContextKeyExpr.has('foo'); + expect(expressionsAreEqualWithConstantSubstitution(a, null)).to.be.false; + }); + + test('implies: false implies anything', () => { + const p = ContextKeyExpr.false(); + const q = ContextKeyExpr.has('anything'); + expect(implies(p, q)).to.be.true; + }); + + test('implies: anything implies true', () => { + const p = ContextKeyExpr.has('something'); + const q = ContextKeyExpr.true(); + expect(implies(p, q)).to.be.true; + }); + + test('implies: unrelated expressions do not imply', () => { + const p = ContextKeyExpr.has('a'); + const q = ContextKeyExpr.has('b'); + expect(implies(p, q)).to.be.false; + }); + + test('setConstant and constant substitution', () => { + setConstant('testConst', true); + const parser = new Parser(); + const expr = parser.parse('testConst'); + expect(expr).to.not.be.undefined; + const substituted = expr!.substituteConstants(); + // After setting testConst to true, substitution should yield true + expect(substituted).to.not.be.undefined; + expect(substituted!.serialize()).to.equal('true'); + }); +}); + +suite('[contextKeyExpr Expression Equality]', () => { + + test('Same defined expressions are equal', () => { + const a = ContextKeyExpr.has('foo'); + const b = ContextKeyExpr.has('foo'); + expect(a.equals(b)).to.be.true; + }); + + test('Different defined expressions are not equal', () => { + const a = ContextKeyExpr.has('foo'); + const b = ContextKeyExpr.has('bar'); + expect(a.equals(b)).to.be.false; + }); + + test('Equals with same key/value are equal', () => { + const a = ContextKeyExpr.equals('key', 'value'); + const b = ContextKeyExpr.equals('key', 'value'); + expect(a.equals(b)).to.be.true; + }); + + test('Equals with different values are not equal', () => { + const a = ContextKeyExpr.equals('key', 'val1'); + const b = ContextKeyExpr.equals('key', 'val2'); + expect(a.equals(b)).to.be.false; + }); + + test('True and False singletons', () => { + expect(ContextKeyTrueExpr.INSTANCE.equals(ContextKeyTrueExpr.INSTANCE)).to.be.true; + expect(ContextKeyFalseExpr.INSTANCE.equals(ContextKeyFalseExpr.INSTANCE)).to.be.true; + expect(ContextKeyTrueExpr.INSTANCE.equals(ContextKeyFalseExpr.INSTANCE)).to.be.false; + }); +}); diff --git a/test/unit-tests/backend/expand.test.ts b/test/unit-tests/backend/expand.test.ts new file mode 100644 index 0000000000..a1907e1985 --- /dev/null +++ b/test/unit-tests/backend/expand.test.ts @@ -0,0 +1,276 @@ +import { expect } from 'chai'; + +/** + * Tests for the pure utility functions in src/expand.ts. + * + * The copilot-instructions.md explicitly states: "Variable expansion: + * src/expand.ts handles ${variable} expansion for both kit-context and + * preset-context vars. Changes here need unit tests." + * + * These functions are mirrored here because expand.ts transitively depends + * on 'vscode', which cannot be imported in backend tests. + */ + +// --- Mirror of expand.substituteAll --- +function substituteAll(input: string, subs: Map) { + let finalString = input; + let didReplacement = false; + subs.forEach((value, key) => { + if (value !== key) { + const pattern = key.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + const re = new RegExp(pattern, 'g'); + finalString = finalString.replace(re, value); + didReplacement = true; + } + }); + return { result: finalString, didReplacement }; +} + +// --- Mirror of expand.getParentEnvSubstitutions --- +// (simplified: no fixPaths, which is Windows-only path normalization) +function getParentEnvSubstitutions(input: string, subs: Map, penvOverride?: Record): Map { + const parentEnvRegex = /\$penv\{(.+?)\}/g; + let mat: RegExpExecArray | null; + while ((mat = parentEnvRegex.exec(input)) !== null) { + const full = mat[0]; + const varName = mat[1]; + const replacementValue = penvOverride ? penvOverride[varName] : process.env[varName]; + const replacement = (replacementValue === null || replacementValue === undefined) ? '' : replacementValue; + subs.set(full, replacement); + } + return subs; +} + +// --- Mirror of expand.errorHandlerHelper --- +interface ExpansionErrorHandler { + errorList: [string, string][]; + tempErrorList: [string, string][]; +} + +function errorHandlerHelper(presetName: string, errorHandler?: ExpansionErrorHandler) { + if (errorHandler) { + for (const error of errorHandler.tempErrorList || []) { + errorHandler.errorList.push([error[0], `'${error[1]}' in preset '${presetName}'`]); + } + errorHandler.tempErrorList = []; + } +} + +suite('[substituteAll]', () => { + + test('Simple variable substitution', () => { + const subs = new Map(); + subs.set('${workspaceFolder}', '/home/user/project'); + const result = substituteAll('build in ${workspaceFolder}/out', subs); + expect(result.result).to.equal('build in /home/user/project/out'); + expect(result.didReplacement).to.be.true; + }); + + test('Multiple substitutions in one string', () => { + const subs = new Map(); + subs.set('${sourceDir}', '/src'); + subs.set('${buildType}', 'Release'); + const result = substituteAll('${sourceDir}/build/${buildType}', subs); + expect(result.result).to.equal('/src/build/Release'); + expect(result.didReplacement).to.be.true; + }); + + test('No substitution when map is empty', () => { + const subs = new Map(); + const result = substituteAll('no vars here', subs); + expect(result.result).to.equal('no vars here'); + expect(result.didReplacement).to.be.false; + }); + + test('No substitution when value equals key (self-reference guard)', () => { + const subs = new Map(); + subs.set('${x}', '${x}'); + const result = substituteAll('value is ${x}', subs); + expect(result.result).to.equal('value is ${x}'); + expect(result.didReplacement).to.be.false; + }); + + test('Substitution with empty replacement', () => { + const subs = new Map(); + subs.set('${optional}', ''); + const result = substituteAll('prefix${optional}suffix', subs); + expect(result.result).to.equal('prefixsuffix'); + expect(result.didReplacement).to.be.true; + }); + + test('Repeated variable in same string', () => { + const subs = new Map(); + subs.set('${name}', 'cmake'); + const result = substituteAll('${name} uses ${name}', subs); + expect(result.result).to.equal('cmake uses cmake'); + expect(result.didReplacement).to.be.true; + }); + + test('Special regex characters in key are escaped properly', () => { + const subs = new Map(); + subs.set('${env:PATH}', '/usr/bin'); + const result = substituteAll('path is ${env:PATH}', subs); + expect(result.result).to.equal('path is /usr/bin'); + expect(result.didReplacement).to.be.true; + }); + + test('didReplacement is true when subs map has non-identity entries even without text match', () => { + const subs = new Map(); + subs.set('${a}', 'A'); + const result = substituteAll('no match for ${b}', subs); + expect(result.result).to.equal('no match for ${b}'); + // didReplacement tracks whether any non-identity substitution was attempted, + // not whether the input text actually changed. This matches the source implementation. + expect(result.didReplacement).to.be.true; + }); + + test('Empty input string', () => { + const subs = new Map(); + subs.set('${x}', 'y'); + const result = substituteAll('', subs); + expect(result.result).to.equal(''); + expect(result.didReplacement).to.be.true; + }); + + test('Dollar sign in replacement value', () => { + const subs = new Map(); + subs.set('${price}', '$100'); + const result = substituteAll('cost: ${price}', subs); + expect(result.result).to.equal('cost: $100'); + expect(result.didReplacement).to.be.true; + }); +}); + +suite('[getParentEnvSubstitutions]', () => { + + test('Extracts $penv{VAR} from input with override', () => { + const subs = new Map(); + const penvOverride: Record = { HOME: '/home/testuser' }; + getParentEnvSubstitutions('$penv{HOME}/project', subs, penvOverride); + expect(subs.get('$penv{HOME}')).to.equal('/home/testuser'); + }); + + test('Multiple $penv references', () => { + const subs = new Map(); + const penvOverride: Record = { + HOME: '/home/user', + PATH: '/usr/bin:/usr/local/bin' + }; + getParentEnvSubstitutions('$penv{HOME}/bin:$penv{PATH}', subs, penvOverride); + expect(subs.get('$penv{HOME}')).to.equal('/home/user'); + expect(subs.get('$penv{PATH}')).to.equal('/usr/bin:/usr/local/bin'); + }); + + test('Missing env var in override produces empty string', () => { + const subs = new Map(); + const penvOverride: Record = {}; + getParentEnvSubstitutions('$penv{NONEXISTENT}', subs, penvOverride); + expect(subs.get('$penv{NONEXISTENT}')).to.equal(''); + }); + + test('Null env var value produces empty string', () => { + const subs = new Map(); + const penvOverride: Record = { NULLVAR: null }; + getParentEnvSubstitutions('$penv{NULLVAR}', subs, penvOverride); + expect(subs.get('$penv{NULLVAR}')).to.equal(''); + }); + + test('No $penv references leaves subs unchanged', () => { + const subs = new Map(); + subs.set('existing', 'value'); + const penvOverride: Record = { HOME: '/home/user' }; + getParentEnvSubstitutions('no penv here', subs, penvOverride); + expect(subs.size).to.equal(1); + expect(subs.get('existing')).to.equal('value'); + }); + + test('Falls back to process.env when no override', () => { + const subs = new Map(); + // PATH should always be defined on any OS + getParentEnvSubstitutions('$penv{PATH}', subs, undefined); + const pathValue = subs.get('$penv{PATH}'); + // Should match process.env.PATH (or empty if somehow undefined) + expect(pathValue).to.equal(process.env.PATH || ''); + }); + + test('Preserves existing entries in subs map', () => { + const subs = new Map(); + subs.set('${workspaceFolder}', '/project'); + const penvOverride: Record = { HOME: '/home/user' }; + getParentEnvSubstitutions('$penv{HOME}', subs, penvOverride); + expect(subs.get('${workspaceFolder}')).to.equal('/project'); + expect(subs.get('$penv{HOME}')).to.equal('/home/user'); + expect(subs.size).to.equal(2); + }); +}); + +suite('[errorHandlerHelper]', () => { + + test('Transfers temp errors to error list with preset context', () => { + const handler: ExpansionErrorHandler = { + errorList: [], + tempErrorList: [['Invalid variable reference', '${badVar} in config']] + }; + errorHandlerHelper('myPreset', handler); + expect(handler.errorList).to.have.lengthOf(1); + expect(handler.errorList[0][0]).to.equal('Invalid variable reference'); + expect(handler.errorList[0][1]).to.equal("'${badVar} in config' in preset 'myPreset'"); + expect(handler.tempErrorList).to.have.lengthOf(0); + }); + + test('Multiple temp errors are all transferred', () => { + const handler: ExpansionErrorHandler = { + errorList: [], + tempErrorList: [ + ['Error 1', 'value1'], + ['Error 2', 'value2'], + ['Error 3', 'value3'] + ] + }; + errorHandlerHelper('preset-A', handler); + expect(handler.errorList).to.have.lengthOf(3); + expect(handler.errorList[0][1]).to.contain("in preset 'preset-A'"); + expect(handler.errorList[2][1]).to.contain("in preset 'preset-A'"); + expect(handler.tempErrorList).to.have.lengthOf(0); + }); + + test('Empty temp error list does nothing', () => { + const handler: ExpansionErrorHandler = { + errorList: [['existing', 'error']], + tempErrorList: [] + }; + errorHandlerHelper('preset-B', handler); + expect(handler.errorList).to.have.lengthOf(1); + expect(handler.errorList[0]).to.deep.equal(['existing', 'error']); + }); + + test('Undefined handler does nothing (no crash)', () => { + // Should not throw when errorHandler is undefined + expect(() => errorHandlerHelper('preset-C', undefined)).to.not.throw(); + }); + + test('Preserves existing errors in errorList', () => { + const handler: ExpansionErrorHandler = { + errorList: [['previous', 'error']], + tempErrorList: [['new', 'temp error']] + }; + errorHandlerHelper('preset-D', handler); + expect(handler.errorList).to.have.lengthOf(2); + expect(handler.errorList[0]).to.deep.equal(['previous', 'error']); + expect(handler.errorList[1][0]).to.equal('new'); + expect(handler.errorList[1][1]).to.contain("in preset 'preset-D'"); + }); + + test('Clears tempErrorList after transfer', () => { + const handler: ExpansionErrorHandler = { + errorList: [], + tempErrorList: [['err', 'val']] + }; + errorHandlerHelper('p1', handler); + expect(handler.tempErrorList).to.have.lengthOf(0); + + // Calling again should not re-transfer + errorHandlerHelper('p2', handler); + expect(handler.errorList).to.have.lengthOf(1); + }); +}); diff --git a/test/unit-tests/backend/setup-vscode-mock.ts b/test/unit-tests/backend/setup-vscode-mock.ts new file mode 100644 index 0000000000..51f9946b8a --- /dev/null +++ b/test/unit-tests/backend/setup-vscode-mock.ts @@ -0,0 +1,79 @@ +/** + * Mocha setup hook that registers a mock 'vscode' module for backend tests + * that need to import modules depending on vscode. + * + * Usage: mocha --require test/unit-tests/backend/setup-vscode-mock.ts + */ +import * as Module from 'module'; +import { Position, Range, Uri } from './vscode-mock'; + +const originalResolveFilename = (Module as any)._resolveFilename; + +(Module as any)._resolveFilename = function (request: string, parent: any, isMain: boolean, options: any) { + if (request === 'vscode') { + return 'vscode'; + } + return originalResolveFilename.call(this, request, parent, isMain, options); +}; + +const noop = () => {}; +const noopObj: any = new Proxy({}, { get: () => noop }); + +const originalLoad = (Module as any)._load; +(Module as any)._load = function (request: string, parent: any, isMain: boolean) { + if (request === 'vscode') { + return { + Position, + Range, + Uri, + workspace: { + getConfiguration: () => new Proxy({}, { + get: (_target: any, prop: string) => { + if (prop === 'get') { + return () => undefined; + } + return undefined; + } + }), + onDidChangeConfiguration: noop, + onDidCreateFiles: noop, + onDidDeleteFiles: noop, + registerTextDocumentContentProvider: () => ({ dispose: noop }) + }, + window: { + createOutputChannel: () => noopObj, + showErrorMessage: noop, + showWarningMessage: noop, + showInformationMessage: noop, + showQuickPick: noop, + createTreeView: () => noopObj + }, + languages: { + match: () => 0 + }, + commands: { + registerCommand: () => ({ dispose: noop }), + executeCommand: noop + }, + EventEmitter: class { + event = () => {}; + fire() {} + dispose() {} + }, + Disposable: class { + static from(..._d: any[]) { + return { dispose: noop }; + } + dispose() {} + }, + TreeItem: class {}, + TreeItemCollapsibleState: { None: 0, Collapsed: 1, Expanded: 2 }, + ThemeIcon: class { + constructor(public id: string) {} + }, + extensions: { getExtension: () => undefined } + }; + } + return originalLoad.call(this, request, parent, isMain); +}; + diff --git a/test/unit-tests/backend/shell-propagation.test.ts b/test/unit-tests/backend/shell-propagation.test.ts index 182e6f340d..fe85e88fce 100644 --- a/test/unit-tests/backend/shell-propagation.test.ts +++ b/test/unit-tests/backend/shell-propagation.test.ts @@ -149,3 +149,25 @@ suite('determineShell command-type detection', () => { expect(resolved).to.eq(undefined); }); }); + +suite('Debugger path shell detection', () => { + test('Debugger .exe path returns false (no shell needed)', () => { + expect(determineShell('d:/Pro gramFiles/mingw64/bin/gdb.exe')).to.eq(false); + }); + + test('Bare debugger name returns false (no shell needed)', () => { + expect(determineShell('gdb')).to.eq(false); + }); + + test('Debugger path with spaces should not use shell', () => { + // When shell is undefined, proc.execute calls determineShell on Windows. + // For .exe paths, determineShell returns false, so spawn runs directly + // without a shell intermediary — avoiding PowerShell quoting issues. + const debuggerPath = 'C:\\Program Files\\mingw64\\bin\\gdb.exe'; + expect(determineShell(debuggerPath)).to.eq(false); + }); + + test('lldb-mi debugger path returns false', () => { + expect(determineShell('/usr/bin/lldb-mi')).to.eq(false); + }); +}); diff --git a/test/unit-tests/backend/testEnvironment.test.ts b/test/unit-tests/backend/testEnvironment.test.ts new file mode 100644 index 0000000000..1fb46bc4a8 --- /dev/null +++ b/test/unit-tests/backend/testEnvironment.test.ts @@ -0,0 +1,142 @@ +import { expect } from 'chai'; + +/** + * Mirror of the pure parsing logic from CTestDriver.testEnvironment(). + * Parses CTest ENVIRONMENT property values (string or string[]) into a { KEY: VALUE } map. + * CTest JSON v1 stores a single environment variable as a plain string, multiple as an array. + */ +function parseTestEnvironment(envEntries: string | string[]): { [key: string]: string } { + const env: { [key: string]: string } = {}; + const entries = Array.isArray(envEntries) ? envEntries : [envEntries]; + for (const entry of entries) { + const eqIndex = entry.indexOf('='); + if (eqIndex !== -1) { + const name = entry.substring(0, eqIndex); + const value = entry.substring(eqIndex + 1); + env[name] = value; + } + } + return env; +} + +/** + * Mirror of CTestDriver.replaceValueInObject(). + * Recursively replaces string values exactly matching `str` with `replace`. + */ +function replaceValueInObject(obj: any, str: string, replace: any): T { + if (typeof obj === 'string' && obj === str) { + return replace; + } else if (Array.isArray(obj)) { + for (let i = 0; i < obj.length; i++) { + obj[i] = replaceValueInObject(obj[i], str, replace); + } + } else if (typeof obj === 'object' && obj !== null) { + for (const key of Object.keys(obj)) { + obj[key] = replaceValueInObject(obj[key], str, replace); + } + } + return obj; +} + +suite('[CTest test environment parsing]', () => { + test('Parse basic KEY=VALUE entries', () => { + const result = parseTestEnvironment(['A=B', 'C=D']); + expect(result).to.deep.equal({ A: 'B', C: 'D' }); + }); + + test('Parse entries with values containing equals signs', () => { + const result = parseTestEnvironment(['PATH=/usr/bin:/usr/local/bin', 'FLAGS=-O2 -DFOO=BAR']); + expect(result).to.deep.equal({ + PATH: '/usr/bin:/usr/local/bin', + FLAGS: '-O2 -DFOO=BAR' + }); + }); + + test('Parse LD_LIBRARY_PATH entry', () => { + const result = parseTestEnvironment(['LD_LIBRARY_PATH=/some/lib:/other/lib']); + expect(result).to.deep.equal({ LD_LIBRARY_PATH: '/some/lib:/other/lib' }); + }); + + test('Skip entries without equals sign', () => { + const result = parseTestEnvironment(['VALID=value', 'NOEQUALSSIGN', 'ALSO_VALID=123']); + expect(result).to.deep.equal({ VALID: 'value', ALSO_VALID: '123' }); + }); + + test('Handle empty array', () => { + const result = parseTestEnvironment([]); + expect(result).to.deep.equal({}); + }); + + test('Handle entry with empty value', () => { + const result = parseTestEnvironment(['KEY=']); + expect(result).to.deep.equal({ KEY: '' }); + }); + + test('Handle entry with empty key', () => { + const result = parseTestEnvironment(['=value']); + expect(result).to.deep.equal({ '': 'value' }); + }); + + test('Parse single string value (CTest JSON v1 single-entry format)', () => { + const result = parseTestEnvironment('MY_VAR=hello_world'); + expect(result).to.deep.equal({ MY_VAR: 'hello_world' }); + }); +}); + +suite('[replaceValueInObject]', () => { + test('Replace string placeholder at top level', () => { + const obj = { environment: '${cmake.testEnvironment}' }; + const replacement = [{ name: 'A', value: 'B' }]; + const result = replaceValueInObject(obj, '${cmake.testEnvironment}', replacement); + expect(result).to.deep.equal({ environment: [{ name: 'A', value: 'B' }] }); + }); + + test('Replace placeholder nested in object', () => { + const obj = { + name: 'test', + config: { + program: '/path/to/test', + environment: '${cmake.testEnvironment}' + } + }; + const replacement = [{ name: 'X', value: 'Y' }, { name: 'Z', value: 'W' }]; + const result = replaceValueInObject(obj, '${cmake.testEnvironment}', replacement); + expect(result).to.deep.equal({ + name: 'test', + config: { + program: '/path/to/test', + environment: [{ name: 'X', value: 'Y' }, { name: 'Z', value: 'W' }] + } + }); + }); + + test('Do not replace partial string matches', () => { + const obj = { value: 'prefix${cmake.testEnvironment}suffix' }; + const replacement = [{ name: 'A', value: 'B' }]; + const result = replaceValueInObject(obj, '${cmake.testEnvironment}', replacement); + expect(result).to.deep.equal({ value: 'prefix${cmake.testEnvironment}suffix' }); + }); + + test('Replace placeholder in array element', () => { + const obj = { items: ['keep', '${cmake.testEnvironment}', 'also-keep'] }; + const replacement = [{ name: 'A', value: 'B' }]; + const result = replaceValueInObject(obj, '${cmake.testEnvironment}', replacement); + expect(result).to.deep.equal({ items: ['keep', [{ name: 'A', value: 'B' }], 'also-keep'] }); + }); + + test('Handle empty replacement array', () => { + const obj = { environment: '${cmake.testEnvironment}' }; + const result = replaceValueInObject(obj, '${cmake.testEnvironment}', []); + expect(result).to.deep.equal({ environment: [] }); + }); + + test('Leave unrelated strings untouched', () => { + const obj = { program: '${cmake.testProgram}', environment: '${cmake.testEnvironment}' }; + const replacement = [{ name: 'A', value: 'B' }]; + const result = replaceValueInObject(obj, '${cmake.testEnvironment}', replacement); + expect(result).to.deep.equal({ + program: '${cmake.testProgram}', + environment: [{ name: 'A', value: 'B' }] + }); + }); +}); diff --git a/test/unit-tests/backend/vscode-mock.ts b/test/unit-tests/backend/vscode-mock.ts new file mode 100644 index 0000000000..dc72c15f85 --- /dev/null +++ b/test/unit-tests/backend/vscode-mock.ts @@ -0,0 +1,83 @@ +/** + * Minimal vscode mock for backend tests. + * Provides just enough to satisfy modules like CMakeParser that only need + * TextDocument, Position, Range, and Uri. + */ + +export class Position { + constructor(public readonly line: number, public readonly character: number) {} + compareTo(other: Position): number { + if (this.line !== other.line) { + return this.line - other.line; + } + return this.character - other.character; + } + isEqual(other: Position): boolean { + return this.line === other.line && this.character === other.character; + } +} + +export class Range { + constructor( + public readonly start: Position, + public readonly end: Position + ) {} +} + +export class Uri { + private constructor( + public readonly scheme: string, + public readonly fsPath: string, + public readonly path: string + ) {} + static file(p: string): Uri { + return new Uri('file', p, p); + } + static parse(s: string): Uri { + return new Uri('file', s, s); + } + toString(): string { + return this.fsPath; + } +} + +/** + * Create a mock TextDocument from a string. + */ +export function createMockDocument(text: string, fileName: string = 'CMakeLists.txt') { + const lines = text.split('\n'); + return { + getText: () => text, + fileName, + uri: Uri.file(fileName), + lineCount: lines.length, + positionAt(offset: number): Position { + let remaining = offset; + for (let line = 0; line < lines.length; line++) { + // +1 for the \n that was removed by split + const lineLen = lines[line].length + (line < lines.length - 1 ? 1 : 0); + if (remaining <= lines[line].length) { + return new Position(line, remaining); + } + remaining -= lineLen; + } + return new Position(lines.length - 1, lines[lines.length - 1].length); + }, + offsetAt(pos: Position): number { + let offset = 0; + for (let i = 0; i < pos.line && i < lines.length; i++) { + offset += lines[i].length + 1; // +1 for \n + } + return offset + pos.character; + }, + lineAt(line: number) { + const text = lines[line] || ''; + const firstNonWhitespace = text.search(/\S/); + return { + text, + firstNonWhitespaceCharacterIndex: firstNonWhitespace === -1 ? text.length : firstNonWhitespace + }; + }, + isDirty: false + }; +} diff --git a/test/unit-tests/config.test.ts b/test/unit-tests/config.test.ts index 98fc27611f..95767ec256 100644 --- a/test/unit-tests/config.test.ts +++ b/test/unit-tests/config.test.ts @@ -32,7 +32,8 @@ function createConfig(conf: Partial): Configurat testSuiteDelimiter: '', testSuiteDelimiterMaxOccurrence: 0, failurePatterns: [], - debugLaunchTarget: null + debugLaunchTarget: null, + neverDebugTestsWithLaunchConfiguration: null }, parseBuildDiagnostics: true, enabledOutputParsers: [], @@ -81,14 +82,28 @@ function createConfig(conf: Partial): Configurat ignoreCMakeListsMissing: false, automaticReconfigure: false, enableAutomaticKitScan: true, + removeStaleKitsOnScan: false, enableLanguageServices: true, preRunCoverageTarget: null, postRunCoverageTarget: null, coverageInfoFiles: [], useFolderPropertyInBuildTargetDropdown: true, + postConfigureTask: null, additionalBuildProblemMatchers: [], shell: null, - setBuildTargetSameAsLaunchTarget: false + setBuildTargetSameAsLaunchTarget: false, + outlineViewType: "list", + modifyLists: { + addNewSourceFiles: 'ask', + removeDeletedSourceFiles: 'ask', + variableSelection: 'never', + sourceVariables: [], + targetSelection: 'askParentSourceDirs', + targetCommandInvocationSelection: 'askParentDirs', + targetSourceCommands: ['target_sources', 'add_executable', 'add_library'], + scopeSelection: 'ask', + sourceListKeywords: [] + } }); ret.updatePartial(conf); return ret; @@ -174,4 +189,16 @@ suite('Configuration', () => { conf.updatePartial({ shell: '/usr/bin/bash' }); expect(conf.shell).to.eq('/usr/bin/bash'); }); + + test('Read removeStaleKitsOnScan as false by default', () => { + const conf = createConfig({}); + expect(conf.removeStaleKitsOnScan).to.be.false; + }); + + test('Update removeStaleKitsOnScan setting', () => { + const conf = createConfig({ removeStaleKitsOnScan: false }); + expect(conf.removeStaleKitsOnScan).to.be.false; + conf.updatePartial({ removeStaleKitsOnScan: true }); + expect(conf.removeStaleKitsOnScan).to.be.true; + }); }); diff --git a/test/unit-tests/ctest.test.ts b/test/unit-tests/ctest.test.ts index 38e39f24c9..dd3f7d9828 100644 --- a/test/unit-tests/ctest.test.ts +++ b/test/unit-tests/ctest.test.ts @@ -1,4 +1,4 @@ -import { readTestResultsFile, searchOutputForFailures } from "@cmt/ctest"; +import { readTestResultsFile, searchOutputForFailures, getMinimalRegexFragments } from "@cmt/ctest"; import { expect, getTestResourceFilePath } from "@test/util"; import { TestMessage } from "vscode"; @@ -111,4 +111,94 @@ suite('CTest test', () => { expect(tm.expectedOutput).to.eq(expected); expect(tm.actualOutput).to.eq(actual); } + + suite('getMinimalRegexFragments', () => { + test('no targets', () => { + const result = getMinimalRegexFragments(['A', 'B', 'C'], []); + expect(result).to.deep.eq([]); + }); + + test('no forbidden strings', () => { + const result = getMinimalRegexFragments(['A', 'B', 'C'], ['A', 'B', 'C']); + expect(result).to.deep.eq(['^.']); + }); + + test('unique prefixes map correctly', () => { + const superset = ['Test1', 'Test2', 'OtherTest']; + // Target is a unique subset + const result = getMinimalRegexFragments(superset, ['Test1', 'OtherTest']); + // Test1 -> T e s t 1 (at '1', no other forbidden string shares this prefix since Test2 diverges at 1) + // OtherTest -> O (matches nothing forbidden immediately) + // wait, forbidden is ['Test2'] + // For 'Test1': prefix 'Test1' -> forbidden count 0. Wait, 'T' matches 'Test2', 'e', 's', 't', '1'. 'Test1' is the prefix! + expect(result.length).to.eq(2); + expect(result).to.include('^Test1'); + expect(result).to.include('^O'); + }); + + test('swallowed target case (prefix of forbidden string)', () => { + const superset = ['Test', 'Test.1', 'Test.2']; + const targets = ['Test']; + // Since 'Test' is a prefix of 'Test.1', it never finds a prefix that has forbiddenCount 0. + // It parses all characters of 'Test' and then uses an end anchor. + const result = getMinimalRegexFragments(superset, targets); + expect(result).to.deep.eq(['^Test$']); + }); + + test('handles regex special characters properly', () => { + const superset = ['Test[A]', 'Test[B]']; + const targets = ['Test[A]']; + // Forbidden is ['Test[B]'] + // 'Test[' is shared. 'Test[A' is unique. + const result = getMinimalRegexFragments(superset, targets); + expect(result).to.deep.eq(['^Test\\[A']); + }); + + test('removes redundant fragments', () => { + // Targets: ['A', 'AB'] + // Forbidden: ['B'] + // 'A' -> 'A', AB -> 'A' + // "A" covers "AB", so "AB" is redundant. + const result = getMinimalRegexFragments(['A', 'AB', 'B'], ['A', 'AB']); + // forbidden: 'B'. root has 'B'. + // 'A' char 'A' -> forbidden 0 -> 'A' + // 'AB' char 'A' -> forbidden 0 -> 'A' + // result ['^A'] + expect(result).to.deep.eq(['^A']); + }); + + test('complex edge cases: nested suites, swallowed prefixes, special characters', () => { + const superset = [ + 'Suite', // Target: gets swallowed by prefix sharing with forbidden + 'Suite.Test1', // Target: logically nested + 'Suite.Test2', // Target: logically nested + 'Suite.Test3', // Forbidden + 'OtherSuite.Test1', // Target + 'OtherSuite.Test2', // Target + 'O[ther]', // Forbidden: share 'O' prefix + 'A+B.Test', // Target: gets swallowed + special chars + 'A+B.Test2' // Forbidden + ]; + + const targets = [ + 'Suite', + 'Suite.Test1', + 'Suite.Test2', + 'OtherSuite.Test1', + 'OtherSuite.Test2', + 'A+B.Test' + ]; + + const result = getMinimalRegexFragments(superset, targets); + + expect(result).to.have.members([ + '^Suite$', + '^Suite\\.Test1', + '^Suite\\.Test2', + '^Ot', + '^A\\+B\\.Test$' + ]); + expect(result.length).to.eq(5); + }); + }); }); diff --git a/test/unit-tests/diagnostics.test.ts b/test/unit-tests/diagnostics.test.ts index cf575cee88..4b68aea078 100644 --- a/test/unit-tests/diagnostics.test.ts +++ b/test/unit-tests/diagnostics.test.ts @@ -1364,10 +1364,10 @@ suite('Diagnostics', () => { consumer.dispose(); }); - test('CMakeOutputConsumer logs milestone stdout at info and routine stdout at debug', () => { + test('CMakeOutputConsumer logs internal noise at debug and user STATUS / milestones at info', () => { const spy = new SpyLogger(); const consumerWithLogger = new CMakeOutputConsumer('dummyPath', spy); - // Routine CMake status lines → debug + // CMake internal noise → debug consumerWithLogger.output('-- The C compiler identification is GNU 9.3.0'); consumerWithLogger.output('-- Detecting CXX compiler ABI info'); // Milestone lines → info @@ -1375,19 +1375,24 @@ suite('Diagnostics', () => { consumerWithLogger.output('-- Generating done'); consumerWithLogger.output('-- Build files have been written to: /path/to/build'); consumerWithLogger.output('-- Configuring incomplete, errors occurred!'); + // User message(STATUS "...") → info + consumerWithLogger.output('-- Using config: Release'); + consumerWithLogger.output('-- My project version is 1.2.3'); const infoCalls = spy.calls.filter(c => c.level === 'info'); const debugCalls = spy.calls.filter(c => c.level === 'debug'); const traceCalls = spy.calls.filter(c => c.level === 'trace'); - // 4 milestones at info - expect(infoCalls.length).to.eq(4); + // 4 milestones + 2 user STATUS lines at info + expect(infoCalls.length).to.eq(6); expect(infoCalls.map(c => c.args[0])).to.deep.eq([ '-- Configuring done', '-- Generating done', '-- Build files have been written to: /path/to/build', - '-- Configuring incomplete, errors occurred!' + '-- Configuring incomplete, errors occurred!', + '-- Using config: Release', + '-- My project version is 1.2.3' ]); - // 2 routine lines at debug + // 2 internal noise lines at debug expect(debugCalls.length).to.eq(2); // Nothing at trace expect(traceCalls.length).to.eq(0); diff --git a/test/unit-tests/kit-scan.test.ts b/test/unit-tests/kit-scan.test.ts index c59e077db5..35edce748d 100644 --- a/test/unit-tests/kit-scan.test.ts +++ b/test/unit-tests/kit-scan.test.ts @@ -7,6 +7,7 @@ chai.use(chaiAsPromised); import { expect } from 'chai'; import * as kit from '@cmt/kits/kit'; +import { shouldKeepUserKitAfterScan } from '@cmt/kits/kitsController'; import * as triple from '@cmt/triple'; import { fs } from '@cmt/pr'; @@ -348,4 +349,47 @@ suite('Kits scan test', () => { expect(action).to.eq('scan'); }); }); + + suite('shouldKeepUserKitAfterScan', () => { + test('preserves compiler kits when stale-kit cleanup is disabled', () => { + const existingKit: kit.Kit = { + name: 'My Custom GCC', + compilers: { C: 'C:/toolchains/gcc.exe' }, + isTrusted: true + }; + + expect(shouldKeepUserKitAfterScan(existingKit, new Set(), false)).to.be.true; + }); + + test('drops compiler kits not rediscovered when stale-kit cleanup is enabled', () => { + const existingKit: kit.Kit = { + name: 'Old GCC', + compilers: { C: 'gcc' }, + isTrusted: true + }; + + expect(shouldKeepUserKitAfterScan(existingKit, new Set(), true)).to.be.false; + }); + + test('preserves keep:true compiler kits when stale-kit cleanup is enabled', () => { + const existingKit: kit.Kit = { + name: 'Pinned GCC', + compilers: { C: 'gcc' }, + keep: true, + isTrusted: true + }; + + expect(shouldKeepUserKitAfterScan(existingKit, new Set(), true)).to.be.true; + }); + + test('preserves non-compiler kits when stale-kit cleanup is enabled', () => { + const existingKit: kit.Kit = { + name: 'Toolchain only', + toolchainFile: 'toolchain.cmake', + isTrusted: true + }; + + expect(shouldKeepUserKitAfterScan(existingKit, new Set(), true)).to.be.true; + }); + }); }); diff --git a/test/unit-tests/kitmanager.test.ts b/test/unit-tests/kitmanager.test.ts index e4b24074a6..9e3e8f2d71 100644 --- a/test/unit-tests/kitmanager.test.ts +++ b/test/unit-tests/kitmanager.test.ts @@ -1,5 +1,5 @@ /* eslint-disable no-unused-expressions */ -import { readKitsFile, getShellScriptEnvironment } from '@cmt/kits/kit'; +import { readKitsFile, getShellScriptEnvironment, effectiveKitEnvironment } from '@cmt/kits/kit'; import { expect } from '@test/util'; import * as path from 'path'; import paths from '@cmt/paths'; @@ -93,4 +93,57 @@ suite('Kits test', () => { expect(env_vars_arr).to.deep.include(['TESTVAR13', 'cde']); } }); + + test('Test environmentVariables expand using environmentSetupScript output', async () => { + const fname_extension = process.platform === 'win32' ? 'bat' : 'sh'; + const fname = `cmake-kit-test-${Math.random().toString()}.${fname_extension}`; + const script_path = path.join(paths.tmpDir, fname); + const pathSeparator = process.platform === 'win32' ? ';' : ':'; + const basePath = process.platform === 'win32' ? 'C:\\base-path' : '/base-path'; + const scriptPath = process.platform === 'win32' ? 'C:\\script-path' : '/script-path'; + const appendedPath = process.platform === 'win32' ? 'C:\\env-var-path' : '/env-var-path'; + + process.env.PATH = basePath; + + if (process.platform === 'win32') { + await fs.writeFile(script_path, `set "PATH=${scriptPath};%PATH%"`); + } else { + await fs.writeFile(script_path, `export PATH="${scriptPath}:$PATH"`); + } + + const kit = { + name: 'Test Kit 3', + environmentSetupScript: script_path, + environmentVariables: { + PATH: `\${env:PATH}${pathSeparator}${appendedPath}` + }, + isTrusted: true + }; + + const setupOnlyKit = { + name: 'Test Kit 3 setup-only', + environmentSetupScript: script_path, + isTrusted: true + }; + + const setup_env_vars = await getShellScriptEnvironment(setupOnlyKit); + expect(setup_env_vars).to.not.be.undefined; + + const env_vars = await effectiveKitEnvironment(kit); + await fs.unlink(script_path); + + const normalizePathList = (value: string | undefined): string[] => { + expect(value).to.not.eq(undefined); + const parts = (value ?? '').split(pathSeparator); + if (process.platform !== 'win32') { + return parts; + } + + // cmd/set can emit PATH entries with different slash and drive-letter casing. + return parts.map(part => path.win32.normalize(part).toLowerCase()); + }; + + expect(normalizePathList(setup_env_vars?.PATH)).to.deep.eq(normalizePathList(`${scriptPath}${pathSeparator}${basePath}`)); + expect(normalizePathList(env_vars.PATH)).to.deep.eq(normalizePathList(`${scriptPath}${pathSeparator}${basePath}${pathSeparator}${appendedPath}`)); + }); }); diff --git a/test/unit-tests/presets/presetsController.test.ts b/test/unit-tests/presets/presetsController.test.ts index 46bf67ffa5..0ee040e5ca 100644 --- a/test/unit-tests/presets/presetsController.test.ts +++ b/test/unit-tests/presets/presetsController.test.ts @@ -239,22 +239,61 @@ suite('PresetsController file watcher protection', () => { }); /** - * Test that create events are not debounced and always fire immediately. - * The FileWatcher treats create events differently from change events. + * Test that all filesystem events (change, create, delete) are debounced uniformly. + * After unifying the FileWatcher handler (fix for #4777), create events are + * debounced the same way as change and delete events to prevent race conditions + * when external tools regenerate included files via atomic write (delete + create). */ - test('Create events are not debounced', () => { - let createCount = 0; + test('All events including create are debounced', () => { + let canRunChangeHandler = true; + let eventCount = 0; + const debounceMs = 100; + + // Simulates the unified debounced handler used for all events + const handler = () => { + if (canRunChangeHandler) { + eventCount++; + canRunChangeHandler = false; + setTimeout(() => (canRunChangeHandler = true), debounceMs); + } + }; + + // Rapid create events should be debounced (only first fires) + handler(); // create event + handler(); // another create event + handler(); // yet another create event + + expect(eventCount).to.equal(1); + }); + + /** + * Test that a delete followed by a create (atomic write pattern) is handled + * as a single reload. This simulates the scenario where an external tool like + * Conan regenerates an included preset file. See issue #4777. + */ + test('Delete followed by create triggers single debounced reload', async () => { + let canRunChangeHandler = true; + let eventCount = 0; + const debounceMs = 100; - const createHandler = () => { - createCount++; + const handler = () => { + if (canRunChangeHandler) { + eventCount++; + canRunChangeHandler = false; + setTimeout(() => (canRunChangeHandler = true), debounceMs); + } }; - // Multiple create events should all fire - createHandler(); - createHandler(); - createHandler(); + // Simulate atomic write: delete event immediately followed by create event + handler(); // delete event + handler(); // create event (should be debounced) + + expect(eventCount).to.equal(1); - expect(createCount).to.equal(3); + // After debounce period, another event should fire + await new Promise(resolve => setTimeout(resolve, debounceMs + 10)); + handler(); + expect(eventCount).to.equal(2); }); /** diff --git a/test/unit-tests/select-debugger.test.ts b/test/unit-tests/select-debugger.test.ts index 4bbadd4486..014f372554 100644 --- a/test/unit-tests/select-debugger.test.ts +++ b/test/unit-tests/select-debugger.test.ts @@ -207,6 +207,18 @@ suite('Select debugger', () => { expect(config['miDebuggerPath']).to.be.eq('lldb'); }); + test('checkDebugger does not force shell: true (paths with spaces on Windows)', async () => { + const stub = sandbox.stub(proc, 'execute'); + stub.returns(createExecuteReturn(0)); + + await Debugger.checkDebugger('d:/Pro gramFiles/mingw64/bin/gdb.exe'); + + expect(stub.calledOnce).to.be.true; + const options = stub.firstCall.args[3]; + // shell must not be true; it should be left to proc.execute's determineShell logic + expect(options?.shell).to.not.be.eq(true); + }); + test('Create debug config from cache - debugger path override', async () => { const stub = sandbox.stub(proc, 'execute'); stub.returns(createExecuteReturn(0)); diff --git a/test/visual-syntax-test/CMakeLists.txt b/test/visual-syntax-test/CMakeLists.txt index 33ab9057bc..86cb9c55f2 100644 --- a/test/visual-syntax-test/CMakeLists.txt +++ b/test/visual-syntax-test/CMakeLists.txt @@ -289,4 +289,186 @@ endfunction() # Macro macro(my_macro ARG) message(STATUS "Macro: ${ARG}") -endmacro() \ No newline at end of file +endmacro() + +# ============================================================================ +# PR #4527 additions — knownVariables extensions +# ============================================================================ + +# Bare variable references (should highlight as support.type.variable.cmake) +${CMAKE_MSVC_RUNTIME_LIBRARY} +${CMAKE_INTERPROCEDURAL_OPTIMIZATION} +${CMAKE_UNITY_BUILD} +${CMAKE_UNITY_BUILD_BATCH_SIZE} +${CMAKE_UNITY_BUILD_MODE} +${CMAKE_COMPILE_WARNING_AS_ERROR} +${CMAKE_COLOR_DIAGNOSTICS} +${CMAKE_LINK_WHAT_YOU_USE} +${CMAKE_VERIFY_INTERFACE_HEADER_SETS} +${CMAKE_OPTIMIZE_DEPENDENCIES} +${CMAKE_BUILD_RPATH} +${CMAKE_BUILD_RPATH_USE_ORIGIN} +${CMAKE_CXX_COMPILER_VERSION} +${CMAKE_CXX_EXTENSIONS} +${CMAKE_CXX_STANDARD_REQUIRED} + +# Variables used in set()/message() context +set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>DLL") +set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) +set(CMAKE_UNITY_BUILD ON) +set(CMAKE_UNITY_BUILD_BATCH_SIZE 16) +set(CMAKE_UNITY_BUILD_MODE BATCH) +set(CMAKE_COMPILE_WARNING_AS_ERROR ON) +set(CMAKE_COLOR_DIAGNOSTICS ON) +set(CMAKE_LINK_WHAT_YOU_USE TRUE) +set(CMAKE_VERIFY_INTERFACE_HEADER_SETS ON) +set(CMAKE_OPTIMIZE_DEPENDENCIES TRUE) +set(CMAKE_BUILD_RPATH "/opt/lib") +set(CMAKE_BUILD_RPATH_USE_ORIGIN TRUE) + +message(STATUS "CXX compiler version: ${CMAKE_CXX_COMPILER_VERSION}") +message(STATUS "CXX extensions: ${CMAKE_CXX_EXTENSIONS}") +message(STATUS "CXX standard required: ${CMAKE_CXX_STANDARD_REQUIRED}") + +# Regex-generalized family coverage +message(STATUS "C compiler version: ${CMAKE_C_COMPILER_VERSION}") +message(STATUS "Fortran simulate ID: ${CMAKE_Fortran_SIMULATE_ID}") +message(STATUS "CXX frontend variant: ${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}") +message(STATUS "C simulate version: ${CMAKE_C_SIMULATE_VERSION}") +message(STATUS "CXX compile features: ${CMAKE_CXX_COMPILE_FEATURES}") + +# ============================================================================ +# PR #4527 additions — scopedPropertyCommand coverage +# ============================================================================ + +# set_property with GLOBAL scope and property names +set_property(GLOBAL PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE) +set_property(GLOBAL PROPERTY POSITION_INDEPENDENT_CODE ON) +set_property(GLOBAL APPEND PROPERTY COMPILE_OPTIONS "-Wall") + +# get_property with TARGET scope +get_property(result TARGET MyApp PROPERTY COMPILE_FEATURES) +get_property(result TARGET MyApp PROPERTY INTERFACE_LINK_LIBRARIES) + +# set_target_properties with multiple properties +set_target_properties(MyApp PROPERTIES + OUTPUT_NAME "myapp" + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" + UNITY_BUILD ON + UNITY_BUILD_MODE BATCH + LINK_WHAT_YOU_USE TRUE + VERIFY_INTERFACE_HEADER_SETS ON + OPTIMIZE_DEPENDENCIES TRUE + FOLDER "Apps" + LINKER_LANGUAGE CXX + VERSION "1.0.0" + SOVERSION "1" + INSTALL_RPATH "/opt/lib" + INSTALL_RPATH_USE_LINK_PATH TRUE + SKIP_BUILD_RPATH FALSE + BUILD_WITH_INSTALL_RPATH FALSE + AUTOMOC ON + AUTOUIC ON + AUTORCC ON + MACOSX_BUNDLE TRUE + MACOSX_RPATH TRUE + WIN32_EXECUTABLE TRUE + FRAMEWORK FALSE + ENABLE_EXPORTS ON +) + +# set_source_files_properties with SOURCE scope keywords +set_source_files_properties(main.cpp PROPERTIES + GENERATED FALSE + LANGUAGE CXX + HEADER_FILE_ONLY FALSE + COMPILE_FLAGS "-O2" + COMPILE_DEFINITIONS "USE_FEATURE=1" + OBJECT_DEPENDS "header.h" + WRAP_EXCLUDE TRUE + SYMBOLIC FALSE +) + +# define_property with INHERITED +define_property(TARGET PROPERTY MY_CUSTOM_PROP + BRIEF_DOCS "A custom property" + FULL_DOCS "Full documentation for custom property" + INHERITED +) + +# get_directory_property +get_directory_property(dir_defs COMPILE_DEFINITIONS) +get_directory_property(dir_opts DIRECTORY "${CMAKE_SOURCE_DIR}" COMPILE_OPTIONS) + +# set_tests_properties with test properties +set_tests_properties(my_test PROPERTIES + TIMEOUT 120 + WILL_FAIL FALSE + COST 10 + LABELS "unit;fast" + PASS_REGULAR_EXPRESSION "PASSED" + FAIL_REGULAR_EXPRESSION "FAILED" + FIXTURES_REQUIRED "db_fixture" + FIXTURES_SETUP "setup_fixture" + FIXTURES_CLEANUP "cleanup_fixture" + RESOURCE_LOCK "gpu" + PROCESSORS 4 + RUN_SERIAL TRUE + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" +) + +# get_test_property +get_test_property(my_test TIMEOUT test_timeout) + +# More property coverage: archive, PDB, import, compatibility, VS +set_target_properties(MyLib PROPERTIES + ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" + ARCHIVE_OUTPUT_NAME "mylib" + PDB_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/pdb" + PDB_NAME "mylib" + DEBUG_POSTFIX "d" + IMPORT_PREFIX "" + IMPORT_SUFFIX ".lib" + IMPORTED TRUE + DEFINE_SYMBOL "MYLIB_EXPORTS" + STATIC_LIBRARY_FLAGS "/LTCG" + COMPATIBLE_INTERFACE_BOOL "POSITION_INDEPENDENT_CODE" + COMPATIBLE_INTERFACE_STRING "LINKER_LANGUAGE" + NO_SONAME TRUE + HAS_CXX TRUE + GNUtoMS ON + INTERFACE_COMPILE_DEFINITIONS "MYLIB_SHARED" + INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/include" + INTERFACE_LINK_LIBRARIES "dep_lib" + INTERFACE_COMPILE_OPTIONS "-fPIC" + INTERFACE_COMPILE_FEATURES "cxx_std_17" + INTERFACE_SOURCES "extra.cpp" + INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "/usr/include" + INTERFACE_POSITION_INDEPENDENT_CODE ON + INTERFACE_HEADER_SETS "default" + PRECOMPILE_HEADERS ";pch.h" + HEADER_SETS "default" + EXCLUDE_FROM_ALL TRUE + INSTALL_NAME_DIR "/opt/lib" + PREFIX "lib" + SUFFIX ".so" + OSX_ARCHITECTURES "arm64;x86_64" + MACOSX_BUNDLE_INFO_PLIST "${CMAKE_SOURCE_DIR}/Info.plist" + MACOSX_FRAMEWORK_INFO_PLIST "${CMAKE_SOURCE_DIR}/Framework.plist" + MACOSX_PACKAGE_LOCATION "Resources" + XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Apple Development" + VS_GLOBAL_KEYWORD "ManagedCProj" + VS_DOTNET_REFERENCES "System;System.Core" + VS_WINRT_EXTENSIONS TRUE + VS_WINRT_REFERENCES "Windows" + MAP_IMPORTED_CONFIG_DEBUG "Release" + BUNDLE_EXTENSION "plugin" + LINK_SEARCH_END_STATIC TRUE + LINK_SEARCH_START_STATIC FALSE + LINK_OPTIONS "-Wl,--as-needed" + LINK_DEPENDS "${CMAKE_SOURCE_DIR}/version.lds" + SOURCES "lib.cpp" + COMPILE_DEFINITIONS_DEBUG "DEBUG=1" + LINK_FLAGS_RELEASE "/OPT:REF" +) \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index a29fadc55c..61e41e3dcd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -150,21 +150,38 @@ esquery "^1.6.0" jsdoc-type-pratt-parser "~4.0.0" -"@eslint/eslintrc@^1.2.3": - version "1.2.3" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@eslint/eslintrc/-/eslintrc-1.2.3.tgz" - integrity sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA== +"@eslint-community/eslint-utils@^4.2.0": + version "4.9.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz#4e90af67bc51ddee6cdef5284edf572ec376b595" + integrity sha1-TpCvZ7xR3e5s3vUoTt9XLsN2tZU= + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": + version "4.12.2" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b" + integrity sha1-vM32Fbz3tujbgw7AuNIcmiXeWXs= + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha1-OIomnw8lwbatwxe1osVXFIlMcK0= dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.3.2" - globals "^13.9.0" + espree "^9.6.0" + globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/js@8.57.1": + version "8.57.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" + integrity sha1-3mM9s+wu9qPIni8ZA4Bj6KEi4sI= + "@friedemannsommer/lcov-parser@^5.0.0": version "5.0.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@friedemannsommer/lcov-parser/-/lcov-parser-5.0.0.tgz#dbda48ac22ece7f3d5df7fb183d68267025eccf4" @@ -189,19 +206,43 @@ normalize-path "^2.0.1" through2 "^2.0.3" -"@humanwhocodes/config-array@^0.9.2": - version "0.9.5" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@humanwhocodes/config-array/-/config-array-0.9.5.tgz" - integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== +"@gulpjs/to-absolute-glob@^4.0.0": + version "4.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@gulpjs/to-absolute-glob/-/to-absolute-glob-4.0.0.tgz#1fc2460d3953e1d9b9f2dfdb4bcc99da4710c021" + integrity sha1-H8JGDTlT4dm58t/bS8yZ2kcQwCE= dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.4" + is-negated-glob "^1.0.0" -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/config-array@^0.13.0": + version "0.13.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" + integrity sha1-+5B2JN8yVtBLmqLfUNeql+xkh0g= + dependencies: + "@humanwhocodes/object-schema" "^2.0.3" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha1-r1smkaIrRL6EewyoFkHF+2rQFyw= + +"@humanwhocodes/object-schema@^2.0.3": + version "2.0.3" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + integrity sha1-Siho111taWPkI7z5C3/RvjQ0CdM= + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha1-s3Znt7wYHBaHgiWbq0JHT79StVA= + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" "@isaacs/cliui@^9.0.0": version "9.0.0" @@ -359,7 +400,7 @@ resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3": +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": version "1.2.8" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -468,6 +509,11 @@ dependencies: "@octokit/openapi-types" "^11.2.0" +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha1-p36nQvqyV3UUVDTrHSMoz1ATrDM= + "@pkgr/core@^0.1.0": version "0.1.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" @@ -551,11 +597,24 @@ "@types/estree" "*" "@types/json-schema" "*" +"@types/eslint@^8.56.0": + version "8.56.12" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@types/eslint/-/eslint-8.56.12.tgz#1657c814ffeba4d2f84c0d4ba0f44ca7ea1ca53a" + integrity sha1-FlfIFP/rpNL4TA1LoPRMp+ocpTo= + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + "@types/estree@*", "@types/estree@^1.0.8": version "1.0.8" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" integrity sha1-lYuRyZGxhnztMYvt6g4hXuBQcm4= +"@types/expect@^1.20.4": + version "1.20.4" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@types/expect/-/expect-1.20.4.tgz#8288e51737bf7e3ab5d7c77bfa695883745264e5" + integrity sha1-gojlFze/fjq118d7+mlYg3RSZOU= + "@types/glob@*": version "7.2.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@types/glob/-/glob-7.2.0.tgz" @@ -594,16 +653,23 @@ resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@types/minimatch/-/minimatch-3.0.5.tgz" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== -"@types/mocha@^8.2.2": - version "8.2.3" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@types/mocha/-/mocha-8.2.3.tgz" - integrity sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw== +"@types/mocha@^10.0.10": + version "10.0.10" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@types/mocha/-/mocha-10.0.10.tgz#91f62905e8d23cbd66225312f239454a23bebfa0" + integrity sha1-kfYpBejSPL1mIlMS8jlFSiO+v6A= "@types/node@*": version "17.0.35" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@types/node/-/node-17.0.35.tgz" integrity sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg== +"@types/node@>=12": + version "25.5.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@types/node/-/node-25.5.0.tgz#5c99f37c443d9ccc4985866913f1ed364217da31" + integrity sha1-XJnzfEQ9nMxJhYZpE/HtNkIX2jE= + dependencies: + undici-types "~7.18.0" + "@types/node@^20.14.2": version "20.16.5" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@types/node/-/node-20.16.5.tgz#d43c7f973b32ffdf9aa7bd4f80e1072310fd7a53" @@ -624,6 +690,11 @@ "@types/glob" "*" "@types/node" "*" +"@types/semver@^7.3.12": + version "7.7.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@types/semver/-/semver-7.7.1.tgz#3ce3af1a5524ef327d2da9e4fd8b6d95c8d70528" + integrity sha1-POOvGlUk7zJ9Lank/YttlcjXBSg= + "@types/sinon@~9.0.10": version "9.0.11" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@types/sinon/-/sinon-9.0.11.tgz" @@ -651,6 +722,14 @@ resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@types/uuid/-/uuid-8.3.4.tgz" integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== +"@types/vinyl@^2.0.9": + version "2.0.12" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@types/vinyl/-/vinyl-2.0.12.tgz#17642ca9a8ae10f3db018e9f885da4188db4c6e6" + integrity sha1-F2QsqaiuEPPbAY6fiF2kGI20xuY= + dependencies: + "@types/expect" "^1.20.4" + "@types/node" "*" + "@types/vscode@1.88.0": version "1.88.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@types/vscode/-/vscode-1.88.0.tgz#2dc690237f7ef049942508c8609b6b9f5216b4d3" @@ -668,98 +747,101 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin-tslint@^5.25.0": - version "5.25.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-5.25.0.tgz" - integrity sha512-SBk45e5T8ZCw43je2eDRlYE2pOpmg5RlrWcs7qtBfNVtD4rd30s/r28EL6ryAhwwwnn4RzKpqU19ZQ18q0jhoA== +"@typescript-eslint/eslint-plugin-tslint@^5.59.11": + version "5.62.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-5.62.0.tgz#220242dcd23711c400d4f5d5d876d5107cea4be0" + integrity sha1-IgJC3NI3EcQA1PXV2HbVEHzqS+A= dependencies: - "@typescript-eslint/utils" "5.25.0" - lodash "^4.17.21" + "@typescript-eslint/utils" "5.62.0" -"@typescript-eslint/eslint-plugin@^5.25.0": - version "5.25.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.25.0.tgz" - integrity sha512-icYrFnUzvm+LhW0QeJNKkezBu6tJs9p/53dpPLFH8zoM9w1tfaKzVurkPotEpAqQ8Vf8uaFyL5jHd0Vs6Z0ZQg== +"@typescript-eslint/eslint-plugin@^5.59.11": + version "5.62.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" + integrity sha1-ru8DKNFyueN9m6ttvBO4ftiJd9s= dependencies: - "@typescript-eslint/scope-manager" "5.25.0" - "@typescript-eslint/type-utils" "5.25.0" - "@typescript-eslint/utils" "5.25.0" + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" debug "^4.3.4" - functional-red-black-tree "^1.0.1" + graphemer "^1.4.0" ignore "^5.2.0" - regexpp "^3.2.0" + natural-compare-lite "^1.4.0" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.25.0": - version "5.25.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@typescript-eslint/parser/-/parser-5.25.0.tgz" - integrity sha512-r3hwrOWYbNKP1nTcIw/aZoH+8bBnh/Lh1iDHoFpyG4DnCpvEdctrSl6LOo19fZbzypjQMHdajolxs6VpYoChgA== +"@typescript-eslint/parser@^5.59.11": + version "5.62.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + integrity sha1-G2PQgthJovyuilaSSPvi7huKVsc= dependencies: - "@typescript-eslint/scope-manager" "5.25.0" - "@typescript-eslint/types" "5.25.0" - "@typescript-eslint/typescript-estree" "5.25.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.25.0": - version "5.25.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@typescript-eslint/scope-manager/-/scope-manager-5.25.0.tgz" - integrity sha512-p4SKTFWj+2VpreUZ5xMQsBMDdQ9XdRvODKXN4EksyBjFp2YvQdLkyHqOffakYZPuWJUDNu3jVXtHALDyTv3cww== +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha1-2UV8zGoLjWs30OslKiMCJHjFRgw= dependencies: - "@typescript-eslint/types" "5.25.0" - "@typescript-eslint/visitor-keys" "5.25.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/type-utils@5.25.0": - version "5.25.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@typescript-eslint/type-utils/-/type-utils-5.25.0.tgz" - integrity sha512-B6nb3GK3Gv1Rsb2pqalebe/RyQoyG/WDy9yhj8EE0Ikds4Xa8RR28nHz+wlt4tMZk5bnAr0f3oC8TuDAd5CPrw== +"@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" + integrity sha1-KG8DicQWgTds2tlrMJzt0X1wNGo= dependencies: - "@typescript-eslint/utils" "5.25.0" + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.25.0": - version "5.25.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@typescript-eslint/types/-/types-5.25.0.tgz" - integrity sha512-7fWqfxr0KNHj75PFqlGX24gWjdV/FDBABXL5dyvBOWHpACGyveok8Uj4ipPX/1fGU63fBkzSIycEje4XsOxUFA== +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha1-JYYH5g7/ownwZ2CJMcPfb+1B/S8= -"@typescript-eslint/typescript-estree@5.25.0": - version "5.25.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@typescript-eslint/typescript-estree/-/typescript-estree-5.25.0.tgz" - integrity sha512-MrPODKDych/oWs/71LCnuO7NyR681HuBly2uLnX3r5i4ME7q/yBqC4hW33kmxtuauLTM0OuBOhhkFaxCCOjEEw== +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha1-fRd5S3f6vKxhXWpI+xQzMNli65s= dependencies: - "@typescript-eslint/types" "5.25.0" - "@typescript-eslint/visitor-keys" "5.25.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.25.0": - version "5.25.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@typescript-eslint/utils/-/utils-5.25.0.tgz" - integrity sha512-qNC9bhnz/n9Kba3yI6HQgQdBLuxDoMgdjzdhSInZh6NaDnFpTUlwNGxplUFWfY260Ya0TRPvkg9dd57qxrJI9g== +"@typescript-eslint/utils@5.62.0": + version "5.62.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha1-FB6AnHFjbkp12qOfrtL7X0sQ34Y= dependencies: + "@eslint-community/eslint-utils" "^4.2.0" "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.25.0" - "@typescript-eslint/types" "5.25.0" - "@typescript-eslint/typescript-estree" "5.25.0" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" eslint-scope "^5.1.1" - eslint-utils "^3.0.0" + semver "^7.3.7" -"@typescript-eslint/visitor-keys@5.25.0": - version "5.25.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@typescript-eslint/visitor-keys/-/visitor-keys-5.25.0.tgz" - integrity sha512-yd26vFgMsC4h2dgX4+LR+GeicSKIfUvZREFLf3DDjZPtqgLx5AJZr6TetMNwFP9hcKreTTeztQYBTNbNoOycwA== +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha1-IXQBGRfOWCh1lU/+L2kS1ZMeNT4= dependencies: - "@typescript-eslint/types" "5.25.0" + "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@ungap/promise-all-settled@1.1.2": - version "1.1.2" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz" - integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== +"@ungap/structured-clone@^1.2.0": + version "1.3.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" + integrity sha1-0Gu7OE689sUF/eHD0O1N3/4Kr/g= "@vscode/extension-telemetry@^0.9.6": version "0.9.6" @@ -993,22 +1075,20 @@ "@webassemblyjs/ast" "1.14.1" "@xtuc/long" "4.2.2" -"@webpack-cli/configtest@^1.1.1": - version "1.1.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@webpack-cli/configtest/-/configtest-1.1.1.tgz" - integrity sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg== +"@webpack-cli/configtest@^2.1.1": + version "2.1.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" + integrity sha1-Oy+FLpHaxuO4X7KjFPuL70bZRkY= -"@webpack-cli/info@^1.4.1": - version "1.4.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@webpack-cli/info/-/info-1.4.1.tgz" - integrity sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA== - dependencies: - envinfo "^7.7.3" +"@webpack-cli/info@^2.0.2": + version "2.0.2" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" + integrity sha1-zD+/Iu/riP9iMQz4hcWwn0SuD90= -"@webpack-cli/serve@^1.6.1": - version "1.6.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@webpack-cli/serve/-/serve-1.6.1.tgz" - integrity sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw== +"@webpack-cli/serve@^2.0.5": + version "2.0.5" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" + integrity sha1-Ml20I5XNSf5sFAV/mpAOQn34gQ4= "@xtuc/ieee754@^1.2.0": version "1.2.0" @@ -1025,7 +1105,7 @@ acorn-import-phases@^1.0.3: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz#16eb850ba99a056cb7cbfe872ffb8972e18c8bd7" integrity sha1-FuuFC6maBWy3y/6HL/uJcuGMi9c= -acorn-jsx@^5.2.0, acorn-jsx@^5.3.2: +acorn-jsx@^5.3.2: version "5.3.2" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== @@ -1035,16 +1115,16 @@ acorn@^6.4.1: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/acorn/-/acorn-6.4.2.tgz" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^7.1.1: - version "7.4.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/acorn/-/acorn-7.4.1.tgz" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.12.0, acorn@^8.15.0, acorn@^8.7.1: +acorn@^8.12.0, acorn@^8.15.0: version "8.15.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" integrity sha1-o2CJi8QV7arEbIJB9jg5dbkwuBY= +acorn@^8.9.0: + version "8.16.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/acorn/-/acorn-8.16.0.tgz#4ce79c89be40afe7afe8f3adb902a1f1ce9ac08a" + integrity sha1-TOecib5Ar+ev6POtuQKh8c6awIo= + agent-base@6: version "6.0.2" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/agent-base/-/agent-base-6.0.2.tgz" @@ -1083,7 +1163,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.12.4, ajv@^6.12.5: version "6.14.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ajv/-/ajv-6.14.0.tgz#fd067713e228210636ebb08c60bd3765d6dbe73a" integrity sha1-/QZ3E+IoIQY267CMYL03Zdbb5zo= @@ -1103,11 +1183,6 @@ ajv@^8.0.0, ajv@^8.18.0, ajv@^8.9.0: json-schema-traverse "^1.0.0" require-from-string "^2.0.2" -ansi-colors@4.1.1: - version "4.1.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ansi-colors/-/ansi-colors-4.1.1.tgz" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - ansi-colors@^1.0.1: version "1.1.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ansi-colors/-/ansi-colors-1.1.0.tgz" @@ -1120,12 +1195,10 @@ ansi-colors@^3.0.5, ansi-colors@^3.2.3: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ansi-colors/-/ansi-colors-3.2.4.tgz" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ansi-escapes/-/ansi-escapes-4.3.2.tgz" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" +ansi-colors@^4.1.3: + version "4.1.3" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha1-N2ETQOsiQ+cMxgTK011jJw1IeBs= ansi-gray@^0.1.1: version "0.1.1" @@ -1134,7 +1207,7 @@ ansi-gray@^0.1.1: dependencies: ansi-wrap "0.1.0" -ansi-regex@^2.0.0, ansi-regex@^3.0.0, ansi-regex@^4.1.0, ansi-regex@^5.0.1: +ansi-regex@^2.0.0, ansi-regex@^4.1.0, ansi-regex@^5.0.1, ansi-regex@^6.2.2: version "5.0.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== @@ -1153,6 +1226,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +ansi-styles@^6.1.0: + version "6.2.3" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ansi-styles/-/ansi-styles-6.2.3.tgz#c044d5dcc521a076413472597a1acb1f103c4041" + integrity sha1-wETV3MUhoHZBNHJZehrLHxA8QEE= + ansi-wrap@0.1.0, ansi-wrap@^0.1.0: version "0.1.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ansi-wrap/-/ansi-wrap-0.1.0.tgz" @@ -1166,7 +1244,7 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@~3.1.1: +anymatch@^3.1.3, anymatch@~3.1.2: version "3.1.3" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" integrity sha1-eQxYsZuhcgqEIFtXxhjVrYUklz4= @@ -1394,11 +1472,6 @@ assign-symbols@^1.0.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/assign-symbols/-/assign-symbols-1.0.0.tgz" integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/astral-regex/-/astral-regex-1.0.0.tgz" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - async-done@^1.2.0, async-done@^1.2.2: version "1.3.2" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/async-done/-/async-done-1.3.2.tgz" @@ -1456,6 +1529,11 @@ azure-devops-node-api@^12.5.0: tunnel "0.0.6" typed-rest-client "^1.8.4" +b4a@^1.6.4: + version "1.8.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/b4a/-/b4a-1.8.0.tgz#1ca3ba0edc9469aaabef5647e769a83d50180b1a" + integrity sha1-HKO6DtyUaaqr71ZH52moPVAYCxo= + bach@^1.0.0: version "1.2.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/bach/-/bach-1.2.0.tgz" @@ -1481,6 +1559,11 @@ balanced-match@^4.0.2: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/balanced-match/-/balanced-match-4.0.4.tgz#bfb10662feed8196a2c62e7c68e17720c274179a" integrity sha1-v7EGYv7tgZaixi58aOF3IMJ0F5o= +bare-events@^2.7.0: + version "2.8.2" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/bare-events/-/bare-events-2.8.2.tgz#7b3e10bd8e1fc80daf38bb516921678f566ab89f" + integrity sha1-ez4QvY4fyA2vOLtRaSFnj1ZquJ8= + base64-js@^1.3.1: version "1.5.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/base64-js/-/base64-js-1.5.1.tgz" @@ -1540,6 +1623,15 @@ bl@^4.0.3: inherits "^2.0.4" readable-stream "^3.4.0" +bl@^5.0.0: + version "5.1.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273" + integrity sha1-GDcV9njHGI7O+f5HXZAglABiQnM= + dependencies: + buffer "^6.0.3" + inherits "^2.0.4" + readable-stream "^3.4.0" + boolbase@^1.0.0: version "1.0.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/boolbase/-/boolbase-1.0.0.tgz" @@ -1553,6 +1645,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1, brace-expansion@^2.0.2: + version "2.0.2" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" + integrity sha1-VPxTI3phPYVMe9N0Y6rRffhyFOc= + dependencies: + balanced-match "^1.0.0" + brace-expansion@^5.0.2: version "5.0.3" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-5.0.3.tgz#6a9c6c268f85b53959ec527aeafe0f7300258eef" @@ -1567,10 +1666,10 @@ braces@^2.3.1, braces@^2.3.2, braces@^3.0.3, braces@~3.0.2: dependencies: fill-range "^7.1.1" -browser-stdout@1.3.1: +browser-stdout@^1.3.1: version "1.3.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/browser-stdout/-/browser-stdout-1.3.1.tgz" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA= browserslist@^4.28.1: version "4.28.1" @@ -1611,6 +1710,14 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" +buffer@^6.0.3: + version "6.0.3" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha1-Ks5XhFnMj74qcKqo9S7mO2p0xsY= + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + builtin-modules@^1.1.1: version "1.1.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/builtin-modules/-/builtin-modules-1.1.1.tgz" @@ -1720,7 +1827,7 @@ chai@^4.3.0: pathval "^1.1.1" type-detect "^4.0.5" -chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.3.0, chalk@^2.4.2: version "2.4.2" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1737,10 +1844,10 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chardet@^0.7.0: - version "0.7.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/chardet/-/chardet-0.7.0.tgz" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +chalk@^5.3.0: + version "5.6.2" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/chalk/-/chalk-5.6.2.tgz#b1238b6e23ea337af71c7f8a295db5af0c158aea" + integrity sha1-sSOLbiPqM3r3HH+KKV21rwwViuo= check-error@^1.0.2: version "1.0.2" @@ -1771,21 +1878,6 @@ cheerio@^1.0.0-rc.9: parse5-htmlparser2-tree-adapter "^6.0.1" tslib "^2.2.0" -chokidar@3.5.1: - version "3.5.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" - integrity sha1-7pznu+vSt59J8wR5nVRo4x4U5oo= - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.5.0" - optionalDependencies: - fsevents "~2.3.1" - chokidar@^2.0.0: version "2.1.8" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" @@ -1805,6 +1897,28 @@ chokidar@^2.0.0: optionalDependencies: fsevents "^1.2.7" +chokidar@^3.5.3: + version "3.6.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha1-GXxsxmnvKo3F57TZfuTgksPrDVs= + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chokidar@^4.0.1: + version "4.0.3" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30" + integrity sha1-e+N6TAPJruHs/oYqSiOyxwwgXTA= + dependencies: + readdirp "^4.0.1" + chownr@^1.1.1: version "1.1.4" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/chownr/-/chownr-1.1.4.tgz" @@ -1830,18 +1944,6 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/cli-cursor/-/cli-cursor-3.1.0.tgz" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/cli-width/-/cli-width-3.0.0.tgz" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - cliui@^3.2.0: version "3.2.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/cliui/-/cliui-3.2.0.tgz" @@ -1869,6 +1971,15 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" +cliui@^8.0.1: + version "8.0.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha1-DASwddsCy/5g3I5s8vVIaxo2CKo= + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + clone-buffer@^1.0.0: version "1.0.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/clone-buffer/-/clone-buffer-1.0.0.tgz" @@ -1888,7 +1999,7 @@ clone-stats@^1.0.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/clone-stats/-/clone-stats-1.0.0.tgz" integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= -clone@^2.1.1: +clone@^2.1.1, clone@^2.1.2: version "2.1.2" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/clone/-/clone-2.1.2.tgz" integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= @@ -1970,6 +2081,11 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" +commander@^10.0.1: + version "10.0.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha1-iB7ka0930cHczFgjQzqjmwIsvgY= + commander@^2.12.1, commander@^2.20.0: version "2.20.3" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/commander/-/commander-2.20.3.tgz" @@ -1980,11 +2096,6 @@ commander@^6.2.1: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== -commander@^7.0.0: - version "7.2.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/commander/-/commander-7.2.0.tgz" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - comment-parser@1.4.1: version "1.4.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/comment-parser/-/comment-parser-1.4.1.tgz#bdafead37961ac079be11eb7ec65c4d021eaf9cc" @@ -2027,6 +2138,11 @@ convert-source-map@^1.0.0, convert-source-map@^1.5.0: dependencies: safe-buffer "~5.1.1" +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha1-S1YPZJ/E6RjdCrdc9JYei8iC2Co= + copy-descriptor@^0.1.0: version "0.1.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/copy-descriptor/-/copy-descriptor-0.1.1.tgz" @@ -2061,17 +2177,6 @@ create-require@^1.1.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/create-require/-/create-require-1.1.1.tgz" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cross-spawn@^6.0.5: - version "6.0.6" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/cross-spawn/-/cross-spawn-6.0.6.tgz#30d0efa0712ddb7eb5a76e1e8721bffafa6b5d57" - integrity sha1-MNDvoHEt2361p24ehyG/+vprXVc= - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.6: version "7.0.6" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" @@ -2114,10 +2219,10 @@ d@1, d@^1.0.1: es5-ext "^0.10.50" type "^1.0.1" -dargs@^7.0.0: - version "7.0.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/dargs/-/dargs-7.0.0.tgz" - integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== +dargs@^8.1.0: + version "8.1.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/dargs/-/dargs-8.1.0.tgz#a34859ea509cbce45485e5aa356fef70bfcc7272" + integrity sha1-o0hZ6lCcvORUheWqNW/vcL/McnI= data-view-buffer@^1.0.1: version "1.0.1" @@ -2162,20 +2267,13 @@ debug@3.X, debug@^3.2.7: dependencies: ms "^2.1.1" -debug@4, debug@^4.0.1, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: +debug@4, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -debug@4.3.1: - version "4.3.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/debug/-/debug-4.3.1.tgz" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/debug/-/debug-2.6.9.tgz" @@ -2183,6 +2281,13 @@ debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" +debug@^4.3.1: + version "4.4.3" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" + integrity sha1-xq5DLZvZZiWC/OCHCbA4xY6ePWo= + dependencies: + ms "^2.1.3" + debug@^4.3.5: version "4.3.7" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" @@ -2224,7 +2329,7 @@ deep-extend@^0.6.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/deep-extend/-/deep-extend-0.6.0.tgz" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deep-is@^0.1.3, deep-is@~0.1.3: +deep-is@^0.1.3: version "0.1.4" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/deep-is/-/deep-is-0.1.4.tgz" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== @@ -2333,16 +2438,21 @@ detect-newline@^2.0.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/detect-newline/-/detect-newline-2.1.0.tgz" integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= -diff@5.0.0: - version "5.0.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/diff/-/diff-5.0.0.tgz" - integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== - diff@^4.0.1, diff@^4.0.2: version "4.0.4" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/diff/-/diff-4.0.4.tgz#7a6dbfda325f25f07517e9b518f897c08332e07d" integrity sha1-em2/2jJfJfB1F+m1GPiXwIMy4H0= +diff@^5.2.0: + version "5.2.2" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/diff/-/diff-5.2.2.tgz#0a4742797281d09cfa699b79ea32d27723623bad" + integrity sha1-CkdCeXKB0Jz6aZt56jLSdyNiO60= + +diff@^7.0.0: + version "7.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/diff/-/diff-7.0.0.tgz#3fb34d387cd76d803f6eebea67b921dab0182a9a" + integrity sha1-P7NNOHzXbYA/buvqZ7kh2rAYKpo= + dir-glob@^3.0.1: version "3.0.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/dir-glob/-/dir-glob-3.0.1.tgz" @@ -2418,6 +2528,16 @@ duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" +duplexify@^4.1.1: + version "4.1.3" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/duplexify/-/duplexify-4.1.3.tgz#a07e1c0d0a2c001158563d32592ba58bddb0236f" + integrity sha1-oH4cDQosABFYVj0yWSuli92wI28= + dependencies: + end-of-stream "^1.4.1" + inherits "^2.0.3" + readable-stream "^3.1.1" + stream-shift "^1.0.2" + each-props@^1.3.2: version "1.3.2" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/each-props/-/each-props-1.3.2.tgz" @@ -2426,6 +2546,16 @@ each-props@^1.3.2: is-plain-object "^2.0.1" object.defaults "^1.1.0" +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha1-aWzi7Aqg5uqTo5f/zySqeEDIJ8s= + +easy-transform-stream@^1.0.1: + version "1.0.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/easy-transform-stream/-/easy-transform-stream-1.0.1.tgz#faffdd1839a03d14d76e694bd2e6315551a6a215" + integrity sha1-+v/dGDmgPRTXbmlL0uYxVVGmohU= + ecdsa-sig-formatter@1.0.11: version "1.0.11" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" @@ -2448,6 +2578,11 @@ emoji-regex@^8.0.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha1-hAyIA7DYBH9P8M+WMXazLU7z7XI= + emojis-list@^3.0.0: version "3.0.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/emojis-list/-/emojis-list-3.0.0.tgz" @@ -2742,16 +2877,16 @@ escalade@^3.2.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" integrity sha1-ARo/aYVroYnf+n3I/M6Z0qh5A+U= -escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + eslint-import-resolver-node@^0.3.9: version "0.3.9" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" @@ -2809,7 +2944,7 @@ eslint-plugin-jsdoc@^48.2.8: spdx-expression-parse "^4.0.0" synckit "^0.9.1" -eslint-scope@5.1.1, eslint-scope@^5.0.0, eslint-scope@^5.1.1: +eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/eslint-scope/-/eslint-scope-5.1.1.tgz" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -2817,131 +2952,72 @@ eslint-scope@5.1.1, eslint-scope@^5.0.0, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/eslint-scope/-/eslint-scope-7.1.1.tgz" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha1-3rT5JWM5DzIAaJSvYqItuhxGQj8= dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/eslint-utils/-/eslint-utils-1.4.3.tgz" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/eslint-utils/-/eslint-utils-3.0.0.tgz" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.1.0: - version "1.3.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - eslint-visitor-keys@^3.3.0: version "3.3.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== +eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha1-DNcv6FUOPC6uFWqWpN3c0cisWAA= + eslint-visitor-keys@^4.0.0: version "4.0.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb" integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw== -eslint@^6.0.0: - version "6.8.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/eslint/-/eslint-6.8.0.tgz" - integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^7.0.0" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.3" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" - table "^5.2.3" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -eslint@^8.15.0: - version "8.15.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/eslint/-/eslint-8.15.0.tgz" - integrity sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA== - dependencies: - "@eslint/eslintrc" "^1.2.3" - "@humanwhocodes/config-array" "^0.9.2" - ajv "^6.10.0" +eslint@8, eslint@^8.42.0: + version "8.57.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" + integrity sha1-ffEJZUq6fju+XI6uUzxeRh08bKk= + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.1" + "@humanwhocodes/config-array" "^0.13.0" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.3.2" doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.3.2" - esquery "^1.4.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^6.0.1" - globals "^13.6.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" ignore "^5.2.0" - import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" + is-path-inside "^3.0.3" js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" - regexpp "^3.2.0" + optionator "^0.9.3" strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" text-table "^0.2.0" - v8-compile-cache "^2.0.3" esniff@^2.0.1: version "2.0.1" @@ -2962,28 +3038,19 @@ espree@^10.1.0: acorn-jsx "^5.3.2" eslint-visitor-keys "^4.0.0" -espree@^6.1.2: - version "6.2.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/espree/-/espree-6.2.1.tgz" - integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== - dependencies: - acorn "^7.1.1" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" - -espree@^9.3.2: - version "9.3.2" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/espree/-/espree-9.3.2.tgz" - integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA== +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha1-oqF7jkNGkKVDLy+AGM5x0zGkjG8= dependencies: - acorn "^8.7.1" + acorn "^8.9.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" + eslint-visitor-keys "^3.4.1" -esquery@^1.0.1, esquery@^1.4.0: - version "1.4.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/esquery/-/esquery-1.4.0.tgz" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== +esquery@^1.4.2: + version "1.7.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/esquery/-/esquery-1.7.0.tgz#08d048f261f0ddedb5bae95f46809463d9c9496d" + integrity sha1-CNBI8mHw3e21uulfRoCUY9nJSW0= dependencies: estraverse "^5.1.0" @@ -3050,25 +3117,32 @@ event-stream@^4.0.1: stream-combiner "^0.2.2" through "^2.3.8" +events-universal@^1.0.0: + version "1.0.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/events-universal/-/events-universal-1.0.1.tgz#b56a84fd611b6610e0a2d0f09f80fdf931e2dfe6" + integrity sha1-tWqE/WEbZhDgotDwn4D9+THi3+Y= + dependencies: + bare-events "^2.7.0" + events@^3.0.0, events@^3.2.0: version "3.3.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -execa@^5.0.0: - version "5.1.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/execa/-/execa-5.1.1.tgz" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== +execa@^8.0.1: + version "8.0.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" + integrity sha1-UfallDtYD5Y8PKnGMheW24zDm4w= dependencies: cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" + get-stream "^8.0.1" + human-signals "^5.0.0" + is-stream "^3.0.0" merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^4.1.0" + strip-final-newline "^3.0.0" expand-brackets@^2.1.4: version "2.1.4" @@ -3122,15 +3196,6 @@ extend@^3.0.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/extend/-/extend-3.0.2.tgz" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^3.0.3: - version "3.1.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/external-editor/-/external-editor-3.1.0.tgz" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - extglob@^2.0.4: version "2.0.4" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/extglob/-/extglob-2.0.4.tgz" @@ -3155,11 +3220,23 @@ fancy-log@^1.3.2, fancy-log@^1.3.3: parse-node-version "^1.0.0" time-stamp "^1.0.0" +fancy-log@^2.0.0: + version "2.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/fancy-log/-/fancy-log-2.0.0.tgz#cad207b8396d69ae4796d74d17dff5f68b2f7343" + integrity sha1-ytIHuDltaa5HltdNF9/19osvc0M= + dependencies: + color-support "^1.1.3" + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-fifo@^1.3.2: + version "1.3.2" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" + integrity sha1-KG4x3pbrltOKl4mYFXQLoqTzZAw= + fast-glob@^3.2.9: version "3.2.11" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/fast-glob/-/fast-glob-3.2.11.tgz" @@ -3181,7 +3258,7 @@ fast-levenshtein@^1.0.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz" integrity sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk= -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -3196,6 +3273,13 @@ fastest-levenshtein@^1.0.12: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz" integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== +fastq@^1.13.0: + version "1.20.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/fastq/-/fastq-1.20.1.tgz#ca750a10dc925bc8b18839fd203e3ef4b3ced675" + integrity sha1-ynUKENySW8ixiDn9ID4+9LPO1nU= + dependencies: + reusify "^1.0.4" + fastq@^1.6.0: version "1.13.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/fastq/-/fastq-1.13.0.tgz" @@ -3210,20 +3294,6 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" -figures@^3.0.0: - version "3.2.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/figures/-/figures-3.2.0.tgz" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/file-entry-cache/-/file-entry-cache-5.0.1.tgz" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" - file-entry-cache@^6.0.1: version "6.0.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/file-entry-cache/-/file-entry-cache-6.0.1.tgz" @@ -3243,14 +3313,6 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" -find-up@5.0.0, find-up@^5.0.0: - version "5.0.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/find-up/-/find-up-5.0.0.tgz" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - find-up@^1.0.0: version "1.1.2" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/find-up/-/find-up-1.1.2.tgz" @@ -3274,6 +3336,14 @@ find-up@^4.0.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + find-versions@^4.0.0: version "4.0.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/find-versions/-/find-versions-4.0.0.tgz" @@ -3317,15 +3387,6 @@ flagged-respawn@^1.0.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/flagged-respawn/-/flagged-respawn-1.0.1.tgz" integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/flat-cache/-/flat-cache-2.0.1.tgz" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - flat-cache@^3.0.4: version "3.0.4" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/flat-cache/-/flat-cache-3.0.4.tgz" @@ -3339,15 +3400,10 @@ flat@^5.0.2: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/flat/-/flat-5.0.2.tgz" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -flatted@^2.0.0: - version "2.0.2" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/flatted/-/flatted-2.0.2.tgz" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== - flatted@^3.1.0: - version "3.2.5" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/flatted/-/flatted-3.2.5.tgz" - integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== + version "3.4.2" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/flatted/-/flatted-3.4.2.tgz#f5c23c107f0f37de8dbdf24f13722b3b98d52726" + integrity sha1-9cI8EH8PN96NvfJPE3IrO5jVJyY= flush-write-stream@^1.0.2: version "1.1.1" @@ -3376,7 +3432,7 @@ for-own@^1.0.0: dependencies: for-in "^1.0.1" -foreground-child@^3.3.1: +foreground-child@^3.1.0, foreground-child@^3.3.1: version "3.3.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" integrity sha1-Mujp7Rtoo0l777msK2rfkqY4V28= @@ -3384,6 +3440,11 @@ foreground-child@^3.3.1: cross-spawn "^7.0.6" signal-exit "^4.0.1" +fork-stream@^0.0.4: + version "0.0.4" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/fork-stream/-/fork-stream-0.0.4.tgz#db849fce77f6708a5f8f386ae533a0907b54ae70" + integrity sha1-24Sfznf2cIpfjzhq5TOgkHtUrnA= + form-data@^4.0.0: version "4.0.4" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/form-data/-/form-data-4.0.4.tgz#784cdcce0669a9d68e94d11ac4eea98088edd2c4" @@ -3430,6 +3491,14 @@ fs-mkdirp-stream@^1.0.0: graceful-fs "^4.1.11" through2 "^2.0.3" +fs-mkdirp-stream@^2.0.1: + version "2.0.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/fs-mkdirp-stream/-/fs-mkdirp-stream-2.0.1.tgz#1e82575c4023929ad35cf69269f84f1a8c973aa7" + integrity sha1-HoJXXEAjkprTXPaSafhPGoyXOqc= + dependencies: + graceful-fs "^4.2.8" + streamx "^2.12.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/fs.realpath/-/fs.realpath-1.0.0.tgz" @@ -3443,7 +3512,7 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@~2.3.1: +fsevents@~2.3.2: version "2.3.3" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha1-ysZAd4XQNnWipeGlMFxpezR9kNY= @@ -3468,11 +3537,6 @@ function.prototype.name@^1.1.6: es-abstract "^1.22.1" functions-have-names "^1.2.3" -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - functions-have-names@^1.2.3: version "1.2.3" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/functions-have-names/-/functions-have-names-1.2.3.tgz" @@ -3561,10 +3625,10 @@ get-proto@^1.0.1: dunder-proto "^1.0.1" es-object-atoms "^1.0.0" -get-stream@^6.0.0: - version "6.0.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/get-stream/-/get-stream-6.0.1.tgz" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== +get-stream@^8.0.1: + version "8.0.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" + integrity sha1-3vnf1xdCzXdUp3Ye1DdJon0C7KI= get-symbol-description@^1.0.0: version "1.0.0" @@ -3598,7 +3662,7 @@ github-from-package@0.0.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/github-from-package/-/github-from-package-0.0.0.tgz" integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= -glob-parent@^3.1.0, glob-parent@^5.0.0, glob-parent@^5.1.2, glob-parent@^6.0.1, glob-parent@^6.0.2, glob-parent@~5.1.0: +glob-parent@^3.1.0, glob-parent@^5.1.2, glob-parent@^6.0.2, glob-parent@~5.1.2: version "6.0.2" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha1-bSN9mQg5UMeSkPJMdkKj3poo+eM= @@ -3621,6 +3685,20 @@ glob-stream@^6.1.0: to-absolute-glob "^2.0.0" unique-stream "^2.0.2" +glob-stream@^8.0.3: + version "8.0.3" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/glob-stream/-/glob-stream-8.0.3.tgz#87e63153aadf05bd0207cde1a253ee39d91458b9" + integrity sha1-h+YxU6rfBb0CB83holPuOdkUWLk= + dependencies: + "@gulpjs/to-absolute-glob" "^4.0.0" + anymatch "^3.1.3" + fastq "^1.13.0" + glob-parent "^6.0.2" + is-glob "^4.0.3" + is-negated-glob "^1.0.0" + normalize-path "^3.0.0" + streamx "^2.12.5" + glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" @@ -3639,17 +3717,17 @@ glob-watcher@^5.0.3: normalize-path "^3.0.0" object.defaults "^1.1.0" -glob@7.1.6: - version "7.1.6" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/glob/-/glob-7.1.6.tgz" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@^10.4.5: + version "10.5.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/glob/-/glob-10.5.0.tgz#8ec0355919cd3338c28428a23d4f24ecc5fe738c" + integrity sha1-jsA1WRnNMzjChCiiPU8k7MX+c4w= dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" glob@^11.0.0: version "11.1.0" @@ -3675,6 +3753,17 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.1.0: + version "8.1.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha1-04j2Vlk+9wjuPjRkD9+5mp/Rwz4= + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + global-modules@^1.0.0: version "1.0.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/global-modules/-/global-modules-1.0.0.tgz" @@ -3695,17 +3784,10 @@ global-prefix@^1.0.1: is-windows "^1.0.1" which "^1.2.14" -globals@^12.1.0: - version "12.4.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/globals/-/globals-12.4.0.tgz" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== - dependencies: - type-fest "^0.8.1" - -globals@^13.6.0, globals@^13.9.0: - version "13.15.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/globals/-/globals-13.15.0.tgz" - integrity sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog== +globals@^13.19.0: + version "13.24.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha1-hDKhnXjODB6DOUnDats0VAC7EXE= dependencies: type-fest "^0.20.2" @@ -3747,15 +3829,15 @@ gopd@^1.2.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha1-ifVrghe9vIgCvSmd9tfxCB1+UaE= -graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4: +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.8: version "4.2.11" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha1-QYPk6L8Iu24Fu7L30uDI9xLKQOM= -growl@1.10.5: - version "1.10.5" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/growl/-/growl-1.10.5.tgz" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha1-+y8dVeDjoYSa7/yQxPoN1ToOZsY= gulp-cli@^2.2.0: version "2.3.0" @@ -3781,14 +3863,19 @@ gulp-cli@^2.2.0: v8flags "^3.2.0" yargs "^7.1.0" -gulp-eslint@^6.0.0: - version "6.0.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/gulp-eslint/-/gulp-eslint-6.0.0.tgz" - integrity sha512-dCVPSh1sA+UVhn7JSQt7KEb4An2sQNbOdB3PA8UCfxsoPlAKjJHxYHGXdXC7eb+V1FAnilSFFqslPrq037l1ig== +gulp-eslint-new@^1.9.1: + version "1.9.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/gulp-eslint-new/-/gulp-eslint-new-1.9.1.tgz#22584e2f5972bfde5d08cf44fbcd170bc1c7f7e0" + integrity sha1-IlhOL1lyv95dCM9E+80XC8HH9+A= dependencies: - eslint "^6.0.0" - fancy-log "^1.3.2" - plugin-error "^1.0.1" + "@types/eslint" "^8.56.0" + "@types/node" ">=12" + eslint "8" + fancy-log "^2.0.0" + plugin-error "^2.0.1" + semver "^7.6.0" + ternary-stream "^3.0.0" + vinyl-fs "^4.0.0" gulp-filter@^6.0.0: version "6.0.0" @@ -3799,17 +3886,25 @@ gulp-filter@^6.0.0: plugin-error "^1.0.1" streamfilter "^3.0.0" -gulp-mocha@^8.0.0: - version "8.0.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/gulp-mocha/-/gulp-mocha-8.0.0.tgz" - integrity sha512-FdbBydfzszaES/gXfwD6RFq1yJTj4Z6328R1yqsmhf+t7hW2aj9ZD9Hz8boQShjZ9J8/w6tQBM5mePb8K2pbqA== +gulp-mocha@^10.0.1: + version "10.0.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/gulp-mocha/-/gulp-mocha-10.0.1.tgz#b8d9959f4278b63b4064a3d7092d2bfe763ebc9b" + integrity sha1-uNmVn0J4tjtAZKPXCS0r/nY+vJs= dependencies: - dargs "^7.0.0" - execa "^5.0.0" - mocha "^8.3.0" - plugin-error "^1.0.1" - supports-color "^8.1.1" - through2 "^4.0.2" + dargs "^8.1.0" + execa "^8.0.1" + gulp-plugin-extras "^0.3.0" + mocha "^10.2.0" + supports-color "^9.4.0" + +gulp-plugin-extras@^0.3.0: + version "0.3.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/gulp-plugin-extras/-/gulp-plugin-extras-0.3.0.tgz#ad2c15eb7d7153a75556c59ee81d84693ec42330" + integrity sha1-rSwV631xU6dVVsWe6B2EaT7EIzA= + dependencies: + "@types/vinyl" "^2.0.9" + chalk "^5.3.0" + easy-transform-stream "^1.0.1" gulp-sourcemaps@^3.0.0: version "3.0.0" @@ -3857,18 +3952,6 @@ gulplog@^1.0.0: dependencies: glogg "^1.0.0" -handlebars@^4.7.7: - version "4.7.7" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/handlebars/-/handlebars-4.7.7.tgz" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.0" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/has-bigints/-/has-bigints-1.0.2.tgz" @@ -3996,10 +4079,10 @@ hasown@^2.0.1, hasown@^2.0.2: dependencies: function-bind "^1.1.2" -he@1.2.0: +he@^1.2.0: version "1.2.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/he/-/he-1.2.0.tgz" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha1-hK5l+n6vsWX922FWauFLrwVmTw8= homedir-polyfill@^1.0.1: version "1.0.3" @@ -4058,10 +4141,10 @@ https-proxy-agent@^7.0.0: agent-base "^7.1.2" debug "4" -human-signals@^2.1.0: - version "2.1.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/human-signals/-/human-signals-2.1.0.tgz" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +human-signals@^5.0.0: + version "5.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" + integrity sha1-QmZaKE+a4NreO6QevDfrS4UvOig= husky@^4.3.8: version "4.3.8" @@ -4079,30 +4162,25 @@ husky@^4.3.8: slash "^3.0.0" which-pm-runs "^1.0.0" -iconv-lite@^0.4.19, iconv-lite@^0.4.24: +iconv-lite@^0.4.19: version "0.4.24" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/iconv-lite/-/iconv-lite-0.4.24.tgz" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.6.2: +iconv-lite@^0.6.2, iconv-lite@^0.6.3: version "0.6.3" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/iconv-lite/-/iconv-lite-0.6.3.tgz" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -ieee754@^1.1.13: +ieee754@^1.1.13, ieee754@^1.2.1: version "1.2.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ieee754/-/ieee754-1.2.1.tgz" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^4.0.6: - version "4.0.6" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ignore/-/ignore-4.0.6.tgz" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - ignore@^5.2.0: version "5.2.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ignore/-/ignore-5.2.0.tgz" @@ -4113,7 +4191,7 @@ immediate@~3.0.5: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/immediate/-/immediate-3.0.6.tgz" integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== -import-fresh@^3.0.0, import-fresh@^3.2.1: +import-fresh@^3.2.1: version "3.3.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/import-fresh/-/import-fresh-3.3.0.tgz" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -4152,25 +4230,6 @@ ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ini/-/ini-1.3.8.tgz" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -inquirer@^7.0.0: - version "7.3.3" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/inquirer/-/inquirer-7.3.3.tgz" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.19" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.6.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - internal-slot@^1.0.5: version "1.0.6" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/internal-slot/-/internal-slot-1.0.6.tgz" @@ -4194,10 +4253,10 @@ interpret@^1.4.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/interpret/-/interpret-1.4.0.tgz" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -interpret@^2.2.0: - version "2.2.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/interpret/-/interpret-2.2.0.tgz" - integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== +interpret@^3.1.1: + version "3.1.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha1-W+DO7WfKecbEvFzw1+6EPc6hEMQ= invert-kv@^1.0.0: version "1.0.0" @@ -4299,6 +4358,13 @@ is-core-module@^2.13.0, is-core-module@^2.15.1: dependencies: hasown "^2.0.2" +is-core-module@^2.16.1: + version "2.16.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha1-KpiAGoSfQ+Kt1kT7trxiKbGaTvQ= + dependencies: + hasown "^2.0.2" + is-core-module@^2.8.1: version "2.9.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/is-core-module/-/is-core-module-2.9.0.tgz" @@ -4444,6 +4510,11 @@ is-number@^7.0.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha1-0jE2LlOgf/Kw4Op/7QSRYf/RYoM= + is-plain-obj@^2.1.0: version "2.1.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/is-plain-obj/-/is-plain-obj-2.1.0.tgz" @@ -4495,10 +4566,10 @@ is-shared-array-buffer@^1.0.3: dependencies: call-bind "^1.0.7" -is-stream@^2.0.0: - version "2.0.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/is-stream/-/is-stream-2.0.1.tgz" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== +is-stream@^3.0.0: + version "3.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha1-5r/XqmvvafT0cs6btoHj5XtDGaw= is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" @@ -4535,6 +4606,11 @@ is-unc-path@^1.0.0: dependencies: unc-path-regex "^0.1.2" +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha1-PybHaoCVk7Ur+i7LVxDtJ3m1Iqc= + is-utf8@^0.2.0, is-utf8@^0.2.1: version "0.2.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/is-utf8/-/is-utf8-0.2.1.tgz" @@ -4601,6 +4677,15 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/isobject/-/isobject-3.0.1.tgz" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha1-iDOp2Jq0rN5hiJQr0cU7Y5DtWoo= + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + jackspeak@^4.1.1: version "4.2.3" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/jackspeak/-/jackspeak-4.2.3.tgz#27ef80f33b93412037c3bea4f8eddf80e1931483" @@ -4622,7 +4707,7 @@ js-tokens@^4.0.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@4.0.0, js-yaml@^3.13.1, js-yaml@^4.1.0, js-yaml@^4.1.1: +js-yaml@^3.13.1, js-yaml@^4.1.0, js-yaml@^4.1.1: version "4.1.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b" integrity sha1-hUwpJGdwW2mUduGi3swMijRYgGs= @@ -4804,19 +4889,16 @@ lead@^1.0.0: dependencies: flush-write-stream "^1.0.2" +lead@^4.0.0: + version "4.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/lead/-/lead-4.0.0.tgz#5317a49effb0e7ec3a0c8fb9c1b24fb716aab939" + integrity sha1-Uxeknv+w5+w6DI+5wbJPtxaquTk= + leven@^3.1.0: version "3.1.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/leven/-/leven-3.1.0.tgz" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/levn/-/levn-0.3.0.tgz" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - levn@^0.4.1: version "0.4.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/levn/-/levn-0.4.1.tgz" @@ -4950,17 +5032,18 @@ lodash.once@^4.0.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== -lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.23: - version "4.17.23" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/lodash/-/lodash-4.17.23.tgz#f113b0378386103be4f6893388c73d0bde7f2c5a" - integrity sha1-8ROwN4OGEDvk9okziMc9C95/LFo= +lodash@^4.18.1: + version "4.18.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/lodash/-/lodash-4.18.1.tgz#ff2b66c1f6326d59513de2407bf881439812771c" + integrity sha1-/ytmwfYybVlRPeJAe/iBQ5gSdxw= -log-symbols@4.0.0: - version "4.0.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/log-symbols/-/log-symbols-4.0.0.tgz" - integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha1-P727lbRoOsn8eFER55LlWNSr1QM= dependencies: - chalk "^4.0.0" + chalk "^4.1.0" + is-unicode-supported "^0.1.0" loupe@^2.3.1: version "2.3.4" @@ -4969,6 +5052,11 @@ loupe@^2.3.1: dependencies: get-func-name "^2.0.0" +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha1-QQ/IoXtw5ZgBPfJXwkRrfzOD8Rk= + lru-cache@^11.0.0: version "11.0.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/lru-cache/-/lru-cache-11.0.1.tgz#3a732fbfedb82c5ba7bca6564ad3f42afcb6e147" @@ -5125,35 +5213,54 @@ mime@^1.3.4: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/mime/-/mime-1.6.0.tgz" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/mimic-fn/-/mimic-fn-2.1.0.tgz" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha1-YKkFUNXLCyOcymXYk7GlOymHHsw= mimic-response@^3.1.0: version "3.1.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/mimic-response/-/mimic-response-3.1.0.tgz" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== -minimatch@3.0.4, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2, minimatch@^3.1.5: +minimatch@^10.1.1: + version "10.2.4" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/minimatch/-/minimatch-10.2.4.tgz#465b3accbd0218b8281f5301e27cedc697f96fde" + integrity sha1-Rls6zL0CGLgoH1MB4nztxpf5b94= + dependencies: + brace-expansion "^5.0.2" + +minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2, minimatch@^3.1.5, minimatch@^5.1.6, minimatch@^9.0.5: version "3.1.5" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/minimatch/-/minimatch-3.1.5.tgz#580c88f8d5445f2bd6aa8f3cadefa0de79fbd69e" integrity sha1-WAyI+NVEXyvWqo88re+g3nn71p4= dependencies: brace-expansion "^1.1.7" -minimatch@^10.1.1: - version "10.2.4" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/minimatch/-/minimatch-10.2.4.tgz#465b3accbd0218b8281f5301e27cedc697f96fde" - integrity sha1-Rls6zL0CGLgoH1MB4nztxpf5b94= +minimatch@^5.0.1: + version "5.1.9" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/minimatch/-/minimatch-5.1.9.tgz#1293ef15db0098b394540e8f9f744f9fda8dee4b" + integrity sha1-EpPvFdsAmLOUVA6Pn3RPn9qN7ks= dependencies: - brace-expansion "^5.0.2" + brace-expansion "^2.0.1" + +minimatch@^9.0.4: + version "9.0.9" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/minimatch/-/minimatch-9.0.9.tgz#9b0cb9fcb78087f6fd7eababe2511c4d3d60574e" + integrity sha1-mwy5/LeAh/b9fqur4lEcTT1gV04= + dependencies: + brace-expansion "^2.0.2" minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6: version "1.2.6" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/minimist/-/minimist-1.2.6.tgz" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": + version "7.1.3" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/minipass/-/minipass-7.1.3.tgz#79389b4eb1bb2d003a9bba87d492f2bd37bdc65b" + integrity sha1-eTibTrG7LQA6m7qH1JLyvTe9xls= + minipass@^7.1.2: version "7.1.2" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" @@ -5172,43 +5279,65 @@ mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp@^0.5.1, mkdirp@^0.5.3: +mkdirp@^0.5.3: version "0.5.6" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/mkdirp/-/mkdirp-0.5.6.tgz" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: minimist "^1.2.6" -mocha@^8.3.0, mocha@^8.3.2: - version "8.4.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/mocha/-/mocha-8.4.0.tgz" - integrity sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ== - dependencies: - "@ungap/promise-all-settled" "1.1.2" - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.5.1" - debug "4.3.1" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "7.1.6" - growl "1.10.5" - he "1.2.0" - js-yaml "4.0.0" - log-symbols "4.0.0" - minimatch "3.0.4" - ms "2.1.3" - nanoid "3.1.20" - serialize-javascript "5.0.1" - strip-json-comments "3.1.1" - supports-color "8.1.1" - which "2.0.2" - wide-align "1.1.3" - workerpool "6.1.0" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" +mocha@^10.2.0: + version "10.8.2" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/mocha/-/mocha-10.8.2.tgz#8d8342d016ed411b12a429eb731b825f961afb96" + integrity sha1-jYNC0BbtQRsSpCnrcxuCX5Ya+5Y= + dependencies: + ansi-colors "^4.1.3" + browser-stdout "^1.3.1" + chokidar "^3.5.3" + debug "^4.3.5" + diff "^5.2.0" + escape-string-regexp "^4.0.0" + find-up "^5.0.0" + glob "^8.1.0" + he "^1.2.0" + js-yaml "^4.1.0" + log-symbols "^4.1.0" + minimatch "^5.1.6" + ms "^2.1.3" + serialize-javascript "^6.0.2" + strip-json-comments "^3.1.1" + supports-color "^8.1.1" + workerpool "^6.5.1" + yargs "^16.2.0" + yargs-parser "^20.2.9" + yargs-unparser "^2.0.0" + +mocha@^11.7.5: + version "11.7.5" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/mocha/-/mocha-11.7.5.tgz#58f5bbfa5e0211ce7e5ee6128107cefc2515a627" + integrity sha1-WPW7+l4CEc5+XuYSgQfO/CUVpic= + dependencies: + browser-stdout "^1.3.1" + chokidar "^4.0.1" + debug "^4.3.5" + diff "^7.0.0" + escape-string-regexp "^4.0.0" + find-up "^5.0.0" + glob "^10.4.5" + he "^1.2.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + log-symbols "^4.1.0" + minimatch "^9.0.5" + ms "^2.1.3" + picocolors "^1.1.1" + serialize-javascript "^6.0.2" + strip-json-comments "^3.1.1" + supports-color "^8.1.1" + workerpool "^9.2.0" + yargs "^17.7.2" + yargs-parser "^21.1.1" + yargs-unparser "^2.0.0" module-alias@^2.2.2: version "2.2.2" @@ -5225,7 +5354,7 @@ ms@2.1.2: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.1.1, ms@^2.1.3: +ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -5246,7 +5375,7 @@ mute-stdout@^1.0.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/mute-stdout/-/mute-stdout-1.0.1.tgz" integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== -mute-stream@0.0.8, mute-stream@~0.0.4: +mute-stream@~0.0.4: version "0.0.8" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/mute-stream/-/mute-stream-0.0.8.tgz" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== @@ -5256,7 +5385,7 @@ nan@^2.12.1: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/nan/-/nan-2.25.0.tgz#937ed345e63d9481362a7942d49c4860d27eeabd" integrity sha1-k37TReY9lIE2KnlC1JxIYNJ+6r0= -nanoid@3.1.20, nanoid@^3.1.31, nanoid@^3.3.7: +nanoid@^3.1.31, nanoid@^3.3.7: version "3.3.11" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" integrity sha1-T08RLO++MDIC8hmYOBKJNiZtGFs= @@ -5283,12 +5412,17 @@ napi-build-utils@^1.0.1: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/napi-build-utils/-/napi-build-utils-1.0.2.tgz" integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha1-F7CVgZiJef3a/gIB6TG6kzyWy7Q= + natural-compare@^1.4.0: version "1.4.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -neo-async@^2.6.0, neo-async@^2.6.2: +neo-async@^2.6.2: version "2.6.2" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/neo-async/-/neo-async-2.6.2.tgz" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -5298,11 +5432,6 @@ next-tick@1, next-tick@^1.1.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/next-tick/-/next-tick-1.1.0.tgz" integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== -nice-try@^1.0.4: - version "1.0.5" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/nice-try/-/nice-try-1.0.5.tgz" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - nise@^4.0.4: version "4.1.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/nise/-/nise-4.1.0.tgz" @@ -5356,6 +5485,11 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" +normalize-path@3.0.0, normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/normalize-path/-/normalize-path-2.1.1.tgz" @@ -5363,11 +5497,6 @@ normalize-path@^2.0.1, normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/normalize-path/-/normalize-path-3.0.0.tgz" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - now-and-later@^2.0.0: version "2.0.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/now-and-later/-/now-and-later-2.0.1.tgz" @@ -5375,12 +5504,19 @@ now-and-later@^2.0.0: dependencies: once "^1.3.2" -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/npm-run-path/-/npm-run-path-4.0.1.tgz" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== +now-and-later@^3.0.0: + version "3.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/now-and-later/-/now-and-later-3.0.0.tgz#cdc045dc5b894b35793cf276cc3206077bb7302d" + integrity sha1-zcBF3FuJSzV5PPJ2zDIGB3u3MC0= dependencies: - path-key "^3.0.0" + once "^1.4.0" + +npm-run-path@^5.1.0: + version "5.3.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" + integrity sha1-4jNT0Ou5MX8XTpNBfkpNgtAknp8= + dependencies: + path-key "^4.0.0" npmlog@^4.0.1: version "4.1.2" @@ -5533,12 +5669,12 @@ once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: dependencies: wrappy "1" -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/onetime/-/onetime-5.1.2.tgz" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== +onetime@^6.0.0: + version "6.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha1-fCTBjtH9LpvKS9JoBqM2E8d9NLQ= dependencies: - mimic-fn "^2.1.0" + mimic-fn "^4.0.0" open@^7.4.1: version "7.4.2" @@ -5562,29 +5698,17 @@ opencollective-postinstall@^2.0.2: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz" integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== -optionator@^0.8.3: - version "0.8.3" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/optionator/-/optionator-0.8.3.tgz" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/optionator/-/optionator-0.9.1.tgz" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +optionator@^0.9.3: + version "0.9.4" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha1-fqHBpdkddk+yghOciP4R4YKjpzQ= dependencies: deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" + word-wrap "^1.2.5" ordered-read-streams@^1.0.0: version "1.0.1" @@ -5755,16 +5879,16 @@ path-is-absolute@^1.0.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-key@^2.0.1: - version "2.0.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/path-key/-/path-key-2.0.1.tgz" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.0.0, path-key@^3.1.0: +path-key@^3.1.0: version "3.1.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-key@^4.0.0: + version "4.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha1-KVWI3DruZBVPh3rbnXgLgcVUvxg= + path-parse@^1.0.7: version "1.0.7" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/path-parse/-/path-parse-1.0.7.tgz" @@ -5782,6 +5906,14 @@ path-root@^0.1.1: dependencies: path-root-regex "^0.1.0" +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha1-eWCmaIiFlKByCxKpEdGnQqufEdI= + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry@^2.0.0: version "2.0.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/path-scurry/-/path-scurry-2.0.0.tgz#9f052289f23ad8bf9397a2a0425e7b8615c58580" @@ -5839,9 +5971,9 @@ picocolors@^1.1.1: integrity sha1-PTIa8+q5ObCDyPkpodEs2oHCa2s= picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: - version "2.3.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/picomatch/-/picomatch-2.3.1.tgz" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + version "2.3.2" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/picomatch/-/picomatch-2.3.2.tgz#5a942915e26b372dc0f0e6753149a16e6b1c5601" + integrity sha1-WpQpFeJrNy3A8OZ1MUmhbmscVgE= pify@^2.0.0: version "2.3.0" @@ -5891,6 +6023,13 @@ plugin-error@^1.0.1: arr-union "^3.1.0" extend-shallow "^3.0.2" +plugin-error@^2.0.1: + version "2.0.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/plugin-error/-/plugin-error-2.0.1.tgz#f2ac92bac8c85e3e23492d76d0c3ca12f30eb00b" + integrity sha1-8qySusjIXj4jSS120MPKEvMOsAs= + dependencies: + ansi-colors "^1.0.1" + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/posix-character-classes/-/posix-character-classes-0.1.1.tgz" @@ -5934,11 +6073,6 @@ prelude-ls@^1.2.1: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/prelude-ls/-/prelude-ls-1.2.1.tgz" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/prelude-ls/-/prelude-ls-1.1.2.tgz" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - pretty-hrtime@^1.0.0: version "1.0.3" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz" @@ -5949,11 +6083,6 @@ process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -progress@^2.0.0: - version "2.0.3" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/progress/-/progress-2.0.3.tgz" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - prr@~1.0.1: version "1.0.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/prr/-/prr-1.0.1.tgz" @@ -6006,13 +6135,6 @@ queue-microtask@^1.2.2: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -randombytes@^2.1.0: - version "2.1.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/randombytes/-/randombytes-2.1.0.tgz" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - rc@^1.2.7: version "1.2.8" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/rc/-/rc-1.2.8.tgz" @@ -6047,7 +6169,7 @@ read@^1.0.7: dependencies: mute-stream "~0.0.4" -"readable-stream@2 || 3", readable-stream@3, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0: +"readable-stream@2 || 3", readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0: version "3.6.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/readable-stream/-/readable-stream-3.6.0.tgz" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -6091,10 +6213,15 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" -readdirp@~3.5.0: - version "3.5.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha1-m6dMAZsV02UnjS6Ru4xI17TULJ4= +readdirp@^4.0.1: + version "4.1.2" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d" + integrity sha1-64WAFDX78qfuWPGeCSGwaPxplI0= + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha1-dKNwvYVxFuJFspzJc0DNQxoCpsc= dependencies: picomatch "^2.2.1" @@ -6105,12 +6232,12 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" -rechoir@^0.7.0: - version "0.7.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/rechoir/-/rechoir-0.7.1.tgz" - integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== +rechoir@^0.8.0: + version "0.8.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha1-Sfhm4NMhRhQto62PDv81KzIV/yI= dependencies: - resolve "^1.9.0" + resolve "^1.20.0" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -6139,16 +6266,6 @@ regexp.prototype.flags@^1.5.2: es-errors "^1.3.0" set-function-name "^2.0.1" -regexpp@^2.0.1: - version "2.0.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/regexpp/-/regexpp-2.0.1.tgz" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -regexpp@^3.2.0: - version "3.2.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/regexpp/-/regexpp-3.2.0.tgz" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - remove-bom-buffer@^3.0.0: version "3.0.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz" @@ -6176,6 +6293,11 @@ replace-ext@^1.0.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/replace-ext/-/replace-ext-1.0.1.tgz" integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw== +replace-ext@^2.0.0: + version "2.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/replace-ext/-/replace-ext-2.0.0.tgz#9471c213d22e1bcc26717cd6e50881d88f812b06" + integrity sha1-lHHCE9IuG8wmcXzW5QiB2I+BKwY= + replace-homedir@^1.0.0: version "1.0.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/replace-homedir/-/replace-homedir-1.0.0.tgz" @@ -6237,12 +6359,19 @@ resolve-options@^1.1.0: dependencies: value-or-function "^3.0.0" +resolve-options@^2.0.0: + version "2.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/resolve-options/-/resolve-options-2.0.0.tgz#a1a57a9949db549dd075de3f5550675f02f1e4c5" + integrity sha1-oaV6mUnbVJ3Qdd4/VVBnXwLx5MU= + dependencies: + value-or-function "^4.0.0" + resolve-url@^0.2.1: version "0.2.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/resolve-url/-/resolve-url-0.2.1.tgz" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.9.0: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0: version "1.22.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/resolve/-/resolve-1.22.0.tgz" integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== @@ -6251,6 +6380,15 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0, path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.20.0: + version "1.22.11" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262" + integrity sha1-qthXzh/7i/qbCxrCnxFWOD9owmI= + dependencies: + is-core-module "^2.16.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + resolve@^1.22.4: version "1.22.8" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" @@ -6260,14 +6398,6 @@ resolve@^1.22.4: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/restore-cursor/-/restore-cursor-3.1.0.tgz" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - ret@~0.1.10: version "0.1.15" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ret/-/ret-0.1.15.tgz" @@ -6278,13 +6408,6 @@ reusify@^1.0.4: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/reusify/-/reusify-1.0.4.tgz" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@2.6.3: - version "2.6.3" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/rimraf/-/rimraf-2.6.3.tgz" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - rimraf@^3.0.2: version "3.0.2" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/rimraf/-/rimraf-3.0.2.tgz" @@ -6292,11 +6415,6 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -run-async@^2.4.0: - version "2.4.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/run-async/-/run-async-2.4.1.tgz" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - run-parallel@^1.1.9: version "1.2.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/run-parallel/-/run-parallel-1.2.0.tgz" @@ -6304,13 +6422,6 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs@^6.6.0: - version "6.6.7" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/rxjs/-/rxjs-6.6.7.tgz" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - safe-array-concat@^1.0.1: version "1.1.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/safe-array-concat/-/safe-array-concat-1.1.0.tgz" @@ -6412,12 +6523,12 @@ semver-regex@^3.1.2: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/semver-regex/-/semver-regex-3.1.4.tgz" integrity sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA== -"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0, semver@^5.5.0: +"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0: version "5.7.2" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/semver/-/semver-5.7.2.tgz" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.1.2, semver@^6.3.1: +semver@^6.3.1: version "6.3.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== @@ -6434,19 +6545,15 @@ semver@^7.5.4, semver@^7.6.3: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== -serialize-javascript@5.0.1: - version "5.0.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/serialize-javascript/-/serialize-javascript-5.0.1.tgz" - integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== - dependencies: - randombytes "^2.1.0" +semver@^7.6.0: + version "7.7.4" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" + integrity sha1-KEZONgYOmR+noR0CedLT87V6foo= -serialize-javascript@^6.0.2: - version "6.0.2" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" - integrity sha1-3voeBVyDv21Z6oBdjahiJU62psI= - dependencies: - randombytes "^2.1.0" +serialize-javascript@^6.0.2, serialize-javascript@^7.0.4: + version "7.0.4" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/serialize-javascript/-/serialize-javascript-7.0.4.tgz#c517735bd5b7631dd1fc191ee19cbb713ff8e05c" + integrity sha1-xRdzW9W3Yx3R/Bke4Zy7cT/44Fw= set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" @@ -6517,13 +6624,6 @@ shallow-clone@^3.0.0: dependencies: kind-of "^6.0.2" -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/shebang-command/-/shebang-command-1.2.0.tgz" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - shebang-command@^2.0.0: version "2.0.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/shebang-command/-/shebang-command-2.0.0.tgz" @@ -6531,11 +6631,6 @@ shebang-command@^2.0.0: dependencies: shebang-regex "^3.0.0" -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/shebang-regex/-/shebang-regex-1.0.0.tgz" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - shebang-regex@^3.0.0: version "3.0.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/shebang-regex/-/shebang-regex-3.0.0.tgz" @@ -6590,12 +6685,12 @@ side-channel@^1.1.0: side-channel-map "^1.0.1" side-channel-weakmap "^1.0.2" -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: +signal-exit@^3.0.0: version "3.0.7" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -signal-exit@^4.0.1: +signal-exit@^4.0.1, signal-exit@^4.1.0: version "4.1.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== @@ -6636,15 +6731,6 @@ slashes@^3.0.12: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/slashes/-/slashes-3.0.12.tgz#3d664c877ad542dc1509eaf2c50f38d483a6435a" integrity sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA== -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/slice-ansi/-/slice-ansi-2.1.0.tgz" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - snapdragon@^0.8.1: version "0.8.2" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/snapdragon/-/snapdragon-0.8.2.tgz" @@ -6790,6 +6876,13 @@ stream-combiner@^0.2.2: duplexer "~0.1.1" through "~2.3.4" +stream-composer@^1.0.2: + version "1.0.2" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/stream-composer/-/stream-composer-1.0.2.tgz#7ee61ca1587bf5f31b2e29aa2093cbf11442d152" + integrity sha1-fuYcoVh79fMbLimqIJPL8RRC0VI= + dependencies: + streamx "^2.13.2" + stream-exhaust@^1.0.1: version "1.0.2" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/stream-exhaust/-/stream-exhaust-1.0.2.tgz" @@ -6800,6 +6893,11 @@ stream-shift@^1.0.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/stream-shift/-/stream-shift-1.0.1.tgz" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== +stream-shift@^1.0.2: + version "1.0.3" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b" + integrity sha1-hbj6tNcQEPw7qHcugEbMSbijhks= + streamfilter@^3.0.0: version "3.0.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/streamfilter/-/streamfilter-3.0.0.tgz" @@ -6807,6 +6905,24 @@ streamfilter@^3.0.0: dependencies: readable-stream "^3.0.6" +streamx@^2.12.0, streamx@^2.12.5, streamx@^2.13.2, streamx@^2.14.0: + version "2.23.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/streamx/-/streamx-2.23.0.tgz#7d0f3d00d4a6c5de5728aecd6422b4008d66fd0b" + integrity sha1-fQ89ANSmxd5XKK7NZCK0AI1m/Qs= + dependencies: + events-universal "^1.0.0" + fast-fifo "^1.3.2" + text-decoder "^1.1.0" + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha1-JpxxF9J7Ba0uU2gwqOyJXvnG0BA= + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/string-width/-/string-width-1.0.2.tgz" @@ -6816,15 +6932,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2": - version "2.1.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/string-width/-/string-width-2.1.1.tgz" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -6842,6 +6950,15 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha1-FPja7G2B5yIdKjV+Zoyrc728p5Q= + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + string.prototype.matchall@^4.0.10: version "4.0.10" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz" @@ -6926,6 +7043,13 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha1-nibGPTD1NEPpSJSVshBdN7Z6hdk= + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/strip-ansi/-/strip-ansi-3.0.1.tgz" @@ -6933,13 +7057,6 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/strip-ansi/-/strip-ansi-4.0.0.tgz" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/strip-ansi/-/strip-ansi-5.2.0.tgz" @@ -6954,6 +7071,13 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +strip-ansi@^7.0.1: + version "7.2.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/strip-ansi/-/strip-ansi-7.2.0.tgz#d22a269522836a627af8d04b5c3fd2c7fa3e32e3" + integrity sha1-0iomlSKDamJ6+NBLXD/Sx/o+MuM= + dependencies: + ansi-regex "^6.2.2" + strip-bom-string@^1.0.0: version "1.0.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/strip-bom-string/-/strip-bom-string-1.0.0.tgz" @@ -6971,12 +7095,12 @@ strip-bom@^3.0.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/strip-bom/-/strip-bom-3.0.0.tgz" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/strip-final-newline/-/strip-final-newline-2.0.0.tgz" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha1-UolMMT+/8xiDUoCu1g/3Hr8SuP0= -strip-json-comments@3.1.1, strip-json-comments@^3.0.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "3.1.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -6986,13 +7110,6 @@ strip-json-comments@~2.0.1: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/strip-json-comments/-/strip-json-comments-2.0.1.tgz" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -supports-color@8.1.1, supports-color@^8.0.0, supports-color@^8.1.1: - version "8.1.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/supports-color/-/supports-color-8.1.1.tgz" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - supports-color@^5.3.0: version "5.5.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/supports-color/-/supports-color-5.5.0.tgz" @@ -7007,6 +7124,18 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.0.0, supports-color@^8.1.1: + version "8.1.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-color@^9.4.0: + version "9.4.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/supports-color/-/supports-color-9.4.0.tgz#17bfcf686288f531db3dea3215510621ccb55954" + integrity sha1-F7/PaGKI9THbPeoyFVEGIcy1WVQ= + supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" @@ -7028,16 +7157,6 @@ synckit@^0.9.1: "@pkgr/core" "^0.1.0" tslib "^2.6.2" -table@^5.2.3: - version "5.4.6" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/table/-/table-5.4.6.tgz" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - tapable@^1.0.0: version "1.1.3" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/tapable/-/tapable-1.1.3.tgz" @@ -7074,6 +7193,23 @@ tas-client@0.2.33: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/tas-client/-/tas-client-0.2.33.tgz#451bf114a8a64748030ce4068ab7d079958402e6" integrity sha512-V+uqV66BOQnWxvI6HjDnE4VkInmYZUQ4dgB7gzaDyFyFSK1i1nF/j7DpS9UbQAgV9NaF1XpcyuavnM1qOeiEIg== +teex@^1.0.1: + version "1.0.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/teex/-/teex-1.0.1.tgz#b8fa7245ef8e8effa8078281946c85ab780a0b12" + integrity sha1-uPpyRe+Ojv+oB4KBlGyFq3gKCxI= + dependencies: + streamx "^2.12.5" + +ternary-stream@^3.0.0: + version "3.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ternary-stream/-/ternary-stream-3.0.0.tgz#7951930ea9e823924d956f03d516151a2d516253" + integrity sha1-eVGTDqnoI5JNlW8D1RYVGi1RYlM= + dependencies: + duplexify "^4.1.1" + fork-stream "^0.0.4" + merge-stream "^2.0.0" + through2 "^3.0.1" + terser-webpack-plugin@^5.3.16: version "5.3.16" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz#741e448cc3f93d8026ebe4f7ef9e4afacfd56330" @@ -7095,6 +7231,13 @@ terser@^5.31.1: commander "^2.20.0" source-map-support "~0.5.20" +text-decoder@^1.1.0: + version "1.2.7" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/text-decoder/-/text-decoder-1.2.7.tgz#5d073a9a74b9c0a9d28dfadcab96b604af57d8ba" + integrity sha1-XQc6mnS5wKnSjfrcq5a2BK9X2Lo= + dependencies: + b4a "^1.6.4" + text-table@^0.2.0: version "0.2.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/text-table/-/text-table-0.2.0.tgz" @@ -7124,14 +7267,7 @@ through2@^3.0.0, through2@^3.0.1: inherits "^2.0.4" readable-stream "2 || 3" -through2@^4.0.2: - version "4.0.2" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/through2/-/through2-4.0.2.tgz" - integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== - dependencies: - readable-stream "3" - -through@2, through@^2.3.6, through@^2.3.8, through@~2.3, through@~2.3.4: +through@2, through@^2.3.8, through@~2.3, through@~2.3.4: version "2.3.8" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/through/-/through-2.3.8.tgz" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -7149,7 +7285,7 @@ timers-ext@^0.1.7: es5-ext "~0.10.46" next-tick "1" -tmp@^0.0.33, tmp@^0.2.3, tmp@^0.2.4: +tmp@^0.2.3, tmp@^0.2.4: version "0.2.4" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/tmp/-/tmp-0.2.4.tgz#c6db987a2ccc97f812f17137b36af2b6521b0d13" integrity sha1-xtuYeizMl/gS8XE3s2rytlIbDRM= @@ -7193,6 +7329,13 @@ to-through@^2.0.0: dependencies: through2 "^2.0.3" +to-through@^3.0.0: + version "3.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/to-through/-/to-through-3.0.0.tgz#bf4956eaca5a0476474850a53672bed6906ace54" + integrity sha1-v0lW6spaBHZHSFClNnK+1pBqzlQ= + dependencies: + streamx "^2.12.5" + tr46@~0.0.3: version "0.0.3" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/tr46/-/tr46-0.0.3.tgz" @@ -7241,7 +7384,7 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.13.0, tslib@^1.8.1: version "1.14.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -7308,13 +7451,6 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-check@~0.3.2: - version "0.3.2" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/type-check/-/type-check-0.3.2.tgz" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5, type-detect@^4.0.8: version "4.0.8" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/type-detect/-/type-detect-4.0.8.tgz" @@ -7325,16 +7461,6 @@ type-fest@^0.20.2: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-fest@^0.21.3: - version "0.21.3" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/type-fest/-/type-fest-0.21.3.tgz" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/type-fest/-/type-fest-0.8.1.tgz" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - type@^1.0.1: version "1.2.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/type/-/type-1.2.0.tgz" @@ -7462,11 +7588,6 @@ uc.micro@^2.0.0, uc.micro@^2.1.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee" integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== -uglify-js@^3.1.4: - version "3.15.5" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/uglify-js/-/uglify-js-3.15.5.tgz" - integrity sha512-hNM5q5GbBRB5xB+PMqVRcgYe4c8jbyZ1pzZhS6jbq54/4F2gFK869ZheiE5A8/t+W5jtTNpWef/5Q9zk639FNQ== - unbox-primitive@^1.0.2: version "1.0.2" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/unbox-primitive/-/unbox-primitive-1.0.2.tgz" @@ -7513,6 +7634,11 @@ undici-types@~6.19.2: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== +undici-types@~7.18.0: + version "7.18.2" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/undici-types/-/undici-types-7.18.2.tgz#29357a89e7b7ca4aef3bf0fd3fd0cd73884229e9" + integrity sha1-KTV6iee3ykrvO/D9P9DNc4hCKek= + union-value@^1.0.0: version "1.0.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/union-value/-/union-value-1.0.1.tgz" @@ -7594,11 +7720,6 @@ uuid@^8.3.0, uuid@~8.3.2: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - v8flags@^3.2.0: version "3.2.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/v8flags/-/v8flags-3.2.0.tgz" @@ -7619,6 +7740,19 @@ value-or-function@^3.0.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/value-or-function/-/value-or-function-3.0.0.tgz" integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= +value-or-function@^4.0.0: + version "4.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/value-or-function/-/value-or-function-4.0.0.tgz#70836b6a876a010dc3a2b884e7902e9db064378d" + integrity sha1-cINraodqAQ3DoriE55AunbBkN40= + +vinyl-contents@^2.0.0: + version "2.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/vinyl-contents/-/vinyl-contents-2.0.0.tgz#cc2ba4db3a36658d069249e9e36d9e2b41935d89" + integrity sha1-zCuk2zo2ZY0Gkknp422eK0GTXYk= + dependencies: + bl "^5.0.0" + vinyl "^3.0.0" + vinyl-fs@^3.0.0, vinyl-fs@^3.0.3: version "3.0.3" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/vinyl-fs/-/vinyl-fs-3.0.3.tgz" @@ -7642,6 +7776,26 @@ vinyl-fs@^3.0.0, vinyl-fs@^3.0.3: vinyl "^2.0.0" vinyl-sourcemap "^1.1.0" +vinyl-fs@^4.0.0: + version "4.0.2" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/vinyl-fs/-/vinyl-fs-4.0.2.tgz#d46557653e4a7109f29d626a9cf478680c7f8c70" + integrity sha1-1GVXZT5KcQnynWJqnPR4aAx/jHA= + dependencies: + fs-mkdirp-stream "^2.0.1" + glob-stream "^8.0.3" + graceful-fs "^4.2.11" + iconv-lite "^0.6.3" + is-valid-glob "^1.0.0" + lead "^4.0.0" + normalize-path "3.0.0" + resolve-options "^2.0.0" + stream-composer "^1.0.2" + streamx "^2.14.0" + to-through "^3.0.0" + value-or-function "^4.0.0" + vinyl "^3.0.1" + vinyl-sourcemap "^2.0.0" + vinyl-sourcemap@^1.1.0: version "1.1.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz" @@ -7655,6 +7809,18 @@ vinyl-sourcemap@^1.1.0: remove-bom-buffer "^3.0.0" vinyl "^2.0.0" +vinyl-sourcemap@^2.0.0: + version "2.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/vinyl-sourcemap/-/vinyl-sourcemap-2.0.0.tgz#422f410a0ea97cb54cebd698d56a06d7a22e0277" + integrity sha1-Qi9BCg6pfLVM69aY1WoG16IuAnc= + dependencies: + convert-source-map "^2.0.0" + graceful-fs "^4.2.10" + now-and-later "^3.0.0" + streamx "^2.12.5" + vinyl "^3.0.0" + vinyl-contents "^2.0.0" + vinyl@^2.0.0, vinyl@^2.1.0: version "2.2.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/vinyl/-/vinyl-2.2.1.tgz" @@ -7667,6 +7833,16 @@ vinyl@^2.0.0, vinyl@^2.1.0: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" +vinyl@^3.0.0, vinyl@^3.0.1: + version "3.0.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/vinyl/-/vinyl-3.0.1.tgz#5f5ff85255bda2b5da25e4b3bd80b3fc077fb5a9" + integrity sha1-X1/4UlW9orXaJeSzvYCz/Ad/tak= + dependencies: + clone "^2.1.2" + remove-trailing-separator "^1.1.0" + replace-ext "^2.0.0" + teex "^1.0.1" + vscode-cmake-tools@^1.5.0: version "1.5.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/vscode-cmake-tools/-/vscode-cmake-tools-1.5.0.tgz#208d15ab4364861f7bad17282bb4f1d47539248a" @@ -7720,22 +7896,23 @@ webidl-conversions@^3.0.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/webidl-conversions/-/webidl-conversions-3.0.1.tgz" integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= -webpack-cli@^4.5.0: - version "4.9.2" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/webpack-cli/-/webpack-cli-4.9.2.tgz" - integrity sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ== +webpack-cli@^5.1.4: + version "5.1.4" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" + integrity sha1-yOBGun6q5JEdfnHislt3b8w1dZs= dependencies: "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^1.1.1" - "@webpack-cli/info" "^1.4.1" - "@webpack-cli/serve" "^1.6.1" + "@webpack-cli/configtest" "^2.1.1" + "@webpack-cli/info" "^2.0.2" + "@webpack-cli/serve" "^2.0.5" colorette "^2.0.14" - commander "^7.0.0" - execa "^5.0.0" + commander "^10.0.1" + cross-spawn "^7.0.3" + envinfo "^7.7.3" fastest-levenshtein "^1.0.12" import-local "^3.0.2" - interpret "^2.2.0" - rechoir "^0.7.0" + interpret "^3.1.1" + rechoir "^0.8.0" webpack-merge "^5.7.3" webpack-merge@^5.7.3: @@ -7838,26 +8015,19 @@ which-typed-array@^1.1.14, which-typed-array@^1.1.15: gopd "^1.0.1" has-tostringtag "^1.0.2" -which@2.0.2, which@^2.0.1, which@~2.0.2: - version "2.0.2" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/which/-/which-2.0.2.tgz" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -which@^1.2.14, which@^1.2.9: +which@^1.2.14: version "1.3.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/which/-/which-1.3.1.tgz" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" -wide-align@1.1.3: - version "1.1.3" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/wide-align/-/wide-align-1.1.3.tgz" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== +which@^2.0.1, which@~2.0.2: + version "2.0.2" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: - string-width "^1.0.2 || 2" + isexe "^2.0.0" wide-align@^1.1.0: version "1.1.5" @@ -7871,20 +8041,29 @@ wildcard@^2.0.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/wildcard/-/wildcard-2.0.0.tgz" integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== -word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.4" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/word-wrap/-/word-wrap-1.2.4.tgz" - integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha1-0sRcbdT7zmIaZvE2y+Mor9BBCzQ= -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/wordwrap/-/wordwrap-1.0.0.tgz" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= +workerpool@^6.5.1: + version "6.5.1" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" + integrity sha1-Bg9zs50Mr5fG22TaAEzQG0wJlUQ= -workerpool@6.1.0: - version "6.1.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/workerpool/-/workerpool-6.1.0.tgz" - integrity sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg== +workerpool@^9.2.0: + version "9.3.4" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/workerpool/-/workerpool-9.3.4.tgz#f6c92395b2141afd78e2a889e80cb338fe9fca41" + integrity sha1-9skjlbIUGv144qiJ6AyzOP6fykE= + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM= + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" wrap-ansi@^2.0.0: version "2.1.0" @@ -7912,18 +8091,20 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha1-VtwiNo7lcPrOG0mBmXXZuaXq0hQ= + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + wrappy@1: version "1.0.2" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/wrappy/-/wrappy-1.0.2.tgz" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write@1.0.3: - version "1.0.3" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/write/-/write-1.0.3.tgz" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - xml2js@^0.4.19, xml2js@^0.5.0: version "0.5.0" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/xml2js/-/xml2js-0.5.0.tgz#d9440631fbb2ed800203fad106f2724f62c493b7" @@ -7967,34 +8148,21 @@ yaml@^1.10.0: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/yaml/-/yaml-1.10.2.tgz" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@20.2.4, yargs-parser@^13.1.2, yargs-parser@^20.2.2, yargs-parser@^20.2.4, yargs-parser@^5.0.1: +yargs-parser@^13.1.2, yargs-parser@^20.2.2, yargs-parser@^20.2.4, yargs-parser@^20.2.9, yargs-parser@^21.1.1, yargs-parser@^5.0.1: version "20.2.9" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-unparser@2.0.0: +yargs-unparser@^2.0.0: version "2.0.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/yargs-unparser/-/yargs-unparser-2.0.0.tgz" - integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha1-8TH5ImkRrl2a04xDL+gJNmwjJes= dependencies: camelcase "^6.0.0" decamelize "^4.0.0" flat "^5.0.2" is-plain-obj "^2.1.0" -yargs@16.2.0: - version "16.2.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/yargs/-/yargs-16.2.0.tgz" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - yargs@^13.2.4: version "13.3.2" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/yargs/-/yargs-13.3.2.tgz" @@ -8011,6 +8179,32 @@ yargs@^13.2.4: y18n "^4.0.0" yargs-parser "^13.1.2" +yargs@^16.2.0: + version "16.2.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha1-HIK/D2tqZur85+8w43b0mhJHf2Y= + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^17.7.2: + version "17.7.2" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha1-mR3zmspnWhkrgW4eA2P5110qomk= + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + yargs@^7.1.0: version "7.1.2" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/yargs/-/yargs-7.1.2.tgz"