Merge branch 'main' into dev/andris/cmake_tools/fix1914_varexp_kit_sourceDir
This commit is contained in:
Коммит
b43f39b3bb
29
CHANGELOG.md
29
CHANGELOG.md
|
@ -1,6 +1,32 @@
|
|||
# What's New?
|
||||
|
||||
## 1.18
|
||||
## 1.19
|
||||
|
||||
Features:
|
||||
|
||||
- Add support for CMake Language Support natively in this extension. [#3559](https://github.com/microsoft/vscode-cmake-tools/issues/3559)
|
||||
- Upgrade `cmake_minimum_required` version 3.0.0 -> 3.5.0. [#3793](https://github.com/microsoft/vscode-cmake-tools/issues/3793)
|
||||
|
||||
Improvements:
|
||||
|
||||
- Add setting for deleting entire build dir when clean configuring. [#3515](https://github.com/microsoft/vscode-cmake-tools/issues/3515)
|
||||
|
||||
Bug Fixes:
|
||||
|
||||
- Fix issue "Logs are unavailable when running tests from the Test Explorer" and display properly the test output. [#3140](https://github.com/microsoft/vscode-cmake-tools/issues/3140)
|
||||
- Fix issue with "Test Results Not Found" when `cmake.ctest.allowParallelJobs` is disabled. [#3798](https://github.com/microsoft/vscode-cmake-tools/issues/3798)
|
||||
- Update localized strings for Project Status UI and quick pick dropdowns. [#3803](https://github.com/microsoft/vscode-cmake-tools/issues/3803), [#3802](https://github.com/microsoft/vscode-cmake-tools/issues/3802)
|
||||
- Fix issue where new presets couldn't inherit from presets in CmakeUserPresets.json. These presets are now added to CmakeUserPresets.json instead of CmakePresets.json. [#3725](https://github.com/microsoft/vscode-cmake-tools/issues/3725)
|
||||
- Fix issue where CMakeTools does not recheck CMake Path to see if user installed CMake after launching VS Code. [3811](https://github.com/microsoft/vscode-cmake-tools/issues/3811)
|
||||
- Fix issue where `cmake.buildToolArgs` was sometimes applied incorrectly when presets are used [#3754](https://github.com/microsoft/vscode-cmake-tools/issues/3754)
|
||||
|
||||
## 1.18.42
|
||||
|
||||
Bug Fixes:
|
||||
- Fix schema validation for `$schema`. [#3809](https://github.com/microsoft/vscode-cmake-tools/pull/3809)
|
||||
- Fix tests having too long of a command-line. [#3814](https://github.com/microsoft/vscode-cmake-tools/pull/3814)
|
||||
|
||||
## 1.18.41
|
||||
Features:
|
||||
|
||||
- Add the possibility to open the current build directory in the Explorer [#1451](https://github.com/microsoft/vscode-cmake-tools/issues/1451)
|
||||
|
@ -22,6 +48,7 @@ Improvements:
|
|||
- Add the ability to debug install targets [#532](https://github.com/microsoft/vscode-cmake-tools/issues/532)
|
||||
- Add a "Don't Show Again" option in the select CMakeLists.txt.
|
||||
- Log error statement if the environmentSetupScript fails. [#3566](https://github.com/microsoft/vscode-cmake-tools/issues/3566)
|
||||
- Sort CMakeLists.txt by depth during selection [#3789](https://github.com/microsoft/vscode-cmake-tools/pull/3789) [@jmigual](https://github.com/jmigual)
|
||||
- [Experiment] Improve CMake Tools experience when opening a folder [#3588](https://github.com/microsoft/vscode-cmake-tools/issues/3588)
|
||||
|
||||
Bug Fixes:
|
||||
|
|
|
@ -12,7 +12,7 @@ Explore the [CMake Tools documentation](README.md)
|
|||
|
||||
## What about CMake language support?
|
||||
|
||||
CMake Tools was created separately from the [CMake extension](https://marketplace.visualstudio.com/items?itemName=twxs.cmake), which provides language coloring and autocompletion support.
|
||||
We support CMake language support natively in the CMake Tools extension.
|
||||
|
||||
## How do I learn about CMake?
|
||||
|
||||
|
|
15
docs/kits.md
15
docs/kits.md
|
@ -122,6 +122,21 @@ Keys:
|
|||
> **Note:**
|
||||
> To use Visual C++, both `visualStudio` and `visualStudioArchitecture` must be specified. Omitting either one won't work.
|
||||
|
||||
## Unsupported commands
|
||||
|
||||
The following commands are not supported when kits and variants are active:
|
||||
- **CMake: Scan for Compilers**
|
||||
- **CMake: Add Configure Preset**
|
||||
- **CMake: Add Build Preset**
|
||||
- **CMake: Add Test Preset**
|
||||
- **CMake: Add Package Preset**
|
||||
- **CMake: Add Workflow Preset**
|
||||
- **CMake: Select Configure Preset**
|
||||
- **CMake: Select Build Preset**
|
||||
- **CMake: Select Test Preset**
|
||||
- **CMake: Select Package Preset**
|
||||
- **CMake: Select Workflow Preset**
|
||||
|
||||
### General options
|
||||
|
||||
The following additional options may be specified:
|
||||
|
|
|
@ -196,7 +196,7 @@
|
|||
"cmake-tools.configuration.cmake.revealLog.focus.description": "将显示日志,并且输出通道会占用光标焦点。",
|
||||
"cmake-tools.configuration.cmake.revealLog.always.description": "将显示日志,但输出通道不会占用光标焦点。",
|
||||
"cmake-tools.configuration.cmake.revealLog.never.description": "日志既不显示也不占据焦点。",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "启用导出 compile_commands.json。",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "支持导出 compile_commands.json。仅在工具包场景中使用。在预设场景中,请使用 CMakePresets.json 设置它",
|
||||
"cmake-tools.configuration.cmake.useCMakePresets.description": "使用 CMakePresets.json 配置驱动器 CMake 配置、生成和测试。使用 CMakePresets.json 时,将忽略工具包、变量和 settings.json 中的某些设置。",
|
||||
"cmake-tools.configuration.cmake.allowCommentsInPresetsFile.description": "允许使用 JSON 扩展,如 CMakePresets.json 中的注释。请注意,如果使用非标准 JSON,则其他 IDE 或命令行可能认为 CMakePresets.json 文件无效。",
|
||||
"cmake-tools.configuration.cmake.allowUnsupportedPresetsVersions.description": "支持使用预设文件,这些文件使用的是 CMake Tools 扩展当前不支持的版本中的功能。将忽略未知属性和宏。",
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"schemas/CMakePresets-v8-schema.json.": "这些预设指定了生成器和生成目录,还选择性地指定要传递给 CMake 的变量和其他参数的列表。",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.schema": "验证此文档所依据的架构。",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.$schema": "验证此文档所依据的架构。",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.version": "一个必需整数,它表示 JSON 架构的版本。",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired": "一个可选对象,表示生成此项目所需的 CMake 的最低版本。",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired.properties.major": "一个表示主版本的可选整数。",
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
"circular.variable.reference": "已找到循环变量引用: {0}",
|
||||
"reached.max.recursion": "已达到最大字符串扩展递归。可能存在循环引用。",
|
||||
"exception.expanding.string": "展开字符串 {0} 时出现异常: {1}",
|
||||
"expand.expandstringhelper": "正在展开 {0}",
|
||||
"invalid.variable.reference": "字符串中的变量引用 {0} 无效: {1}",
|
||||
"command.not.supported": "命令不支持字符串: {0}",
|
||||
"exception.executing.command": "对字符串执行命令 {0} 时出现异常: {1} {2}"
|
||||
"exception.executing.command": "对字符串执行命令 {0} 时出现异常: {1} {2}",
|
||||
"expand.expandstringhelper": "已展开 {0}"
|
||||
}
|
|
@ -21,6 +21,7 @@
|
|||
"filed.to.check.binary": "无法按异常检查二进制文件 {0}: {1}",
|
||||
"failed.to.scan.kit": "无法扫描工具包文件",
|
||||
"founds.kits.in.directory": "已在目录 {1} 中找到 {0} 工具包",
|
||||
"error.running.setup.script": "运行 {0} 时出错,出现: {1}",
|
||||
"error.parsing.environment": "分析环境变量时出错: {0}",
|
||||
"ok.running": "正常运行 {0},环境变量: {1}",
|
||||
"checking.for.kit": "检查工具包: {0}",
|
||||
|
@ -29,6 +30,7 @@
|
|||
"generator.present": "存在生成器: {0}",
|
||||
"selected.preferred.generator.name": "已选择首选生成器名称: {0} {1}",
|
||||
"failed.to.scan.for.kits": "无法扫描 GNU CLI Clang kits: CMake 路径未定义",
|
||||
"vs.instance.not.found.run.scan.kits": "找不到工具包“{0}”的 VS 安装实例- ({1})。建议你重新扫描工具包,并删除系统上不再存在的所有用户本地条目。",
|
||||
"kit.env": "工具包 {0} 的环境: {1}",
|
||||
"scanning.for.kits.on.system": "正在系统上扫描工具包",
|
||||
"scanning.for.kits": "正在扫描工具包",
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
{
|
||||
"workflow.preset.not.set": "未设置工作流预设",
|
||||
"no.project.found": "找不到文件夹的项目 {0}",
|
||||
"workflow.configuring.clean": "正在使用工作流的 {0} 配置预设来配置干净项目。",
|
||||
"workflow.configuring": "使用工作流的 {0} 配置预设来配置项目。",
|
||||
"workflow.building": "使用工作流步骤的 {0} 生成预设来生成项目。",
|
||||
"workflow.running.ctest": "为工作流步骤的 {0} 测试预设运行 ctest。",
|
||||
|
|
|
@ -196,7 +196,7 @@
|
|||
"cmake-tools.configuration.cmake.revealLog.focus.description": "記錄已顯示,且輸出通道取得游標焦點。",
|
||||
"cmake-tools.configuration.cmake.revealLog.always.description": "記錄已顯示,但輸出通道未取得游標焦點。",
|
||||
"cmake-tools.configuration.cmake.revealLog.never.description": "記錄沒有顯示,也無法取得焦點。",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "啟用匯出 compile_commands.json。",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "啟用匯出 compile_commands.json。這僅適用於套件案例。在預設案例中,請使用 CMakePresets.json 進行設定",
|
||||
"cmake-tools.configuration.cmake.useCMakePresets.description": "使用 CMakePresets.json 來設定 CMake 設定、建置和測試的磁碟機。使用 CMakePresets.json 時,settings.json 中的套件、變體和某些設定會被忽略。",
|
||||
"cmake-tools.configuration.cmake.allowCommentsInPresetsFile.description": "允許使用 JSON 延伸模組,例如 CMakePresets.json 中的註解。請注意,如果您使用非標準的 JSON,其他 IDE 或命令列可能會將您的 CMakePresets.json 檔案視為無效。",
|
||||
"cmake-tools.configuration.cmake.allowUnsupportedPresetsVersions.description": "啟用使用來自 CMake Tools 延伸模組目前不支援之功能的預設檔案。將忽略未知的屬性和巨集。",
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"schemas/CMakePresets-v8-schema.json.": "此預設會指定產生器與組建目錄,並選擇性地指定要傳遞給 CMake 的變數清單與其他引數。",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.schema": "用來驗證此文件的結構描述。",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.$schema": "用來驗證此文件的結構描述。",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.version": "必要整數,表示 JSON 結構描述的版本。",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired": "選擇性物件,表示建置此專案所需的最低 CMake 版本。",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired.properties.major": "選擇性整數,表示主要版本。",
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
"circular.variable.reference": "找到循環變數參考: {0}",
|
||||
"reached.max.recursion": "已達到字串展開遞迴的最大值。可能的循環參考。",
|
||||
"exception.expanding.string": "展開字串 {0} 時發生例外狀況: {1}",
|
||||
"expand.expandstringhelper": "正在展開 {0}",
|
||||
"invalid.variable.reference": "字串中的變數參考 {0} 無效: {1}",
|
||||
"command.not.supported": "字串不支援命令: {0}",
|
||||
"exception.executing.command": "執行字串的命令 {0} 時發生例外狀況: {1} {2}"
|
||||
"exception.executing.command": "執行字串的命令 {0} 時發生例外狀況: {1} {2}",
|
||||
"expand.expandstringhelper": "已展開 {0}"
|
||||
}
|
|
@ -21,6 +21,7 @@
|
|||
"filed.to.check.binary": "無法根據例外狀況檢查二進位 {0}: {1}",
|
||||
"failed.to.scan.kit": "無法掃描套件檔案",
|
||||
"founds.kits.in.directory": "在目錄 {1} 中找到 {0} 個套件",
|
||||
"error.running.setup.script": "執行 {0} 時發生錯誤: {1}",
|
||||
"error.parsing.environment": "剖析環境變數時發生錯誤: {0}",
|
||||
"ok.running": "確定要執行 {0},環境變數: {1}",
|
||||
"checking.for.kit": "正在檢查套件: {0}",
|
||||
|
@ -29,6 +30,7 @@
|
|||
"generator.present": "產生器已存在: {0}",
|
||||
"selected.preferred.generator.name": "已選取慣用產生器名稱: {0} {1}",
|
||||
"failed.to.scan.for.kits": "無法掃描 GNU CLI Clang 套件: CMake 路徑未定義",
|
||||
"vs.instance.not.found.run.scan.kits": "找不到套件 {0} 的 VS 安裝執行個體 - ({1})。建議您重新掃描套件,並移除系統上不再出現的任何使用者-本機專案。",
|
||||
"kit.env": "套件 {0} 的環境: {1}",
|
||||
"scanning.for.kits.on.system": "正在掃描系統上的套件",
|
||||
"scanning.for.kits": "正在掃描套件",
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
{
|
||||
"workflow.preset.not.set": "未設定工作流程預設",
|
||||
"no.project.found": "找不到資料夾 {0} 的專案",
|
||||
"workflow.configuring.clean": "正在使用工作流程的 {0} 設定預設來設定未修改的專案。",
|
||||
"workflow.configuring": "正在使用工作流程的 {0} 設定預設來設定專案。",
|
||||
"workflow.building": "正在使用工作流程步驟的 {0} 建置預設建置專案。",
|
||||
"workflow.running.ctest": "為工作流程步驟的 {0} 測試預設執行 ctest。",
|
||||
|
|
|
@ -196,7 +196,7 @@
|
|||
"cmake-tools.configuration.cmake.revealLog.focus.description": "Zobrazí se protokol a výstupní kanál převezme fokus kurzoru.",
|
||||
"cmake-tools.configuration.cmake.revealLog.always.description": "Protokol se zobrazí, ale výstupní kanál nepřevezme zaměření kurzoru.",
|
||||
"cmake-tools.configuration.cmake.revealLog.never.description": "Protokol se nezobrazuje ani nepřijímá zaměření.",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "Umožňuje exportovat compile_commands.json.",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "Umožňuje exportovat compile_commands.json. Používá se jenom ve scénářích Sady. Ve scénářích Předvolby tuto možnost prosím nastavte pomocí CMakePresets.json",
|
||||
"cmake-tools.configuration.cmake.useCMakePresets.description": "Pomocí CMakePresets.json můžete řídit konfiguraci, sestavování a testování pomocí CMaku. Když budete používat CMakePresets.json, budou se ignorovat sady, varianty a některá další nastavení v souboru settings.json.",
|
||||
"cmake-tools.configuration.cmake.allowCommentsInPresetsFile.description": "Povolte v CMakePresets.json používání rozšíření JSON, jako jsou třeba komentáře. Pokud použijete nestandardní JSON, ostatní prostředí IDE nebo příkazový řádek může soubor CMakePresets.json považovat za neplatný.",
|
||||
"cmake-tools.configuration.cmake.allowUnsupportedPresetsVersions.description": "Povolí použití souborů předvoleb používajících funkce z verzí, které rozšíření CMake Tools aktuálně nepodporuje. Neznámé vlastnosti a makra se budou ignorovat.",
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"schemas/CMakePresets-v8-schema.json.": "Předvolby určují generátor a adresář sestavení a volitelně i seznam proměnných a dalších argumentů, které se mají předat do nástroje CMake.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.schema": "Schéma, proti kterému se má tento dokument ověřit",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.$schema": "Schéma, proti kterému se má tento dokument ověřit",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.version": "Požadované celé číslo představující verzi schématu JSON.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired": "Volitelný objekt představující minimální verzi nástroje CMake potřebnou k sestavení tohoto projektu",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired.properties.major": "Volitelné celé číslo představující hlavní verzi",
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
"circular.variable.reference": "Našel se cyklický odkaz na proměnnou: {0}",
|
||||
"reached.max.recursion": "Dosáhlo se maximální rekurze rozšiřování řetězce. Možná vznikl cyklický odkaz.",
|
||||
"exception.expanding.string": "Při rozbalování řetězce {0} došlo k výjimce: {1}",
|
||||
"expand.expandstringhelper": "rozbalování {0}",
|
||||
"invalid.variable.reference": "Neplatný odkaz na proměnnou {0} v řetězci: {1}",
|
||||
"command.not.supported": "Pro řetězec se nepodporují příkazy: {0}",
|
||||
"exception.executing.command": "Výjimka při provádění příkazu {0} pro řetězec: {1} {2}"
|
||||
"exception.executing.command": "Výjimka při provádění příkazu {0} pro řetězec: {1} {2}",
|
||||
"expand.expandstringhelper": "rozbaleno: {0}"
|
||||
}
|
|
@ -21,6 +21,7 @@
|
|||
"filed.to.check.binary": "Nepovedlo se zkontrolovat binární soubor {0} podle výjimky: {1}",
|
||||
"failed.to.scan.kit": "Nepovedlo se zkontrolovat soubor sady.",
|
||||
"founds.kits.in.directory": "Našly se sady ({0}) v adresáři {1}.",
|
||||
"error.running.setup.script": "Při spouštění {0} s {1} došlo k chybě.",
|
||||
"error.parsing.environment": "Chyba při parsování proměnné prostředí: {0}",
|
||||
"ok.running": "Spuštění {0} je ok, proměnné prostředí: {1}",
|
||||
"checking.for.kit": "Hledá se sada: {0}.",
|
||||
|
@ -29,6 +30,7 @@
|
|||
"generator.present": "Generátor je přítomen: {0}",
|
||||
"selected.preferred.generator.name": "Název vybraného upřednostňovaného generátoru: {0} {1}",
|
||||
"failed.to.scan.for.kits": "Nepovedlo se vyhledat sady Clang GNU CLI: CMake Path není definován.",
|
||||
"vs.instance.not.found.run.scan.kits": "Pro sadu {0} se nenašla instance instalace VS – ({1}). Doporučujeme znovu zkontrolovat sady a také odebrat všechny položky místního uživatele, které už v systému nejsou přítomny.",
|
||||
"kit.env": "Prostředí pro sady {0}: {1}",
|
||||
"scanning.for.kits.on.system": "Hledají se sady v systému.",
|
||||
"scanning.for.kits": "Hledají se sady.",
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
{
|
||||
"workflow.preset.not.set": "Předvolba pracovního postupu není nastavená.",
|
||||
"no.project.found": "Pro složku {0} se nenašel žádný projekt.",
|
||||
"workflow.configuring.clean": "Vyčištění projektu se konfiguruje pomocí předvolby konfigurace {0} pracovního postupu.",
|
||||
"workflow.configuring": "Projekt se konfiguruje pomocí předvolby konfigurace {0} pracovního postupu.",
|
||||
"workflow.building": "Sestavování projektu pomocí předvolby sestavení {0} kroku pracovního postupu.",
|
||||
"workflow.running.ctest": "Spouští se ctest pro předvolbu testování {0} kroku pracovního postupu.",
|
||||
|
|
|
@ -196,7 +196,7 @@
|
|||
"cmake-tools.configuration.cmake.revealLog.focus.description": "Das Protokoll wird angezeigt und der Ausgabekanal nimmt den Fokus des Cursors an.",
|
||||
"cmake-tools.configuration.cmake.revealLog.always.description": "Das Protokoll wird angezeigt, aber der Ausgabekanal nimmt den Fokus des Cursors nicht an.",
|
||||
"cmake-tools.configuration.cmake.revealLog.never.description": "Das Protokoll erscheint nicht und nimmt auch nicht den Fokus an.",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "Ermöglicht das Exportieren von \"compile_commands.json\".",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "Ermöglicht das Exportieren von \"compile_commands.json\". Dies wird nur in Kits-Szenarien verwendet. Legen Sie dies in Voreinstellungsszenarien mithilfe von CMakePresets.json",
|
||||
"cmake-tools.configuration.cmake.useCMakePresets.description": "Benutzen Sie \"CMakePresets.json\", um das Konfigurieren, Erstellen und Testen von \"CMake\" zu steuern. Bei Verwendung von \"CMakePresets.json\" werden Kits, Varianten und einige Einstellungen in \"settings.json\" ignoriert.",
|
||||
"cmake-tools.configuration.cmake.allowCommentsInPresetsFile.description": "Hiermit wird die Verwendung von JSON-Erweiterungen, wie z. B. Kommentare in CMakePresets.json, zugelassen. Beachten Sie, dass Ihre CMakePresets.json-Datei von anderen IDEs als ungültig betrachtet werden kann, oder in der Befehlszeile, wenn Sie nicht standardmäßiges JSON verwenden.",
|
||||
"cmake-tools.configuration.cmake.allowUnsupportedPresetsVersions.description": "Aktiviert die Verwendung von Voreinstellungsdateien, die Features aus den Versionen verwenden, die von der Erweiterung \"CMake Tools\" derzeit nicht unterstützt werden. Unbekannte Eigenschaften und Makros werden ignoriert.",
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"schemas/CMakePresets-v8-schema.json.": "Die Voreinstellungen geben den Generator und das Buildverzeichnis sowie optional eine Liste mit Variablen und anderen Argumenten an, die an CMake übergeben werden sollen.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.schema": "Das Schema, anhand dessen dieses Dokument überprüft werden soll.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.$schema": "Das Schema, anhand dessen dieses Dokument überprüft werden soll.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.version": "Eine erforderliche ganze Zahl, die die Version des JSON-Schemas repräsentiert.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired": "Ein optionales Objekt zur Darstellung der Mindestversion von CMake, die zum Erstellen dieses Projekts erforderlich ist.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired.properties.major": "Eine optionale ganze Zahl, die die Hauptversion darstellt.",
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
"circular.variable.reference": "Kreisförmiger Variablenverweis gefunden: {0}",
|
||||
"reached.max.recursion": "Die maximale Rekursion für die Zeichenfolgenerweiterung wurde erreicht. Möglicher Zirkelbezug.",
|
||||
"exception.expanding.string": "Ausnahme beim Erweitern der Zeichenfolge {0}: {1}",
|
||||
"expand.expandstringhelper": "{0} wird erweitert",
|
||||
"invalid.variable.reference": "Ungültiger Variablenverweis {0} in folgender Zeichenfolge: {1}",
|
||||
"command.not.supported": "Befehle werden für die Zeichenfolge nicht unterstützt: {0}",
|
||||
"exception.executing.command": "Ausnahme beim Ausführen des Befehls {0} für folgende Zeichenfolge: {1} {2}"
|
||||
"exception.executing.command": "Ausnahme beim Ausführen des Befehls {0} für folgende Zeichenfolge: {1} {2}",
|
||||
"expand.expandstringhelper": "{0} erweitert"
|
||||
}
|
|
@ -21,6 +21,7 @@
|
|||
"filed.to.check.binary": "Fehler beim Überprüfen der Binärdatei {0}. Ausnahme: {1}",
|
||||
"failed.to.scan.kit": "Fehler beim Überprüfen einer Kitdatei.",
|
||||
"founds.kits.in.directory": "Gefunden: {0} Kits im Verzeichnis {1}",
|
||||
"error.running.setup.script": "Fehler beim Ausführen von {0} mit: {1}",
|
||||
"error.parsing.environment": "Fehler beim Analysieren der Umgebungsvariablen: {0}",
|
||||
"ok.running": "Ausführung von {0} OK, env vars: {1}",
|
||||
"checking.for.kit": "Suche nach Kit: {0}",
|
||||
|
@ -29,6 +30,7 @@
|
|||
"generator.present": "Generator vorhanden: {0}",
|
||||
"selected.preferred.generator.name": "Ausgewählter bevorzugter Generatorname: {0} {1}",
|
||||
"failed.to.scan.for.kits": "Scannen nach GNU CLI-Clang-Kits nicht möglich: CMake-Pfad ist nicht definiert",
|
||||
"vs.instance.not.found.run.scan.kits": "VS-Installationsinstanz für Kit \"{0}\" – ({1}) nicht gefunden. Es wird empfohlen, die Kits erneut zu überprüfen und auch alle benutzerlokalen Einträge zu entfernen, die nicht mehr im System vorhanden sind.",
|
||||
"kit.env": "Die Umgebung für das Kit {0}: {1}",
|
||||
"scanning.for.kits.on.system": "Es wird nach Kits auf dem System gesucht.",
|
||||
"scanning.for.kits": "Es wird nach Kits gesucht.",
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
{
|
||||
"workflow.preset.not.set": "Workflowvoreinstellung nicht festgelegt",
|
||||
"no.project.found": "Für den Ordner {0} wurde kein Projekt gefunden.",
|
||||
"workflow.configuring.clean": "Das Projekt wird mit der {0}-Konfigurationsvoreinstellung des Workflows konfiguriert.",
|
||||
"workflow.configuring": "Das Projekt wird mit dem {0} Konfigurationsvoreinstellung des Workflows konfiguriert.",
|
||||
"workflow.building": "Projekt mit der {0} Buildvoreinstellung des Workflowschritts wird erstellt.",
|
||||
"workflow.running.ctest": "ctest wird für die {0} Testvoreinstellung des Workflowschritts ausgeführt.",
|
||||
|
|
|
@ -196,7 +196,7 @@
|
|||
"cmake-tools.configuration.cmake.revealLog.focus.description": "El registro aparece y el canal de salida detecta el foco del cursor.",
|
||||
"cmake-tools.configuration.cmake.revealLog.always.description": "El registro aparece, pero el canal de salida no detecta el foco del cursor.",
|
||||
"cmake-tools.configuration.cmake.revealLog.never.description": "El registro no aparece ni detecta el foco.",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "Habilita la exportación de compile_commands.json.",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "Habilita la exportación de compile_commands.json. Esto solo se usa en escenarios de kits. En escenarios de valores preestablecidos, establézcalo mediante CMakePresets.json",
|
||||
"cmake-tools.configuration.cmake.useCMakePresets.description": "Use CMakePresets.json para configurar, compilar y probar la unidad CMake. Cuando use CMakePresets.json, los kits, las variantes y algunos valores de configuración de settings.json se omitirán.",
|
||||
"cmake-tools.configuration.cmake.allowCommentsInPresetsFile.description": "Permitir el uso de extensiones JSON como comentarios en CMakePresets.json. Tenga en cuenta que el archivo CMakePresets.json puede considerarse no válido por otros IDE o en la línea de comandos si usa JSON no estándar.",
|
||||
"cmake-tools.configuration.cmake.allowUnsupportedPresetsVersions.description": "Habilita el uso de archivos preestablecidos que usan características de las versiones que la extensión herramientas de CMake no admite actualmente. Se omitirán las propiedades y macros desconocidas.",
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"schemas/CMakePresets-v8-schema.json.": "Los valores preestablecidos especifican el generador junto con el directorio de compilación y, opcionalmente, una lista de variables y de otros argumentos que se van a pasar a CMake.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.schema": "Esquema con el que se va a comprobar este documento.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.$schema": "Esquema con el que se va a comprobar este documento.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.version": "Entero requerido que representa la versión del esquema JSON.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired": "Objeto opcional que representa la versión mínima de CMake necesaria para compilar este proyecto.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired.properties.major": "Entero opcional que representa la versión principal.",
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
"circular.variable.reference": "Referencia de variable circular encontrada: {0}",
|
||||
"reached.max.recursion": "Se ha alcanzado la recursividad de expansión de cadena máxima. Posible referencia circular.",
|
||||
"exception.expanding.string": "Excepción al expandir la cadena {0}: {1}",
|
||||
"expand.expandstringhelper": "expandir {0}",
|
||||
"invalid.variable.reference": "Referencia de variable {0} no válida en la cadena: {1}",
|
||||
"command.not.supported": "Comandos no admitidos para la cadena: {0}",
|
||||
"exception.executing.command": "Excepción al ejecutar el comando {0} para la cadena: {1} {2}"
|
||||
"exception.executing.command": "Excepción al ejecutar el comando {0} para la cadena: {1} {2}",
|
||||
"expand.expandstringhelper": "Se ha expandido {0}"
|
||||
}
|
|
@ -21,6 +21,7 @@
|
|||
"filed.to.check.binary": "No se pudo comprobar el binario {0} por excepción: {1}",
|
||||
"failed.to.scan.kit": "No se pudo examinar un archivo de kit.",
|
||||
"founds.kits.in.directory": "Se encontraron {0} kits en el directorio {1}",
|
||||
"error.running.setup.script": "Error al ejecutar {0} con: {1}",
|
||||
"error.parsing.environment": "Error al analizar la variable de entorno: {0}",
|
||||
"ok.running": "Se está ejecutando {0}, env vars: {1}",
|
||||
"checking.for.kit": "Comprobando si existe el kit: {0}",
|
||||
|
@ -29,6 +30,7 @@
|
|||
"generator.present": "Generador presente: {0}",
|
||||
"selected.preferred.generator.name": "Nombre de generador preferido seleccionado: {0} {1}",
|
||||
"failed.to.scan.for.kits": "No se pueden examinar los kits Clang CLI GNU: CMake Path no está definido",
|
||||
"vs.instance.not.found.run.scan.kits": "No se encontró la instancia de instalación de VS para el kit \"{0}\" - ({1}). Se recomienda volver a examinar los kits y también quitar las entradas locales de usuario que ya no estén presentes en el sistema.",
|
||||
"kit.env": "El entorno del kit {0}: {1}",
|
||||
"scanning.for.kits.on.system": "Buscando kits en el sistema",
|
||||
"scanning.for.kits": "Buscando kits",
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
{
|
||||
"workflow.preset.not.set": "No se ha establecido el valor preestablecido de flujo de trabajo",
|
||||
"no.project.found": "No se ha encontrado ningún proyecto para la carpeta {0}",
|
||||
"workflow.configuring.clean": "Configurando el proyecto limpio con el valor preestablecido de configuración de {0} del flujo de trabajo.",
|
||||
"workflow.configuring": "Configurando el proyecto con el valor preestablecido de configuración de {0} del flujo de trabajo.",
|
||||
"workflow.building": "Compilando un proyecto con el valor preestablecido de compilación {0} del paso de flujo de trabajo.",
|
||||
"workflow.running.ctest": "Ejecutando ctest para el valor preestablecido de prueba de {0} del paso de flujo de trabajo.",
|
||||
|
|
|
@ -196,7 +196,7 @@
|
|||
"cmake-tools.configuration.cmake.revealLog.focus.description": "Le journal apparaît et le canal de sortie prend le focus sur le curseur.",
|
||||
"cmake-tools.configuration.cmake.revealLog.always.description": "Le journal apparaît mais le canal de sortie ne prend pas le focus sur le curseur.",
|
||||
"cmake-tools.configuration.cmake.revealLog.never.description": "Le journal n’apparaît ni ne prend le focus.",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "Permet l'exportation de compile_commands.json.",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "Permet l'exportation de compile_commands.json. Cette option est utilisée uniquement dans les scénarios Kits. Dans les scénarios de préréglages, veuillez définir cela à l'aide de CMakePresets.json",
|
||||
"cmake-tools.configuration.cmake.useCMakePresets.description": "Utilisez CMakePresets.json pour configurer la configuration du lecteur CMake, son build et son test. Lorsque vous utilisez CMakePresets.json, les kits, les variantes et certains paramètres de settings.json seront ignorés.",
|
||||
"cmake-tools.configuration.cmake.allowCommentsInPresetsFile.description": "Autoriser l’utilisation d’extensions JSON telles que des commentaires dans CMakePresets.jsactivé. Notez que votre CMakePresets.jssur le fichier peut être considérée comme non valide par d’autres IDE ou sur la ligne de commande si vous utilisez un JSON non standard.",
|
||||
"cmake-tools.configuration.cmake.allowUnsupportedPresetsVersions.description": "Active l’utilisation de fichiers prédéfinies qui utilisent des fonctionnalités des versions que l’extension CMake Tools ne prend pas en charge actuellement. Les propriétés et macros inconnues seront ignorées.",
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"schemas/CMakePresets-v8-schema.json.": "Les options prédéfinies spécifient le générateur et le répertoire de build, et éventuellement une liste de variables et d'autres arguments à passer à CMake.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.schema": "Schéma par rapport auquel vérifier ce document.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.$schema": "Schéma par rapport auquel vérifier ce document.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.version": "Entier obligatoire représentant la version du schéma JSON.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired": "Objet facultatif représentant la version minimale de CMake nécessaire pour générer ce projet.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired.properties.major": "Entier facultatif représentant la version principale.",
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
"circular.variable.reference": "Référence de variable circulaire trouvée : {0}",
|
||||
"reached.max.recursion": "La récursivité d’expansion de chaîne maximale a été atteinte. Référence circulaire possible.",
|
||||
"exception.expanding.string": "Exception lors du développement de la chaîne {0} : {1}",
|
||||
"expand.expandstringhelper": "développement de {0}",
|
||||
"invalid.variable.reference": "Référence de variable {0} non valide dans la chaîne {1}",
|
||||
"command.not.supported": "Les commandes ne sont pas prises en charge pour la chaîne : {0}",
|
||||
"exception.executing.command": "Exception durant l'exécution de la commande {0} pour la chaîne : {1} {2}"
|
||||
"exception.executing.command": "Exception durant l'exécution de la commande {0} pour la chaîne : {1} {2}",
|
||||
"expand.expandstringhelper": "{0} étendu"
|
||||
}
|
|
@ -21,6 +21,7 @@
|
|||
"filed.to.check.binary": "Échec du contrôle du fichier binaire {0}. Exception : {1}",
|
||||
"failed.to.scan.kit": "Échec de l'analyse d'un fichier de kits",
|
||||
"founds.kits.in.directory": "{0} kits trouvés dans le répertoire {1}",
|
||||
"error.running.setup.script": "Erreur lors de l’exécution de {0} avec : {1}",
|
||||
"error.parsing.environment": "Erreur durant l'analyse de la variable d'environnement : {0}",
|
||||
"ok.running": "OK en cours d’exécution {0}, env vars : {1}",
|
||||
"checking.for.kit": "Recherche du kit : {0}",
|
||||
|
@ -29,6 +30,7 @@
|
|||
"generator.present": "Générateur présent : {0}",
|
||||
"selected.preferred.generator.name": "Nom du générateur par défaut sélectionné : {0} {1}",
|
||||
"failed.to.scan.for.kits": "Impossible d’analyser les kits Clang CLI GNU : le chemin d'accès CMake n’est pas défini",
|
||||
"vs.instance.not.found.run.scan.kits": "Instance d’installation de VS introuvable pour le kit « {0} » – ({1}). Il est recommandé de réexécuter les kits et de supprimer toutes les entrées locales de l’utilisateur qui ne sont plus présentes sur le système.",
|
||||
"kit.env": "Environnement du kit {0}: {1}",
|
||||
"scanning.for.kits.on.system": "Recherche de kits sur le système",
|
||||
"scanning.for.kits": "Recherche de kits",
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
{
|
||||
"workflow.preset.not.set": "La présélection de workflow n’est pas définie",
|
||||
"no.project.found": "Projet introuvable pour le dossier {0}",
|
||||
"workflow.configuring.clean": "Configuration d’un projet propre avec le {0} configurer la présélection du flux de travail.",
|
||||
"workflow.configuring": "Configuration du projet avec la présélection de configuration {0} du workflow.",
|
||||
"workflow.building": "Génération du projet avec la présélection de build {0} de l’étape de workflow.",
|
||||
"workflow.running.ctest": "Exécution de ctest pour la présélection de test {0} de l’étape de workflow.",
|
||||
|
|
|
@ -196,7 +196,7 @@
|
|||
"cmake-tools.configuration.cmake.revealLog.focus.description": "Il log viene visualizzato e il canale di output assume lo stato attivo del cursore.",
|
||||
"cmake-tools.configuration.cmake.revealLog.always.description": "Il log viene visualizzato, ma il canale di output non assume lo stato attivo del cursore.",
|
||||
"cmake-tools.configuration.cmake.revealLog.never.description": "Il log non viene visualizzato né assume lo stato attivo.",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "Consente l'esportazione di compile_commands.json.",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "Consente l'esportazione di compile_commands.json. Questa opzione viene usata solo negli scenari di kit. Negli scenari di set di impostazioni, impostarlo usando CMakePresets.json",
|
||||
"cmake-tools.configuration.cmake.useCMakePresets.description": "Usare CMakePresets.json per configurare l’unità CMake di configurazione, compilazione e test. Quando si usa CMakePresets.json alcuni kit, varianti e impostazioni in settings.json verranno ignorati.",
|
||||
"cmake-tools.configuration.cmake.allowCommentsInPresetsFile.description": "Consente l'uso di estensioni JSON come i commenti in CMakePresets.json. Si noti che il file CMakePresets.json potrebbe essere considerato non valido da altri IDE o dalla riga di comando se si usa JSON non standard.",
|
||||
"cmake-tools.configuration.cmake.allowUnsupportedPresetsVersions.description": "Consente di usare file di set di impostazioni che usano funzionalità delle versioni attualmente non supportate dall'estensione CMake Tools. Le proprietà e le macro sconosciute verranno ignorate.",
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"schemas/CMakePresets-v8-schema.json.": "I set di impostazioni specificano il generatore e la directory di compilazione, nonché facoltativamente un elenco di variabili e altri argomenti da passare a CMake.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.schema": "Schema in base al quale verificare il documento.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.$schema": "Schema in base al quale verificare il documento.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.version": "Intero obbligatorio che rappresenta la versione dello schema JSON.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired": "Oggetto facoltativo che rappresenta la versione minima di CMake necessaria per compilare questo progetto.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired.properties.major": "Numero intero facoltativo che rappresenta la versione principale.",
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
"circular.variable.reference": "Trovato riferimento alla variabile circolare: {0}",
|
||||
"reached.max.recursion": "Ha raggiunto la ricorsione di espansione massima delle stringhe. Possibile riferimento circolare.",
|
||||
"exception.expanding.string": "Eccezione durante l'espansione della stringa {0}: {1}",
|
||||
"expand.expandstringhelper": "espansione di {0}",
|
||||
"invalid.variable.reference": "Riferimento a variabile {0} non valido nella stringa: {1}",
|
||||
"command.not.supported": "I comandi non sono supportati per la stringa: {0}",
|
||||
"exception.executing.command": "Si è verificata un'eccezione durante l'esecuzione del comando {0} per la stringa: {1} {2}"
|
||||
"exception.executing.command": "Si è verificata un'eccezione durante l'esecuzione del comando {0} per la stringa: {1} {2}",
|
||||
"expand.expandstringhelper": "Espansa {0}"
|
||||
}
|
|
@ -21,6 +21,7 @@
|
|||
"filed.to.check.binary": "Non è stato possibile verificare il file binario {0} in base all'eccezione: {1}",
|
||||
"failed.to.scan.kit": "Non è stato possibile analizzare un file di kit",
|
||||
"founds.kits.in.directory": "Sono stati trovati {0} kit nella directory {1}",
|
||||
"error.running.setup.script": "Errore durante l'esecuzione di {0} con: {1}",
|
||||
"error.parsing.environment": "Si è verificato un errore durante l'analisi della variabile di ambiente: {0}",
|
||||
"ok.running": "Esecuzione di {0} corretta. Variabili di ambiente: {1}",
|
||||
"checking.for.kit": "Ricerca del kit: {0}",
|
||||
|
@ -29,6 +30,7 @@
|
|||
"generator.present": "Generatore presente: {0}",
|
||||
"selected.preferred.generator.name": "Nome del generatore preferito selezionato: {0} {1}",
|
||||
"failed.to.scan.for.kits": "Non è possibile cercare i kit Clang di GNU CLI: il percorso CMake non è definito",
|
||||
"vs.instance.not.found.run.scan.kits": "L'istanza di installazione di Visual Studio non è stata trovata per il kit \"{0}\" - ({1}). È consigliabile eseguire nuovamente l'analisi dei kit e rimuovere anche tutte le voci locali dell'utente non più presenti nel sistema.",
|
||||
"kit.env": "Ambiente per il kit {0}: {1}",
|
||||
"scanning.for.kits.on.system": "Ricerca dei kit nel sistema",
|
||||
"scanning.for.kits": "Ricerca dei kit",
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
{
|
||||
"workflow.preset.not.set": "Il set di impostazioni del flusso di lavoro non è impostato",
|
||||
"no.project.found": "Non sono stati trovati progetti per la cartella {0}",
|
||||
"workflow.configuring.clean": "Configurazione del progetto pulito con il set di impostazioni di configurazione {0} del flusso di lavoro.",
|
||||
"workflow.configuring": "Configurazione del progetto con il set di impostazioni di configurazione {0} del flusso di lavoro.",
|
||||
"workflow.building": "Compilazione del progetto con il set di impostazioni di compilazione {0} del passaggio del flusso di lavoro.",
|
||||
"workflow.running.ctest": "Esecuzione di ctest per il set di impostazioni di test {0} del passaggio del flusso di lavoro.",
|
||||
|
|
|
@ -196,7 +196,7 @@
|
|||
"cmake-tools.configuration.cmake.revealLog.focus.description": "ログが表示され、出力チャネルがカーソル フォーカスを取得します。",
|
||||
"cmake-tools.configuration.cmake.revealLog.always.description": "ログが表示されますが、出力チャネルはカーソル フォーカスを取得しません。",
|
||||
"cmake-tools.configuration.cmake.revealLog.never.description": "ログは表示もされず、フォーカスも取得しません。",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "compile_commands.json のエクスポートを有効にします。",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "compile_commands.json のエクスポートを有効にします。これは、Kits シナリオでのみ使用されます。Presets シナリオでは、CMakePresets.json を使用してこれを設定してください",
|
||||
"cmake-tools.configuration.cmake.useCMakePresets.description": "CMakePresets.json を使用して、ドライブ CMake の構成、ビルド、テストを構成します。CMakePresets.json を使用している場合、キット、バリエーション、また settings.json の設定の一部は無視されます。",
|
||||
"cmake-tools.configuration.cmake.allowCommentsInPresetsFile.description": "CMakePresets.json でコメントなどの JSON 拡張機能の使用を許可します。標準以外の JSON を使用した場合、他の IDE やコマンド ラインで CMakePresets.json ファイルが無効とみなされる可能性があることに注意してください。",
|
||||
"cmake-tools.configuration.cmake.allowUnsupportedPresetsVersions.description": "CMake Tools 拡張機能が現在サポートしていないバージョンの機能を使用しているプリセット ファイルの使用を有効にします。不明なプロパティとマクロは無視されます。",
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"schemas/CMakePresets-v8-schema.json.": "これらのプリセットでは、CMake に渡すジェネレーターとビルド ディレクトリや、オプションとして変数と他の引数のリストが指定されます。",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.schema": "このドキュメントを検証するスキーマ。",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.$schema": "このドキュメントを検証するスキーマ。",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.version": "JSON スキーマのバージョンを表す必須の整数です。",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired": "このプロジェクトをビルドするために必要な CMake の最小バージョンを表す、オプションのオブジェクトです。",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired.properties.major": "メジャー バージョンを表す、オプションの整数です。",
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
"circular.variable.reference": "循環変数参照が見つかりました: {0}",
|
||||
"reached.max.recursion": "文字列展開の再帰の最大数に達しました。循環参照の可能性があります。",
|
||||
"exception.expanding.string": "文字列 {0} の展開中に例外が発生しました: {1}",
|
||||
"expand.expandstringhelper": "{0} を展開しています",
|
||||
"invalid.variable.reference": "文字列に無効な変数参照 {0} があります: {1}",
|
||||
"command.not.supported": "コマンドは文字列ではサポートされていません: {0}",
|
||||
"exception.executing.command": "文字列に対してコマンド {0} を実行中に例外が発生しました: {1} {2}"
|
||||
"exception.executing.command": "文字列に対してコマンド {0} を実行中に例外が発生しました: {1} {2}",
|
||||
"expand.expandstringhelper": "{0} を展開しました"
|
||||
}
|
|
@ -21,6 +21,7 @@
|
|||
"filed.to.check.binary": "例外 {1} により、バイナリ {0} をチェックできませんでした",
|
||||
"failed.to.scan.kit": "キット ファイルをスキャンできませんでした",
|
||||
"founds.kits.in.directory": "ディレクトリ {1} に {0} 個のキットが見つかりました",
|
||||
"error.running.setup.script": "{0} の実行中に次のエラーが発生しました: {1}",
|
||||
"error.parsing.environment": "環境変数の解析でエラーが発生しました: {0}",
|
||||
"ok.running": "OK、{0} は実行中、env vars: {1}",
|
||||
"checking.for.kit": "キットを確認しています: {0}",
|
||||
|
@ -29,6 +30,7 @@
|
|||
"generator.present": "ジェネレーターが存在します: {0}",
|
||||
"selected.preferred.generator.name": "選択された優先ジェネレーター名: {0} {1}",
|
||||
"failed.to.scan.for.kits": "GNU CLI Clang キットをスキャンできません: CMake パスが定義されていません",
|
||||
"vs.instance.not.found.run.scan.kits": "キット \"{0}\" - ({1}) の VS インストール インスタンスが見つかりません。キットを再スキャンし、システムに存在しなくなったユーザー ローカル エントリも削除することをお勧めします。",
|
||||
"kit.env": "キット {0} の環境: {1}",
|
||||
"scanning.for.kits.on.system": "システムでキットをスキャンしています",
|
||||
"scanning.for.kits": "キットをスキャンしています",
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
{
|
||||
"workflow.preset.not.set": "ワークフロー プリセットが設定されていません",
|
||||
"no.project.found": "フォルダー {0} のプロジェクトが見つかりません",
|
||||
"workflow.configuring.clean": "ワークフローの {0} 構成プリセットを使用してクリーン プロジェクトを構成しています。",
|
||||
"workflow.configuring": "ワークフローの {0} 構成プリセットを使用してプロジェクトを構成しています。",
|
||||
"workflow.building": "ワークフロー ステップの {0} ビルド プリセットを使用してプロジェクトをビルドしています。",
|
||||
"workflow.running.ctest": "ワークフロー ステップの {0} テスト プリセットに対して ctest を実行しています。",
|
||||
|
|
|
@ -196,7 +196,7 @@
|
|||
"cmake-tools.configuration.cmake.revealLog.focus.description": "로그가 나타나고 출력 채널이 커서 포커스를 받습니다.",
|
||||
"cmake-tools.configuration.cmake.revealLog.always.description": "로그가 나타나지만 출력 채널은 커서 포커스를 받지 않습니다.",
|
||||
"cmake-tools.configuration.cmake.revealLog.never.description": "로그가 나타나지도 않고 초점을 맞추지 않습니다.",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "compile_commands.json 내보내기를 사용하도록 설정합니다.",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "compile_commands.json 내보내기를 사용하도록 설정합니다. 키트 시나리오에서만 사용됩니다. 사전 설정 시나리오에서는 CMakePresets.json을 사용하여 설정하세요.",
|
||||
"cmake-tools.configuration.cmake.useCMakePresets.description": "CMakePresets.json을 사용하여 드라이브 CMake 구성, 빌드 및 테스트를 구성합니다. CMakePresets.json을 사용할 때, 키트, 변형 및 settings.json의 일부 설정이 무시됩니다.",
|
||||
"cmake-tools.configuration.cmake.allowCommentsInPresetsFile.description": "CMakePresets.json의 설명과 같은 JSON 확장 사용을 허용합니다. CMakePresets.json 파일은 다른 IDE에서 또는 비표준 JSON을 사용하는 경우 명령줄에서 유효하지 않은 것으로 간주될 수 있습니다.",
|
||||
"cmake-tools.configuration.cmake.allowUnsupportedPresetsVersions.description": "CMake Tools 확장에서 현재 지원하지 않는 버전의 기능을 사용하는 사전 설정 파일을 사용하도록 설정합니다. 알 수 없는 속성 및 매크로는 무시됩니다.",
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"schemas/CMakePresets-v8-schema.json.": "사전 설정은 생성기 및 빌드 디렉터리를 지정하며, 필요한 경우 CMake에 전달할 변수 및 기타 인수 목록을 지정합니다.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.schema": "이 문서를 확인할 스키마입니다.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.$schema": "이 문서를 확인할 스키마입니다.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.version": "JSON 스키마의 버전을 나타내는 필수 정수입니다.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired": "이 프로젝트를 빌드하는 데 필요한 CMake의 최소 버전을 나타내는 선택적 개체입니다.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired.properties.major": "주 버전을 나타내는 선택적 정수입니다.",
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
"circular.variable.reference": "순환 변수 참조 발견: {0}",
|
||||
"reached.max.recursion": "최대 문자열 확장 재귀에 도달했습니다. 순환 참조가 발생할 수 있습니다.",
|
||||
"exception.expanding.string": "{0} 문자열 확장 중 예외 발생: {1}",
|
||||
"expand.expandstringhelper": "{0} 확장 중",
|
||||
"invalid.variable.reference": "문자열의 잘못된 변수 참조 {0}: {1}",
|
||||
"command.not.supported": "문자열에 대해 명령이 지원되지 않음: {0}",
|
||||
"exception.executing.command": "문자열에 대해 명령 {0}을(를) 실행하는 동안 예외 발생: {1} {2}"
|
||||
"exception.executing.command": "문자열에 대해 명령 {0}을(를) 실행하는 동안 예외 발생: {1} {2}",
|
||||
"expand.expandstringhelper": "{0} 확장됨"
|
||||
}
|
|
@ -21,6 +21,7 @@
|
|||
"filed.to.check.binary": "예외로 인해 이진 파일 {0}을(를) 확인하지 못함: {1}",
|
||||
"failed.to.scan.kit": "키트 파일을 검색하지 못함",
|
||||
"founds.kits.in.directory": "디렉터리 {1}에서 {0}개 키트를 찾음",
|
||||
"error.running.setup.script": "{0}을(를) 실행하는 동안 오류 발생: {1}",
|
||||
"error.parsing.environment": "환경 변수를 구문 분석하는 동안 오류 발생: {0}",
|
||||
"ok.running": "{0} 정상 실행 중, 환경 변수: {1}",
|
||||
"checking.for.kit": "키트를 확인하는 중: {0}",
|
||||
|
@ -29,6 +30,7 @@
|
|||
"generator.present": "생성기가 있음: {0}",
|
||||
"selected.preferred.generator.name": "선택된 기본 설정 생성기 이름: {0} {1}",
|
||||
"failed.to.scan.for.kits": "GNU CLI Clang 키트를 검사할 수 없음: CMake 경로가 정의되지 않음",
|
||||
"vs.instance.not.found.run.scan.kits": "\"{0}\" 키트에 대한 VS 설치 인스턴스를 찾을 수 없습니다 - ({1}). 키트를 다시 스캔하고 시스템에 더 이상 존재하지 않는 사용자 로컬 항목도 모두 제거하는 것이 좋습니다.",
|
||||
"kit.env": "{0} 키트 환경: {1}",
|
||||
"scanning.for.kits.on.system": "시스템에서 키트를 검색하는 중",
|
||||
"scanning.for.kits": "키트를 검색하는 중",
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
{
|
||||
"workflow.preset.not.set": "워크플로 사전 설정이 설정되지 않았습니다.",
|
||||
"no.project.found": "{0} 폴더에 대한 프로젝트를 찾을 수 없습니다.",
|
||||
"workflow.configuring.clean": "워크플로의 {0} 구성 사전 설정으로 정리 프로젝트를 구성합니다.",
|
||||
"workflow.configuring": "워크플로의 {0} 구성 사전 설정으로 프로젝트를 구성합니다.",
|
||||
"workflow.building": "워크플로 단계의 {0} 빌드 사전 설정으로 프로젝트를 빌드합니다.",
|
||||
"workflow.running.ctest": "워크플로 단계의 {0} 테스트 사전 설정에 대해 ctest를 실행합니다.",
|
||||
|
|
|
@ -196,7 +196,7 @@
|
|||
"cmake-tools.configuration.cmake.revealLog.focus.description": "Dziennik jest wyświetlany, a kanał wyjściowy przyjmuje fokus kursora.",
|
||||
"cmake-tools.configuration.cmake.revealLog.always.description": "Dziennik jest wyświetlany, ale kanał wyjściowy nie przyjmuje fokusu kursora.",
|
||||
"cmake-tools.configuration.cmake.revealLog.never.description": "Dziennik nie pojawia się ani nie przyjmuje fokusu.",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "Umożliwia eksportowanie pliku compile_commands.js.",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "Umożliwia eksportowanie pliku compile_commands.json. Jest to używane tylko w scenariuszach Zestawy. W scenariuszach Ustawienia wstępne ustaw to przy użyciu pliku CMakePresets.json",
|
||||
"cmake-tools.configuration.cmake.useCMakePresets.description": "Użyj pliku CMakePresets.json, aby ustawić konfigurację, kompilowanie i test dysku CMake. Przy korzystaniu z pliku CMakePresets.json zestawy, warianty i niektóre ustawienia w pliku settings.json zostaną pominięte.",
|
||||
"cmake-tools.configuration.cmake.allowCommentsInPresetsFile.description": "Zezwalaj na używanie rozszerzeń JSON, takich jak komentarze w CMakePresets.json. Pamiętaj, że plik CMakePresets.json może być uznany za nieprawidłowy przez inne środowiska IDE lub w wierszu polecenia, jeśli używasz niestandardowego kodu JSON.",
|
||||
"cmake-tools.configuration.cmake.allowUnsupportedPresetsVersions.description": "Umożliwia korzystanie z plików ustawień wstępnych używających funkcji z wersji, których rozszerzenie Narzędzia CMake obecnie nie obsługuje. Nieznane właściwości i makra zostaną zignorowane.",
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"schemas/CMakePresets-v8-schema.json.": "Ustawienia wstępne określają generator i katalog kompilacji oraz, opcjonalnie, listę zmiennych i innych argumentów, które mają być przekazywane do narzędzia CMake.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.schema": "Schemat, względem którego ma zostać zweryfikowany ten dokument.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.$schema": "Schemat, względem którego ma zostać zweryfikowany ten dokument.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.version": "Wymagana liczba całkowita reprezentująca wersję schematu JSON.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired": "Opcjonalny obiekt reprezentujący minimalną wersję narzędzia CMake wymaganą do skompilowania tego projektu.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired.properties.major": "Opcjonalna liczba całkowita reprezentująca wersję główną.",
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
"circular.variable.reference": "Znaleziono odwołanie do zmiennej cyklicznej: {0}",
|
||||
"reached.max.recursion": "Osiągnięto maksymalną rekursję rozszerzenia ciągu. Możliwe odwołanie cykliczne.",
|
||||
"exception.expanding.string": "Wyjątek podczas rozwijania ciągu {0}: {1}",
|
||||
"expand.expandstringhelper": "rozwijanie {0}",
|
||||
"invalid.variable.reference": "Nieprawidłowe odwołanie do zmiennej {0} w ciągu: {1}",
|
||||
"command.not.supported": "Polecenia nie są obsługiwane w przypadku ciągu: {0}",
|
||||
"exception.executing.command": "Wyjątek podczas wykonywania polecenia {0} dla ciągu: {1} {2}"
|
||||
"exception.executing.command": "Wyjątek podczas wykonywania polecenia {0} dla ciągu: {1} {2}",
|
||||
"expand.expandstringhelper": "rozwinięto {0}"
|
||||
}
|
|
@ -21,6 +21,7 @@
|
|||
"filed.to.check.binary": "Nie można sprawdzić pliku binarnego {0} według wyjątku: {1}",
|
||||
"failed.to.scan.kit": "Nie można skanować pliku zestawu",
|
||||
"founds.kits.in.directory": "W katalogu {1} znaleziono zestawy w liczbie {0}",
|
||||
"error.running.setup.script": "Błąd podczas uruchamiania {0} za pomocą: {1}",
|
||||
"error.parsing.environment": "Wystąpił błąd podczas analizowania zmiennej środowiskowej: {0}",
|
||||
"ok.running": "Ok, uruchamianie {0}, env vars: {1}",
|
||||
"checking.for.kit": "Sprawdzanie pod kątem zestawu: {0}",
|
||||
|
@ -29,6 +30,7 @@
|
|||
"generator.present": "Generator jest dostępny: {0}",
|
||||
"selected.preferred.generator.name": "Nazwa wybranego preferowanego generatora: {0} {1}",
|
||||
"failed.to.scan.for.kits": "Nie można przeskanować w poszukiwaniu zestawów Clang interfejsu wiersza polecenia GNU: ścieżka narzędzia CMake nie jest zdefiniowana",
|
||||
"vs.instance.not.found.run.scan.kits": "Nie znaleziono wystąpienia instalacji programu VS dla zestawu „{0}” - ({1}). Zaleca się ponowne zeskanowanie zestawów i usunięcie wszystkich wpisów lokalnych użytkownika, które nie są już obecne w systemie.",
|
||||
"kit.env": "Środowisko zestawu {0}: {1}",
|
||||
"scanning.for.kits.on.system": "Trwa skanowanie w poszukiwaniu zestawów w systemie",
|
||||
"scanning.for.kits": "Skanowanie w poszukiwaniu zestawów",
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
{
|
||||
"workflow.preset.not.set": "Ustawienie wstępne przepływu pracy nie jest ustawione",
|
||||
"no.project.found": "Nie znaleziono projektu dla folderu {0}",
|
||||
"workflow.configuring.clean": "Konfigurowanie czystego projektu przy użyciu skonfigurowanych ustawień wstępnych przepływu pracy {0}.",
|
||||
"workflow.configuring": "Konfigurowanie projektu przy użyciu {0} ustawień wstępnych zestawu przepływu pracy.",
|
||||
"workflow.building": "Kompilowanie projektu przy użyciu ustawień wstępnych {0} kompilacji kroku przepływu pracy.",
|
||||
"workflow.running.ctest": "Uruchomienie funkcji ctest dla {0} ustawień wstępnych testowego kroku przepływu pracy.",
|
||||
|
|
|
@ -196,7 +196,7 @@
|
|||
"cmake-tools.configuration.cmake.revealLog.focus.description": "O log é exibido e o canal de saída usa o foco do cursor.",
|
||||
"cmake-tools.configuration.cmake.revealLog.always.description": "O log é exibido, mas o canal de saída não leva o foco do cursor.",
|
||||
"cmake-tools.configuration.cmake.revealLog.never.description": "O log não aparece nem usa o foco.",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "Habilita a exportação de compile_commands.json.",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "Habilita a exportação de compile_commands.json. Isso só será utilizado em cenários de Kits. Em cenários de predefinições, defina isso utilizando CMakePresets.json",
|
||||
"cmake-tools.configuration.cmake.useCMakePresets.description": "Use o CMakePresets.json para configurar a unidade CMake de configuração, compilação e teste. Ao usar o CMakePresets.json, kits, variantes e algumas configurações do settings.json serão ignoradas.",
|
||||
"cmake-tools.configuration.cmake.allowCommentsInPresetsFile.description": "Permita o uso de extensões JSON, tais como comentários em CMakePresets.json. Observe que seu arquivo CMakePresets.json pode ser considerado inválido por outros IDEs ou na linha de comando se você usar JSON não padrão.",
|
||||
"cmake-tools.configuration.cmake.allowUnsupportedPresetsVersions.description": "Habilita o uso de arquivos de predefinições que estão usando recursos das versões às quais a extensão CMake Tools não dá suporte no momento. Propriedades e macros desconhecidas serão ignoradas.",
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"schemas/CMakePresets-v8-schema.json.": "As predefinições especificam o gerador e o diretório de build e, opcionalmente, uma lista de variáveis e outros argumentos para passar para o CMake.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.schema": "O esquema no qual verificar este documento.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.$schema": "O esquema no qual verificar este documento.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.version": "Um inteiro necessário que representa a versão do esquema JSON.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired": "Um objeto opcional que representa a versão mínima do CMake necessária para compilar este projeto.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired.properties.major": "Um inteiro opcional representando a versão principal.",
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
"circular.variable.reference": "Referência de variável circular encontrada: {0}",
|
||||
"reached.max.recursion": "Recursão máxima de expansão da cadeia de caracteres atingida. Possível referência circular.",
|
||||
"exception.expanding.string": "Exceção ao expandir a cadeia de {0}: {1}",
|
||||
"expand.expandstringhelper": "expandir {0}",
|
||||
"invalid.variable.reference": "Referência de variável {0} inválida na cadeia de caracteres: {1}",
|
||||
"command.not.supported": "Os comandos não são compatíveis com a cadeia de caracteres: {0}",
|
||||
"exception.executing.command": "Exceção ao executar o comando {0} para a cadeia de caracteres: {1} {2}"
|
||||
"exception.executing.command": "Exceção ao executar o comando {0} para a cadeia de caracteres: {1} {2}",
|
||||
"expand.expandstringhelper": "{0} expandido"
|
||||
}
|
|
@ -21,6 +21,7 @@
|
|||
"filed.to.check.binary": "Falha ao verificar o binário {0} por exceção: {1}",
|
||||
"failed.to.scan.kit": "Falha ao examinar um arquivo de kit",
|
||||
"founds.kits.in.directory": "Foram localizados {0} kits no diretório {1}",
|
||||
"error.running.setup.script": "Erro ao executar {0} com: {1}",
|
||||
"error.parsing.environment": "Erro ao analisar a variável de ambiente: {0}",
|
||||
"ok.running": "OK executando {0}, env vars: {1}",
|
||||
"checking.for.kit": "Verificando o kit: {0}",
|
||||
|
@ -29,6 +30,7 @@
|
|||
"generator.present": "Gerador Presente: {0}",
|
||||
"selected.preferred.generator.name": "Nome do Gerador Preferencial Selecionado: {0} {1}",
|
||||
"failed.to.scan.for.kits": "Não é possível verificar os kits GNU CLI Clang: CMake Path é indefinido",
|
||||
"vs.instance.not.found.run.scan.kits": "Instância de instalação do VS não encontrada para o kit \"{0}\" - ({1}). É recomendável que você examine novamente os kits e também remova todas as entradas locais do usuário que não estão mais presentes no sistema.",
|
||||
"kit.env": "O ambiente do kit {0}: {1}",
|
||||
"scanning.for.kits.on.system": "Examinando o sistema em busca de Kits",
|
||||
"scanning.for.kits": "Examinando em busca de kits",
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
{
|
||||
"workflow.preset.not.set": "A predefinição do fluxo de trabalho não está definida",
|
||||
"no.project.found": "Nenhum projeto encontrado na pasta {0}",
|
||||
"workflow.configuring.clean": "Configurando o projeto limpo com a predefinição de configuração {0} do fluxo de trabalho.",
|
||||
"workflow.configuring": "Configurando o projeto com a predefinição de configuração {0} do fluxo de trabalho.",
|
||||
"workflow.building": "Criando o projeto com a predefinição de compilação {0} da etapa do fluxo de trabalho.",
|
||||
"workflow.running.ctest": "Executando o Ctest para a predefinição de teste {0} da etapa do fluxo de trabalho.",
|
||||
|
|
|
@ -196,7 +196,7 @@
|
|||
"cmake-tools.configuration.cmake.revealLog.focus.description": "Журнал отображается и выходной канал фокусируется курсором.",
|
||||
"cmake-tools.configuration.cmake.revealLog.always.description": "Журнал отображается, но выходной канал не фокусируется курсором.",
|
||||
"cmake-tools.configuration.cmake.revealLog.never.description": "Журнал не отображается и не фокусируется.",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "Включает exporting compile_commands.json.",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "Разрешает экспортировать compile_commands.json. Это используется только в сценариях комплектов. В сценариях предварительных установок установите это с помощью CMakePresets.json.",
|
||||
"cmake-tools.configuration.cmake.useCMakePresets.description": "Используйте CMakePresets.json для настройки конфигурации, сборки и тестирования CMake диска. При использовании CMakePresets.json наборы, варианты и некоторые параметры в settings.json будут пропущены.",
|
||||
"cmake-tools.configuration.cmake.allowCommentsInPresetsFile.description": "Разрешить использование расширений JSON, таких как комментарии, в CMakePresets.json. Обратите внимание, что файл CMakePresets.json может считаться недействительным в других IDE или в командной строке, если вы используете нестандартный JSON.",
|
||||
"cmake-tools.configuration.cmake.allowUnsupportedPresetsVersions.description": "Позволяет использовать предустановленные файлы, использующие функции из версий, которые сейчас не поддерживаются расширением CMake Tools. Неизвестные свойства и макросы будут игнорироваться.",
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"schemas/CMakePresets-v8-schema.json.": "Предустановки определяют генератор и каталог сборки, а также при необходимости список переменных и других аргументов, передаваемых CMake.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.schema": "Схема, по которой следует проверить этот документ.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.$schema": "Схема, по которой следует проверить этот документ.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.version": "Обязательное целое число, представляющее версию схемы JSON.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired": "Необязательный объект, представляющий минимальную версию CMake, необходимую для сборки этого проекта.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired.properties.major": "Необязательное целое число, представляющее основной номер версии.",
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
"circular.variable.reference": "Найдена циклическая ссылка на переменную: {0}",
|
||||
"reached.max.recursion": "Достигнуто максимальное число рекурсий расширения строки. Возможна циклическая ссылка.",
|
||||
"exception.expanding.string": "Исключение при развертывании строки {0}: {1}",
|
||||
"expand.expandstringhelper": "развертывание строки {0}",
|
||||
"invalid.variable.reference": "Недопустимая ссылка на переменную {0} в строке: {1}",
|
||||
"command.not.supported": "Команды не поддерживаются для строк: {0}",
|
||||
"exception.executing.command": "Исключение при выполнении команды {0} для строки: {1} {2}"
|
||||
"exception.executing.command": "Исключение при выполнении команды {0} для строки: {1} {2}",
|
||||
"expand.expandstringhelper": "развернуто {0}"
|
||||
}
|
|
@ -21,6 +21,7 @@
|
|||
"filed.to.check.binary": "Не удалось проверить двоичный файл {0}, исключение: {1}",
|
||||
"failed.to.scan.kit": "Не удалось выполнить поиск файла набора",
|
||||
"founds.kits.in.directory": "Обнаружено наборов в каталоге {1}: {0}",
|
||||
"error.running.setup.script": "Ошибка при запуске {0} с: {1}",
|
||||
"error.parsing.environment": "Ошибка при синтаксическом анализе переменной среды: {0}",
|
||||
"ok.running": "Сценарий {0} успешно запущен, переменные среды: {1}",
|
||||
"checking.for.kit": "Проверка на наличие набора: {0}",
|
||||
|
@ -29,6 +30,7 @@
|
|||
"generator.present": "Генератор существует: {0}",
|
||||
"selected.preferred.generator.name": "Выбранное предпочтительное имя генератора: {0} {1}",
|
||||
"failed.to.scan.for.kits": "Не удалось проверить комплекты Clang CLI GNU: путь к CMake не задан",
|
||||
"vs.instance.not.found.run.scan.kits": "Экземпляр установки VS не найден для набора \"{0}\" — ({1}). Рекомендуется повторно просканировать комплекты, а также удалить все локальные записи пользователя, которых больше нет в системе.",
|
||||
"kit.env": "Среда для набора {0}: {1}",
|
||||
"scanning.for.kits.on.system": "Поиск наборов в системе.",
|
||||
"scanning.for.kits": "Поиск наборов.",
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
{
|
||||
"workflow.preset.not.set": "Предустановка рабочего процесса не настроена",
|
||||
"no.project.found": "Не найден проект для папки {0}",
|
||||
"workflow.configuring.clean": "Настройка чистого проекта с предустановкой настройки {0} рабочего процесса.",
|
||||
"workflow.configuring": "Настройка проекта с предустановкой настройки {0} рабочего процесса.",
|
||||
"workflow.building": "Сборка проекта с предустановкой сборки {0} шага рабочего процесса.",
|
||||
"workflow.running.ctest": "Выполнение ctest для предустановки теста {0} шага рабочего процесса.",
|
||||
|
|
|
@ -196,7 +196,7 @@
|
|||
"cmake-tools.configuration.cmake.revealLog.focus.description": "Günlük görünür ve çıkış kanalı imlecin odağında olur.",
|
||||
"cmake-tools.configuration.cmake.revealLog.always.description": "Günlük görünür ancak çıkış kanalı imlecin odağında olmaz.",
|
||||
"cmake-tools.configuration.cmake.revealLog.never.description": "Günlük görünmez ve odakta olmaz.",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "compile_commands.js dosyasının dışarı aktarılmasını sağlar.",
|
||||
"cmake-tools.configuration.cmake.exportCompileCommandsFile.description": "compile_commands.js dosyasının dışarı aktarılmasını sağlar. Bu yalnızca Kits senaryolarında kullanılır. Önayar senaryolarında bunu lütfen CMakePresets.json kullanarak ayarlayın.",
|
||||
"cmake-tools.configuration.cmake.useCMakePresets.description": "CMake yapılandırma, derleme ve test sürücüsünü yapılandırmak için CMakePresets.json kullanın. CMakePresets.json kullanılırken kitler, çeşitler ve settings.json'daki bazı ayarla yoksayılır.",
|
||||
"cmake-tools.configuration.cmake.allowCommentsInPresetsFile.description": "CMakePresets.json'daki yorumlar gibi JSON uzantılarının kullanımına izin verin. Standart olmayan JSON kullanıyorsanız, CMakePresets.json dosyanızın diğer IDE'ler tarafından veya komut satırında geçersiz sayılabileceğini lütfen unutmayın.",
|
||||
"cmake-tools.configuration.cmake.allowUnsupportedPresetsVersions.description": "CMake Araçları uzantısının şu anda desteklemediği sürümlerdeki özellikleri kullanan ön ayar dosyalarının kullanımını etkinleştirir. Bilinmeyen özellikler ve makrolar yoksayılır.",
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"schemas/CMakePresets-v8-schema.json.": "Ön ayarlar, oluşturucu ile derleme dizininin yanı sıra isteğe bağlı olarak CMake'e geçirilecek değişkenlerin ve diğer bağımsız değişkenlerin listesini belirtir.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.schema": "Bu belgenin doğrulanmasında temel alınacak şema.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.$schema": "Bu belgenin doğrulanmasında temel alınacak şema.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.version": "JSON şemasının sürümünü temsil eden gerekli bir tamsayı.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired": "Bu projeyi derlemek için gereken en düşük CMake sürümünü temsil eden isteğe bağlı bir nesne.",
|
||||
"schemas/CMakePresets-v8-schema.json.properties.cmakeMinimumRequired.properties.major": "Ana sürümü temsil eden isteğe bağlı bir tamsayı.",
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
"circular.variable.reference": "Döngüsel değişken başvurusu bulundu: {0}",
|
||||
"reached.max.recursion": "En yüksek dize genişletme özyinelemesine ulaşıldı. Olası döngüsel başvuru.",
|
||||
"exception.expanding.string": "{0}: {1} dizesi genişletilirken özel durum",
|
||||
"expand.expandstringhelper": "{0} genişletiliyor",
|
||||
"invalid.variable.reference": "{1} dizesinde geçersiz {0} değişken başvurusu",
|
||||
"command.not.supported": "Şu dize için komutlar desteklenmiyor: {0}",
|
||||
"exception.executing.command": "Dizesi için {0} komutu yürütülürken özel durum oluştu: {1} {2}"
|
||||
"exception.executing.command": "Dizesi için {0} komutu yürütülürken özel durum oluştu: {1} {2}",
|
||||
"expand.expandstringhelper": "genişletilmiş {0}"
|
||||
}
|
|
@ -21,6 +21,7 @@
|
|||
"filed.to.check.binary": "{0} ikili dosyası, {1} özel durumu ile denetlenemedi",
|
||||
"failed.to.scan.kit": "Bir set dosyası taranamadı",
|
||||
"founds.kits.in.directory": "{1} dizininde {0} set bulundu",
|
||||
"error.running.setup.script": "{0} çalıştırılırken {1} ile hata oluştu.",
|
||||
"error.parsing.environment": "{0} ortam değişkeni ayrıştırılırken hata oluştu",
|
||||
"ok.running": "{0} sorunsuz çalışıyor, ortam değişkenleri: {1}",
|
||||
"checking.for.kit": "{0} seti denetleniyor",
|
||||
|
@ -29,6 +30,7 @@
|
|||
"generator.present": "Mevcut Oluşturucu: {0}",
|
||||
"selected.preferred.generator.name": "Seçili Tercih Edilen Oluşturucu Adı: {0} {1}",
|
||||
"failed.to.scan.for.kits": "GNU CLI Clang setleri taranamıyor: CMake Path tanımsız",
|
||||
"vs.instance.not.found.run.scan.kits": "\"{0}\" seti için VS yükleme örneği bulunamadı - ({1}). Setleri yeniden taramanız ve ayrıca sistemde artık mevcut olmayan kullanıcı yerel girdilerini kaldırmanız da önerilir.",
|
||||
"kit.env": "Set ortamı {0}: {1}",
|
||||
"scanning.for.kits.on.system": "Sistemdeki Setler için taranıyor",
|
||||
"scanning.for.kits": "Setler için taranıyor",
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
{
|
||||
"workflow.preset.not.set": "İş akışı ön ayarı ayarlanmadı",
|
||||
"no.project.found": "{0} klasörü için proje bulunamadı",
|
||||
"workflow.configuring.clean": "Temiz proje, iş akışının {0} yapılandırma ön ayarıyla yapılandırılıyor.",
|
||||
"workflow.configuring": "Proje, iş akışının {0} yapılandırma ön ayarıyla yapılandırılıyor.",
|
||||
"workflow.building": "İş akışı adımının {0} derleme ön ayarıyla proje derleniyor.",
|
||||
"workflow.running.ctest": "İş akışı adımının {0} test ön ayarı için ctest çalıştırılıyor.",
|
||||
|
|
|
@ -11,6 +11,24 @@ parameters:
|
|||
- default
|
||||
- test
|
||||
- real
|
||||
- name: VerifyChangelog
|
||||
displayName: Attest that CHANGELOG.md is up-to-date.
|
||||
type: string
|
||||
default: no
|
||||
values:
|
||||
- yes
|
||||
- no
|
||||
- name: VerifyNotice
|
||||
displayName: Attest that all NOTICE files are up-to-date.
|
||||
type: string
|
||||
default: no
|
||||
values:
|
||||
- yes
|
||||
- no
|
||||
- name: ReleaseVersion
|
||||
displayName: Release Version to set in the vsix package
|
||||
type: string
|
||||
default: unset
|
||||
|
||||
trigger: none
|
||||
|
||||
|
@ -67,34 +85,10 @@ extends:
|
|||
- checkout: self
|
||||
clean: true
|
||||
fetchTags: false
|
||||
- task: CmdLine@2
|
||||
displayName: Check ReleaseVersion
|
||||
inputs:
|
||||
script: |-
|
||||
@echo off
|
||||
if "$(ReleaseVersion)"=="unset" (
|
||||
echo ^"ReleaseVersion^" was not set
|
||||
exit /B 1
|
||||
)
|
||||
exit /b 0
|
||||
- task: CmdLine@2
|
||||
displayName: Check VerifyNotice
|
||||
inputs:
|
||||
script: |
|
||||
@echo off
|
||||
if "$(VerifyNotice)"=="no" (
|
||||
echo ^"VerifyNotice^" was not set. Set to 'yes' once the NOTICE.txt is confirmed to be up-to-date.
|
||||
exit /B 1
|
||||
)
|
||||
exit /b 0
|
||||
- task: CmdLine@2
|
||||
displayName: Check VerifyChangelog
|
||||
inputs:
|
||||
script: |
|
||||
@echo off
|
||||
if "$(VerifyChangelog)"=="no" (
|
||||
echo ^"VerifyChangelog^" was not set. Set to 'yes' once the CHANGELOG is confirmed to be up-to-date.
|
||||
exit /B 1
|
||||
)
|
||||
exit /b 0
|
||||
- ${{ if not(eq(parameters.VerifyChangelog, 'yes')) }}:
|
||||
- 'CHANGELOG.md should be updated before scheduling the pipeline.'
|
||||
- ${{ if not(eq(parameters.VerifyNotice, 'yes')) }}:
|
||||
- 'Third party notices should be updated before scheduling the pipeline.'
|
||||
- ${{ if not(eq(parameters.ReleaseVersion, 'yes')) }}:
|
||||
- 'ReleaseVersion needs to be set before scheduling the pipeline.'
|
||||
- template: /jobs/shared/build.yml@self
|
62
package.json
62
package.json
|
@ -18,14 +18,16 @@
|
|||
"tools",
|
||||
"build",
|
||||
"c++",
|
||||
"native"
|
||||
"native",
|
||||
"syntaxes"
|
||||
],
|
||||
"engines": {
|
||||
"vscode": "^1.63.0"
|
||||
},
|
||||
"categories": [
|
||||
"Other",
|
||||
"Debuggers"
|
||||
"Debuggers",
|
||||
"Programming Languages"
|
||||
],
|
||||
"galleryBanner": {
|
||||
"color": "#13578c",
|
||||
|
@ -60,10 +62,30 @@
|
|||
"workspaceContains:*/*/CMakeLists.txt",
|
||||
"workspaceContains:*/*/*/CMakeLists.txt",
|
||||
"workspaceContains:.vscode/cmake-kits.json",
|
||||
"onFileSystem:cmake-tools-schema"
|
||||
"onFileSystem:cmake-tools-schema",
|
||||
"onLanguage:cmake"
|
||||
],
|
||||
"main": "./dist/main",
|
||||
"contributes": {
|
||||
"languages": [
|
||||
{
|
||||
"id": "cmake",
|
||||
"extensions": [
|
||||
".cmake"
|
||||
],
|
||||
"filenames": ["CMakeLists.txt"],
|
||||
"aliases": [
|
||||
"CMake"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "cmake-cache",
|
||||
"filenames": ["CMakeCache.txt"],
|
||||
"aliases": [
|
||||
"CMake Cache"
|
||||
]
|
||||
}
|
||||
],
|
||||
"commands": [
|
||||
{
|
||||
"command": "cmake.openCMakePresets",
|
||||
|
@ -828,6 +850,18 @@
|
|||
"category": "CMake"
|
||||
}
|
||||
],
|
||||
"grammars": [
|
||||
{
|
||||
"language": "cmake",
|
||||
"scopeName": "source.cmake",
|
||||
"path": "./syntaxes/CMake.tmLanguage"
|
||||
},
|
||||
{
|
||||
"language": "cmake-cache",
|
||||
"scopeName": "source.cmakecache",
|
||||
"path": "./syntaxes/CMakeCache.tmLanguage"
|
||||
}
|
||||
],
|
||||
"taskDefinitions": [
|
||||
{
|
||||
"type": "cmake",
|
||||
|
@ -1738,7 +1772,7 @@
|
|||
},
|
||||
{
|
||||
"command": "cmake.projectStatus.selectPackagePreset",
|
||||
"when": "view == cmake.projectStatus && cmake:enableFullFeatureSet && viewItem == 'packagePreset'",
|
||||
"when": "view == cmake.projectStatus && cmake:enableFullFeatureSet && viewItem =~ /packagePreset/",
|
||||
"group": "inline"
|
||||
},
|
||||
{
|
||||
|
@ -2207,6 +2241,12 @@
|
|||
"description": "%cmake-tools.configuration.cmake.ctest.testExplorerIntegrationEnabled.description%",
|
||||
"scope": "machine-overridable"
|
||||
},
|
||||
"cmake.ctest.testSuiteDelimiter": {
|
||||
"type": "string",
|
||||
"default": null,
|
||||
"markdownDescription": "%cmake-tools.configuration.cmake.ctest.testSuiteDelimiter.markdownDescription%",
|
||||
"scope": "machine-overridable"
|
||||
},
|
||||
"cmake.parseBuildDiagnostics": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
|
@ -2577,6 +2617,12 @@
|
|||
"description": "%cmake-tools.configuration.cmake.configureOnEdit.description%",
|
||||
"scope": "resource"
|
||||
},
|
||||
"cmake.deleteBuildDirOnCleanConfigure": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "%cmake-tools.configuration.cmake.deleteBuildDirOnCleanCconfigure.description%",
|
||||
"scope": "resource"
|
||||
},
|
||||
"cmake.setBuildTypeOnMultiConfig": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
|
@ -3732,7 +3778,7 @@
|
|||
"string.prototype.matchall": "^4.0.10",
|
||||
"tmp": "^0.2.1",
|
||||
"vscode-cpptools": "^6.1.0",
|
||||
"@vscode/extension-telemetry": "^0.6.2",
|
||||
"@vscode/extension-telemetry": "^0.9.6",
|
||||
"vscode-nls": "^5.0.0",
|
||||
"vscode-tas-client": "^0.1.45",
|
||||
"which": "~2.0.2",
|
||||
|
@ -3751,10 +3797,8 @@
|
|||
"yargs-parser": "^20.2.4",
|
||||
"xml2js": "^0.5.0",
|
||||
"tsconfig-paths*/json5": "^1.0.2",
|
||||
"minimatch": "^3.0.5"
|
||||
"minimatch": "^3.0.5",
|
||||
"**/braces": "^3.0.3"
|
||||
},
|
||||
"extensionPack": [
|
||||
"twxs.cmake"
|
||||
],
|
||||
"packageManager": "yarn@1.22.19"
|
||||
}
|
||||
|
|
|
@ -106,6 +106,12 @@
|
|||
},
|
||||
"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.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.)",
|
||||
"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.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, and `diab` for the Wind River Diab compiler.",
|
||||
|
@ -166,6 +172,7 @@
|
|||
"cmake-tools.configuration.cmake.copyCompileCommands.description": "Copy compile_commands.json to this location after a successful 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.",
|
||||
"cmake-tools.configuration.cmake.setBuildTypeOnMultiConfig.description": "Set CMAKE_BUILD_TYPE also on multi config generators.",
|
||||
"cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.",
|
||||
"cmake-tools.configuration.cmake.cmakeCommunicationMode": "The protocol used to communicate between the extension and CMake.",
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"version"
|
||||
],
|
||||
"properties": {
|
||||
"schema": {
|
||||
"$schema": {
|
||||
"type": "string",
|
||||
"description": "The schema against which to verify this document."
|
||||
},
|
||||
|
|
|
@ -1,6 +1,13 @@
|
|||
import * as proc from '../proc';
|
||||
import * as util from '../util';
|
||||
import {setContextAndStore} from '../extension';
|
||||
import * as logging from '@cmt/logging';
|
||||
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('cmakeExecutable');
|
||||
|
||||
export interface CMakeExecutable {
|
||||
path: string;
|
||||
|
@ -29,10 +36,14 @@ export async function getCMakeExecutableInformation(path: string): Promise<CMake
|
|||
const normalizedPath = util.platformNormalizePath(path);
|
||||
if (cmakeInfo.has(normalizedPath)) {
|
||||
const cmakeExe: CMakeExecutable = cmakeInfo.get(normalizedPath)!;
|
||||
await setCMakeDebuggerAvailableContext(
|
||||
cmakeExe.isDebuggerSupported?.valueOf() ?? false
|
||||
);
|
||||
return cmakeExe;
|
||||
if (cmakeExe.isPresent) {
|
||||
await setCMakeDebuggerAvailableContext(
|
||||
cmakeExe.isDebuggerSupported?.valueOf() ?? false
|
||||
);
|
||||
return cmakeExe;
|
||||
} else {
|
||||
log.error(localize('cmake.exe.not.found.in.cache', 'CMake executable not found in cache. Checking again.'));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
|
|
|
@ -582,7 +582,6 @@ export class CMakeProject {
|
|||
workflowPreset,
|
||||
lightNormalizePath(this.folderPath || '.'),
|
||||
this.sourceDir,
|
||||
this.getPreferredGeneratorName(),
|
||||
true,
|
||||
this.configurePreset?.name);
|
||||
if (!expandedWorkflowPreset) {
|
||||
|
@ -884,6 +883,15 @@ export class CMakeProject {
|
|||
label: util.getRelativePath(file, this.folderPath) + "/CMakeLists.txt",
|
||||
fullPath: file
|
||||
})) : [];
|
||||
|
||||
// Sort files by depth. In general the user may want to select the top-most CMakeLists.txt
|
||||
items.sort((a, b) => {
|
||||
const aDepth = a.fullPath.split(path.sep).length;
|
||||
const bDepth = b.fullPath.split(path.sep).length;
|
||||
|
||||
return aDepth - bDepth;
|
||||
});
|
||||
|
||||
const browse: string = localize("browse.for.cmakelists", "[Browse for CMakeLists.txt]");
|
||||
const dontAskAgain: string = localize("do.not.ask.again", "[Don't Show Again]");
|
||||
items.push({ label: browse, fullPath: "", description: localize("search.for.cmakelists", "Search for CMakeLists.txt on this computer") });
|
||||
|
@ -1916,7 +1924,7 @@ export class CMakeProject {
|
|||
*/
|
||||
async runBuild(targets?: string[], showCommandOnly?: boolean, taskConsumer?: proc.OutputConsumer, isBuildCommand?: boolean): Promise<number> {
|
||||
if (!showCommandOnly) {
|
||||
log.info(localize('run.build', 'Building folder: {0}', this.folderName), (targets && targets.length > 0) ? targets.join(', ') : '');
|
||||
log.info(localize('run.build', 'Building folder: {0}', await this.binaryDir || this.folderName), (targets && targets.length > 0) ? targets.join(', ') : '');
|
||||
}
|
||||
let drv: CMakeDriver | null;
|
||||
if (showCommandOnly) {
|
||||
|
@ -2957,7 +2965,7 @@ export class CMakeProject {
|
|||
}
|
||||
|
||||
let init = [
|
||||
'cmake_minimum_required(VERSION 3.0.0)',
|
||||
'cmake_minimum_required(VERSION 3.5.0)',
|
||||
`project(${projectName} VERSION 0.1.0 LANGUAGES ${langName})`,
|
||||
'\n'
|
||||
].join('\n');
|
||||
|
|
|
@ -171,7 +171,7 @@ export interface ExtensionConfigurationSettings {
|
|||
buildToolArgs: string[];
|
||||
parallelJobs: number | undefined;
|
||||
ctestPath: string;
|
||||
ctest: { parallelJobs: number; allowParallelJobs: boolean; testExplorerIntegrationEnabled: boolean };
|
||||
ctest: { parallelJobs: number; allowParallelJobs: boolean; testExplorerIntegrationEnabled: boolean; testSuiteDelimiter: string };
|
||||
parseBuildDiagnostics: boolean;
|
||||
enabledOutputParsers: string[];
|
||||
debugConfig: CppDebugConfiguration;
|
||||
|
@ -193,6 +193,7 @@ export interface ExtensionConfigurationSettings {
|
|||
loadCompileCommands: boolean;
|
||||
configureOnOpen: boolean | null;
|
||||
configureOnEdit: boolean;
|
||||
deleteBuildDirOnCleanConfigure: boolean;
|
||||
skipConfigureIfCachePresent: boolean | null;
|
||||
useCMakeServer: boolean;
|
||||
cmakeCommunicationMode: CMakeCommunicationMode;
|
||||
|
@ -375,6 +376,9 @@ export class ConfigurationReader implements vscode.Disposable {
|
|||
get testExplorerIntegrationEnabled(): boolean {
|
||||
return this.configData.ctest.testExplorerIntegrationEnabled;
|
||||
}
|
||||
get testSuiteDelimiter(): string {
|
||||
return this.configData.ctest.testSuiteDelimiter;
|
||||
}
|
||||
get parseBuildDiagnostics(): boolean {
|
||||
return !!this.configData.parseBuildDiagnostics;
|
||||
}
|
||||
|
@ -432,6 +436,9 @@ export class ConfigurationReader implements vscode.Disposable {
|
|||
get configureOnEdit() {
|
||||
return this.configData.configureOnEdit;
|
||||
}
|
||||
get deleteBuildDirOnCleanConfigure() {
|
||||
return this.configData.deleteBuildDirOnCleanConfigure;
|
||||
}
|
||||
get skipConfigureIfCachePresent() {
|
||||
return this.configData.skipConfigureIfCachePresent;
|
||||
}
|
||||
|
@ -571,7 +578,7 @@ export class ConfigurationReader implements vscode.Disposable {
|
|||
parallelJobs: new vscode.EventEmitter<number>(),
|
||||
ctestPath: new vscode.EventEmitter<string>(),
|
||||
cpackPath: new vscode.EventEmitter<string>(),
|
||||
ctest: new vscode.EventEmitter<{ parallelJobs: number; allowParallelJobs: boolean; testExplorerIntegrationEnabled: boolean }>(),
|
||||
ctest: new vscode.EventEmitter<{ parallelJobs: number; allowParallelJobs: boolean; testExplorerIntegrationEnabled: boolean; testSuiteDelimiter: string }>(),
|
||||
parseBuildDiagnostics: new vscode.EventEmitter<boolean>(),
|
||||
enabledOutputParsers: new vscode.EventEmitter<string[]>(),
|
||||
debugConfig: new vscode.EventEmitter<CppDebugConfiguration>(),
|
||||
|
@ -592,6 +599,7 @@ export class ConfigurationReader implements vscode.Disposable {
|
|||
loadCompileCommands: new vscode.EventEmitter<boolean>(),
|
||||
configureOnOpen: new vscode.EventEmitter<boolean | null>(),
|
||||
configureOnEdit: new vscode.EventEmitter<boolean>(),
|
||||
deleteBuildDirOnCleanConfigure: new vscode.EventEmitter<boolean>(),
|
||||
skipConfigureIfCachePresent: new vscode.EventEmitter<boolean | null>(),
|
||||
useCMakeServer: new vscode.EventEmitter<boolean>(),
|
||||
cmakeCommunicationMode: new vscode.EventEmitter<CMakeCommunicationMode>(),
|
||||
|
|
|
@ -89,13 +89,6 @@ export class CPackDriver implements vscode.Disposable {
|
|||
}
|
||||
}
|
||||
|
||||
const opts = driver.expansionOptions;
|
||||
const args = [];
|
||||
for (const value of this.ws.config.cpackArgs) {
|
||||
args.push(await expandString(value, opts));
|
||||
}
|
||||
|
||||
cpackArgs = cpackArgs.concat(args);
|
||||
return cpackArgs;
|
||||
}
|
||||
|
||||
|
|
155
src/ctest.ts
155
src/ctest.ts
|
@ -61,6 +61,11 @@ export interface SiteData {
|
|||
|
||||
export interface CTestResults { site: SiteData }
|
||||
|
||||
export enum RunCTestHelperEntryPoint {
|
||||
TestExplorer, // Test Explorer integration
|
||||
RunTests // Run tests command
|
||||
}
|
||||
|
||||
interface EncodedMeasurementValue {
|
||||
$: { encoding?: BufferEncoding; compression?: string };
|
||||
_: string;
|
||||
|
@ -198,6 +203,12 @@ class CTestOutputLogger implements OutputConsumer {
|
|||
}
|
||||
}
|
||||
|
||||
// A test item and its parent test suite item in the test explorer
|
||||
interface TestAndParentSuite {
|
||||
test: vscode.TestItem;
|
||||
parentSuite: vscode.TestItem;
|
||||
}
|
||||
|
||||
export class CTestDriver implements vscode.Disposable {
|
||||
/**
|
||||
* @param projectController Required for test explorer to work properly. Setting as optional to avoid breaking tests.
|
||||
|
@ -262,6 +273,13 @@ export class CTestDriver implements vscode.Disposable {
|
|||
}
|
||||
// Add a few more args so we can show the result in status bar
|
||||
ctestArgs = ctestArgs.concat(testArgs(driver.testPreset));
|
||||
|
||||
// When no test preset exists (the default scenario) we can still deduce the -C (or --build-config) ctest argument
|
||||
// out of the driver current build type, which takes into consideration all calculations about single/multi-config
|
||||
// and the current user selection of build type.
|
||||
if (driver.testPreset.name === "__defaultTestPreset__") {
|
||||
ctestArgs = ['-C', driver.currentBuildType].concat(ctestArgs);
|
||||
}
|
||||
} else {
|
||||
const configuration = driver.currentBuildType;
|
||||
const jobs = await expandString(this.ws.config.numCTestJobs, opts);
|
||||
|
@ -366,7 +384,7 @@ export class CTestDriver implements vscode.Disposable {
|
|||
run.failed(test, message, duration);
|
||||
}
|
||||
|
||||
private async runCTestHelper(tests: vscode.TestItem[], run: vscode.TestRun, driver?: CMakeDriver, ctestPath?: string, ctestArgs?: string[], cancellation?: vscode.CancellationToken, customizedTask: boolean = false, consumer?: proc.OutputConsumer): Promise<number> {
|
||||
private async runCTestHelper(tests: vscode.TestItem[], run: vscode.TestRun, driver?: CMakeDriver, ctestPath?: string, ctestArgs?: string[], cancellation?: vscode.CancellationToken, customizedTask: boolean = false, consumer?: proc.OutputConsumer, entryPoint: RunCTestHelperEntryPoint = RunCTestHelperEntryPoint.RunTests): Promise<number> {
|
||||
let returnCode: number = 0;
|
||||
const driverMap = new Map<string, { driver: CMakeDriver; ctestPath: string; ctestArgs: string[]; tests: vscode.TestItem[]}>();
|
||||
|
||||
|
@ -378,7 +396,7 @@ export class CTestDriver implements vscode.Disposable {
|
|||
if (driver) {
|
||||
_driver = driver;
|
||||
} else {
|
||||
const folder = test.parent ? test.parent.id : test.id;
|
||||
const folder = this.getTestRootFolder(test);
|
||||
const project = await this.projectController?.getProjectForFolder(folder);
|
||||
if (!project) {
|
||||
this.ctestErrored(test, run, { message: localize('no.project.found', 'No project found for folder {0}', folder) });
|
||||
|
@ -417,7 +435,7 @@ 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.runCTestHelper(children, run, _driver, _ctestPath, _ctestArgs, cancellation, customizedTask, consumer)) {
|
||||
if (await this.runCTestHelper(children, run, _driver, _ctestPath, _ctestArgs, cancellation, customizedTask, consumer, entryPoint)) {
|
||||
returnCode = -1;
|
||||
}
|
||||
return returnCode;
|
||||
|
@ -445,8 +463,12 @@ export class CTestDriver implements vscode.Disposable {
|
|||
const testResults = await this.runCTestImpl(driver.driver, driver.ctestPath, _ctestArgs, customizedTask, consumer);
|
||||
|
||||
if (testResults) {
|
||||
for (let i = 0; i < testResults.site.testing.test.length; i++) {
|
||||
returnCode = this.testResultsAnalysis(testResults.site.testing.test[i], test, returnCode, run);
|
||||
const testResult = testResults.site.testing.test.find(t => t.name === test.id);
|
||||
if (testResult) {
|
||||
returnCode = this.testResultsAnalysis(testResult, test, returnCode, run);
|
||||
} else {
|
||||
this.ctestErrored(test, run, { message: localize('test.results.not.found', 'Test results not found.') });
|
||||
returnCode = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -464,13 +486,22 @@ export class CTestDriver implements vscode.Disposable {
|
|||
if (uniqueCtestArgs.filter(arg => arg.startsWith("-j")).length === 0) {
|
||||
uniqueCtestArgs.push(`-j${this.ws.config.numCTestJobs}`);
|
||||
}
|
||||
uniqueCtestArgs.push('-R');
|
||||
let testsNamesRegex: string = "";
|
||||
for (const t of driver.tests) {
|
||||
run.started(t);
|
||||
testsNamesRegex = testsNamesRegex.concat(`^${util.escapeStringForRegex(t.id)}\$|`);
|
||||
|
||||
// If we have the test explorer enabled and this method was called from a test explorer entry point,
|
||||
// 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.
|
||||
if (entryPoint === RunCTestHelperEntryPoint.TestExplorer && testExplorer && this._tests && this._tests.tests.length !== driver.tests.length) {
|
||||
uniqueCtestArgs.push("-R");
|
||||
let testsNamesRegex: string = "";
|
||||
for (const t of driver.tests) {
|
||||
run.started(t);
|
||||
testsNamesRegex = testsNamesRegex.concat(
|
||||
`^${util.escapeStringForRegex(t.id)}\$|`
|
||||
);
|
||||
}
|
||||
uniqueCtestArgs.push(testsNamesRegex.slice(0, -1)); // Remove the last '|'
|
||||
}
|
||||
uniqueCtestArgs.push(testsNamesRegex.slice(0, -1)); // Remove the last '|'
|
||||
|
||||
const testResults = await this.runCTestImpl(uniqueDriver, uniqueCtestPath, uniqueCtestArgs, customizedTask, consumer);
|
||||
|
||||
|
@ -501,10 +532,13 @@ export class CTestDriver implements vscode.Disposable {
|
|||
}
|
||||
|
||||
let output = testResult.output;
|
||||
if (process.platform === 'win32') {
|
||||
output = output.replace(/\r?\n/g, '\r\n');
|
||||
// https://code.visualstudio.com/api/extension-guides/testing#test-output
|
||||
output = output.replace(/\r?\n/g, '\r\n');
|
||||
if (test.uri && test.range) {
|
||||
run.appendOutput(output, new vscode.Location(test.uri, test.range.end), test);
|
||||
} else {
|
||||
run.appendOutput(output, undefined, test);
|
||||
}
|
||||
run.appendOutput(output);
|
||||
|
||||
if (testResult.status !== 'passed' && !havefailures) {
|
||||
const failureDurationStr = testResult.measurements.get("Execution Time")?.value;
|
||||
|
@ -574,6 +608,30 @@ export class CTestDriver implements vscode.Disposable {
|
|||
return undefined;
|
||||
}
|
||||
|
||||
private createTestItemAndSuiteTree(testName: string, testExplorerRoot: vscode.TestItem, initializedTestExplorer: vscode.TestController, uri?: vscode.Uri): TestAndParentSuite {
|
||||
let parentSuiteItem = testExplorerRoot;
|
||||
let testLabel = testName;
|
||||
|
||||
// If a suite delimiter is set, create a suite tree
|
||||
if (this.ws.config.testSuiteDelimiter) {
|
||||
const delimiterRegExp = new RegExp(this.ws.config.testSuiteDelimiter);
|
||||
const parts = testName.split(delimiterRegExp);
|
||||
testLabel = parts.pop() || testName; // The last part is the test label
|
||||
|
||||
// Create a suite item for each suite ID part if it doesn't exist yet at that tree level
|
||||
for (const suiteId of parts) {
|
||||
let suiteItem = parentSuiteItem.children.get(suiteId);
|
||||
if (!suiteItem) {
|
||||
suiteItem = initializedTestExplorer.createTestItem(suiteId, suiteId);
|
||||
parentSuiteItem.children.add(suiteItem);
|
||||
}
|
||||
parentSuiteItem = suiteItem;
|
||||
}
|
||||
}
|
||||
const testItem = initializedTestExplorer.createTestItem(testName, testLabel, uri);
|
||||
return { test: testItem, parentSuite: parentSuiteItem };
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Refresh the list of CTest tests
|
||||
* @returns 0 when successful
|
||||
|
@ -650,7 +708,9 @@ export class CTestDriver implements vscode.Disposable {
|
|||
this.tests = JSON.parse(result.stdout) ?? undefined;
|
||||
if (this.tests && this.tests.kind === 'ctestInfo') {
|
||||
this.tests.tests.forEach(test => {
|
||||
let testItem: vscode.TestItem | undefined;
|
||||
let testDefFile: string | undefined;
|
||||
let testDefLine: number | undefined;
|
||||
|
||||
if (test.backtrace !== undefined && this.tests!.backtraceGraph.nodes[test.backtrace] !== 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
|
||||
|
@ -659,26 +719,29 @@ export class CTestDriver implements vscode.Disposable {
|
|||
// Use RegEx to match the format "file_path:line" in value[0]
|
||||
const match = defSourceLineProperty.value.match(/(.*):(\d+)/);
|
||||
if (match && match[1] && match[2]) {
|
||||
const testDefFile = match[1];
|
||||
const testDefLine = parseInt(match[2]);
|
||||
if (!isNaN(testDefLine)) {
|
||||
testItem = initializedTestExplorer.createTestItem(test.name, test.name, vscode.Uri.file(testDefFile));
|
||||
testItem.range = new vscode.Range(new vscode.Position(testDefLine - 1, 0), new vscode.Position(testDefLine - 1, 0));
|
||||
testDefFile = match[1];
|
||||
testDefLine = parseInt(match[2]);
|
||||
if (isNaN(testDefLine)) {
|
||||
testDefLine = undefined;
|
||||
testDefFile = undefined;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!testItem) {
|
||||
|
||||
if (!testDefFile) {
|
||||
// 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
|
||||
const testDefFile = this.tests!.backtraceGraph.files[this.tests!.backtraceGraph.nodes[test.backtrace].file];
|
||||
const testDefLine = this.tests!.backtraceGraph.nodes[test.backtrace].line;
|
||||
testItem = initializedTestExplorer.createTestItem(test.name, test.name, vscode.Uri.file(testDefFile));
|
||||
if (testDefLine !== undefined) {
|
||||
testItem.range = new vscode.Range(new vscode.Position(testDefLine - 1, 0), new vscode.Position(testDefLine - 1, 0));
|
||||
}
|
||||
testDefFile = this.tests!.backtraceGraph.files[this.tests!.backtraceGraph.nodes[test.backtrace].file];
|
||||
testDefLine = this.tests!.backtraceGraph.nodes[test.backtrace].line;
|
||||
}
|
||||
} else {
|
||||
testItem = initializedTestExplorer.createTestItem(test.name, test.name);
|
||||
}
|
||||
|
||||
const testAndParentSuite = this.createTestItemAndSuiteTree(test.name, testExplorerRoot, initializedTestExplorer, testDefFile ? vscode.Uri.file(testDefFile) : undefined);
|
||||
const testItem = testAndParentSuite.test;
|
||||
const parentSuiteItem = testAndParentSuite.parentSuite;
|
||||
|
||||
if (testDefLine !== undefined) {
|
||||
testItem.range = new vscode.Range(new vscode.Position(testDefLine - 1, 0), new vscode.Position(testDefLine - 1, 0));
|
||||
}
|
||||
|
||||
const testTags: vscode.TestTag[] = [];
|
||||
|
@ -698,7 +761,7 @@ export class CTestDriver implements vscode.Disposable {
|
|||
testItem.tags = [...testItem.tags, ...testTags];
|
||||
}
|
||||
|
||||
testExplorerRoot.children.add(testItem);
|
||||
parentSuiteItem.children.add(testItem);
|
||||
});
|
||||
};
|
||||
}
|
||||
|
@ -753,7 +816,7 @@ export class CTestDriver implements vscode.Disposable {
|
|||
let presetMayChange = false;
|
||||
for (const test of tests) {
|
||||
if (test.id === testPresetRequired) {
|
||||
const folder = test.parent ? test.parent.id : test.id;
|
||||
const folder = this.getTestRootFolder(test);
|
||||
const project = await this.projectController?.getProjectForFolder(folder);
|
||||
if (!project) {
|
||||
log.error(localize('no.project.found', 'No project found for folder {0}', folder));
|
||||
|
@ -787,7 +850,7 @@ export class CTestDriver implements vscode.Disposable {
|
|||
this.ctestsEnqueued(tests, run);
|
||||
const buildSucceeded = await this.buildTests(tests, run);
|
||||
if (buildSucceeded) {
|
||||
await this.runCTestHelper(tests, run, undefined, undefined, undefined, cancellation);
|
||||
await this.runCTestHelper(tests, run, undefined, undefined, undefined, cancellation, false, undefined, RunCTestHelperEntryPoint.TestExplorer);
|
||||
} else {
|
||||
log.info(localize('test.skip.run.build.failure', "Not running tests due to build failure."));
|
||||
}
|
||||
|
@ -807,7 +870,7 @@ export class CTestDriver implements vscode.Disposable {
|
|||
continue;
|
||||
}
|
||||
|
||||
const folder = test.parent ? test.parent.id : test.id;
|
||||
const folder = this.getTestRootFolder(test);
|
||||
const project = await this.projectController?.getProjectForFolder(folder);
|
||||
if (!project) {
|
||||
this.ctestErrored(test, run, { message: localize('no.project.found', 'No project found for folder {0}', folder) });
|
||||
|
@ -937,7 +1000,7 @@ export class CTestDriver implements vscode.Disposable {
|
|||
.find(test => test.name === testName)?.properties
|
||||
.find(prop => prop.name === 'WORKING_DIRECTORY');
|
||||
|
||||
if (typeof(property?.value) === 'string') {
|
||||
if (typeof (property?.value) === 'string') {
|
||||
return property.value;
|
||||
}
|
||||
return '';
|
||||
|
@ -1025,12 +1088,20 @@ export class CTestDriver implements vscode.Disposable {
|
|||
run.end();
|
||||
};
|
||||
|
||||
private getTestRootFolder(test: vscode.TestItem): string {
|
||||
let currentTestItem = test;
|
||||
while (currentTestItem.parent !== undefined) {
|
||||
currentTestItem = currentTestItem.parent;
|
||||
}
|
||||
return currentTestItem.id;
|
||||
}
|
||||
|
||||
private async buildTests(tests: vscode.TestItem[], run: vscode.TestRun): Promise<boolean> {
|
||||
// Folder => status
|
||||
const builtFolder = new Map<string, number>();
|
||||
let status: number = 0;
|
||||
for (const test of tests) {
|
||||
const folder = test.parent ? test.parent.id : test.id;
|
||||
const folder = this.getTestRootFolder(test);
|
||||
if (!builtFolder.has(folder)) {
|
||||
const project = await this.projectController?.getProjectForFolder(folder);
|
||||
if (!project) {
|
||||
|
@ -1096,10 +1167,16 @@ export class CTestDriver implements vscode.Disposable {
|
|||
return this.debugTestHandler(request, cancellation);
|
||||
}
|
||||
|
||||
const testProject = this.projectController!.getAllCMakeProjects().filter(
|
||||
project => request.include![0].uri!.fsPath.includes(project.folderPath)
|
||||
);
|
||||
return testProject![0].cTestController.debugTestHandler(request, cancellation);
|
||||
// Try to find the specific test controller, if we hit any errors, fall back to the default test handler.
|
||||
// There are cases where our assumptions about include and uri are incorrect, so we need to handle those.
|
||||
try {
|
||||
const testProject = this.projectController!.getAllCMakeProjects().filter(
|
||||
project => request.include![0].uri!.fsPath.includes(project.folderPath)
|
||||
);
|
||||
return testProject![0].cTestController.debugTestHandler(request, cancellation);
|
||||
} catch (e) {
|
||||
return this.debugTestHandler(request, cancellation);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
|
@ -255,7 +255,7 @@ export abstract class CMakeDriver implements vscode.Disposable {
|
|||
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._generalEnvSub]) {
|
||||
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();
|
||||
}
|
||||
rollbar.invokeAsync(localize('async.disposing.cmake.driver', 'Async disposing CMake driver'), () => this.asyncDispose());
|
||||
|
@ -564,7 +564,7 @@ export abstract class CMakeDriver implements vscode.Disposable {
|
|||
protected async _cleanPriorConfiguration() {
|
||||
const build_dir = this.binaryDir;
|
||||
const cache = this.cachePath;
|
||||
const cmake_files = path.join(build_dir, 'CMakeFiles');
|
||||
const cmake_files = this.config.deleteBuildDirOnCleanConfigure ? build_dir : path.join(build_dir, 'CMakeFiles');
|
||||
if (await fs.exists(cache)) {
|
||||
log.info(localize('removing', 'Removing {0}', cache));
|
||||
try {
|
||||
|
@ -1108,6 +1108,12 @@ export abstract class CMakeDriver implements vscode.Disposable {
|
|||
versionOutputRegexp: "version ([^\\s]+)",
|
||||
captureGroup: 1
|
||||
},
|
||||
{
|
||||
name: "chesscc",
|
||||
versionSwitch: "--version",
|
||||
versionOutputRegexp: "version ([^\\s]+)",
|
||||
captureGroup: 1
|
||||
},
|
||||
{
|
||||
name: "g++",
|
||||
versionSwitch: "-v",
|
||||
|
@ -1422,7 +1428,7 @@ export abstract class CMakeDriver implements vscode.Disposable {
|
|||
const initial_common_flags = extra_args.concat(this.config.configureArgs);
|
||||
const common_flags = initial_common_flags.includes("--warn-unused-cli") ? initial_common_flags : initial_common_flags.concat("--no-warn-unused-cli");
|
||||
const define_flags = withoutCmakeSettings ? [] : this.generateCMakeSettingsFlags();
|
||||
const final_flags = common_flags.concat(define_flags, init_cache_flags);
|
||||
const final_flags = define_flags.concat(common_flags, init_cache_flags);
|
||||
|
||||
// Get expanded configure environment
|
||||
const expanded_configure_env = await this.getConfigureEnvironment();
|
||||
|
@ -1853,6 +1859,9 @@ export abstract class CMakeDriver implements vscode.Disposable {
|
|||
private readonly _packEnvSub = this.config.onChange('cpackEnvironment', async () => {
|
||||
await onPackageSettingsChange();
|
||||
});
|
||||
private readonly _packArgsSub = this.config.onChange('cpackArgs', async () => {
|
||||
await onPackageSettingsChange();
|
||||
});
|
||||
private readonly _generalEnvSub = this.config.onChange('environment', async () => {
|
||||
await this.doConfigureSettingsChange();
|
||||
await onBuildSettingsChange();
|
||||
|
|
|
@ -269,6 +269,10 @@ export class CMakeFileApiDriver extends CMakeDriver {
|
|||
log.showChannel();
|
||||
log.info(proc.buildCmdStr(this.cmake.path, args));
|
||||
return 0;
|
||||
} else if (this.isMultiConfig && trigger === ConfigureTrigger.setVariant) {
|
||||
this._needsReconfigure = false;
|
||||
await this.updateCodeModel(binaryDir);
|
||||
return 0;
|
||||
} else {
|
||||
log.debug(`Configuring using ${this.useCMakePresets ? 'preset' : 'kit'}`);
|
||||
log.debug('Invoking CMake', cmake, 'with arguments', JSON.stringify(args));
|
||||
|
@ -335,7 +339,7 @@ export class CMakeFileApiDriver extends CMakeDriver {
|
|||
|
||||
private toolchainWarningProvided: boolean = false;
|
||||
private async updateCodeModel(binaryDir?: string): Promise<boolean> {
|
||||
const reply_path = this.getCMakeReplyPath(binaryDir);
|
||||
const reply_path = this.getCMakeReplyPath(binaryDir).replace('~', process.env.HOME || "./");
|
||||
const indexFile = await loadIndexFile(reply_path);
|
||||
if (indexFile) {
|
||||
this._generatorInformation = indexFile.cmake.generator;
|
||||
|
|
|
@ -141,12 +141,12 @@ export async function expandString<T>(input: string | T, opts: ExpansionOptions)
|
|||
const varValueRegexp = ".+?";
|
||||
|
||||
async function expandStringHelper(input: string, opts: ExpansionOptions) {
|
||||
log.debug(localize('expand.expandstringhelper', 'expanding {0}', input));
|
||||
const envPreNormalize = opts.envOverride ? opts.envOverride : process.env;
|
||||
const env = EnvironmentUtils.create(envPreNormalize);
|
||||
const replacements = opts.vars;
|
||||
replacements.sourceDirectory = replacements.sourceDir;
|
||||
let circularReference: string | undefined;
|
||||
let expansionOccurred: boolean = false;
|
||||
|
||||
// We accumulate a list of substitutions that we need to make, preventing
|
||||
// recursively expanding or looping forever on bad replacements
|
||||
|
@ -154,6 +154,7 @@ async function expandStringHelper(input: string, opts: ExpansionOptions) {
|
|||
|
||||
const varRegex = /\$\{(\w+)\}/g;
|
||||
for (const mat of matchAll(input, varRegex)) {
|
||||
expansionOccurred = true;
|
||||
const full = mat[0];
|
||||
const key = mat[1];
|
||||
if (key !== 'dollar') {
|
||||
|
@ -169,6 +170,7 @@ async function expandStringHelper(input: string, opts: ExpansionOptions) {
|
|||
|
||||
const envRegex1 = RegExp(`\\$\\{env:(${varValueRegexp})\\}`, "g");
|
||||
for (const mat of matchAll(input, envRegex1)) {
|
||||
expansionOccurred = true;
|
||||
const full = mat[0];
|
||||
const varName = mat[1];
|
||||
const replacement = fixPaths(env[varName]) || '';
|
||||
|
@ -177,6 +179,7 @@ async function expandStringHelper(input: string, opts: ExpansionOptions) {
|
|||
|
||||
const envRegex2 = RegExp(`\\$\\{env\\.(${varValueRegexp})\\}`, "g");
|
||||
for (const mat of matchAll(input, envRegex2)) {
|
||||
expansionOccurred = true;
|
||||
const full = mat[0];
|
||||
const varName = mat[1];
|
||||
const replacement = fixPaths(env[varName]) || '';
|
||||
|
@ -185,6 +188,7 @@ async function expandStringHelper(input: string, opts: ExpansionOptions) {
|
|||
|
||||
const envRegex3 = RegExp(`\\$env\\{(${varValueRegexp})\\}`, "g");
|
||||
for (const mat of matchAll(input, envRegex3)) {
|
||||
expansionOccurred = true;
|
||||
const full = mat[0];
|
||||
const varName = mat[1];
|
||||
const replacement: string = fixPaths(env[varName]) || '';
|
||||
|
@ -208,6 +212,7 @@ async function expandStringHelper(input: string, opts: ExpansionOptions) {
|
|||
const folderName = mat[1];
|
||||
const f = vscode.workspace.workspaceFolders.find(folder => folder.name.toLocaleLowerCase() === folderName.toLocaleLowerCase());
|
||||
if (f) {
|
||||
expansionOccurred = true;
|
||||
subs.set(full, f.uri.fsPath);
|
||||
}
|
||||
}
|
||||
|
@ -217,6 +222,7 @@ async function expandStringHelper(input: string, opts: ExpansionOptions) {
|
|||
const variants = opts.variantVars;
|
||||
const variantRegex = RegExp(`\\$\\{variant:(${varValueRegexp})\\}`, "g");
|
||||
for (const mat of matchAll(input, variantRegex)) {
|
||||
expansionOccurred = true;
|
||||
const full = mat[0];
|
||||
const varName = mat[1];
|
||||
const replacement = variants[varName] || '';
|
||||
|
@ -236,6 +242,7 @@ async function expandStringHelper(input: string, opts: ExpansionOptions) {
|
|||
continue; // Don't execute commands more than once per string
|
||||
}
|
||||
try {
|
||||
expansionOccurred = true;
|
||||
const result = await vscode.commands.executeCommand(command, opts.vars.workspaceFolder);
|
||||
subs.set(full, `${result}`);
|
||||
} catch (e) {
|
||||
|
@ -243,6 +250,10 @@ async function expandStringHelper(input: string, opts: ExpansionOptions) {
|
|||
}
|
||||
}
|
||||
|
||||
if (expansionOccurred) {
|
||||
log.debug(localize('expand.expandstringhelper', 'expanded {0}', input));
|
||||
}
|
||||
|
||||
return { ...substituteAll(input, subs), circularReference };
|
||||
}
|
||||
|
||||
|
|
|
@ -1014,9 +1014,13 @@ export class ExtensionManager implements vscode.Disposable {
|
|||
return Array.from(result);
|
||||
}
|
||||
|
||||
viewPackageSettings(): void {
|
||||
void vscode.commands.executeCommand('workbench.action.openSettings', '@id:cmake.cpackArgs, @id:cmake.cpackEnvironment, @id:cmake.environment');
|
||||
}
|
||||
|
||||
/**
|
||||
* Show UI to allow the user to select an active kit
|
||||
*/
|
||||
* Show UI to allow the user to select an active kit
|
||||
*/
|
||||
async selectKit(folder?: vscode.WorkspaceFolder): Promise<boolean> {
|
||||
if (util.isTestMode()) {
|
||||
log.trace(localize('selecting.kit.in.test.mode', 'Running CMakeTools in test mode. selectKit is disabled.'));
|
||||
|
@ -2161,6 +2165,7 @@ async function setup(context: vscode.ExtensionContext, progress?: ProgressHandle
|
|||
'selectTestPreset',
|
||||
'viewTestSettings',
|
||||
'selectPackagePreset',
|
||||
'viewPackageSettings',
|
||||
'selectWorkflowPreset',
|
||||
'selectActiveFolder',
|
||||
'editKits',
|
||||
|
@ -2328,6 +2333,41 @@ export async function activate(context: vscode.ExtensionContext): Promise<api.CM
|
|||
await vscode.window.showWarningMessage(localize('uninstall.old.cmaketools', 'Please uninstall any older versions of the CMake Tools extension. It is now published by Microsoft starting with version 1.2.0.'));
|
||||
}
|
||||
|
||||
const CMAKE_LANGUAGE = "cmake";
|
||||
|
||||
vscode.languages.setLanguageConfiguration(CMAKE_LANGUAGE, {
|
||||
indentationRules: {
|
||||
// ^(.*\*/)?\s*\}.*$
|
||||
decreaseIndentPattern: /^(.*\*\/)?\s*\}.*$/,
|
||||
// ^.*\{[^}"']*$
|
||||
increaseIndentPattern: /^.*\{[^}"']*$/
|
||||
},
|
||||
wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
|
||||
comments: {
|
||||
lineComment: '#'
|
||||
},
|
||||
brackets: [
|
||||
['{', '}'],
|
||||
['(', ')']
|
||||
],
|
||||
|
||||
__electricCharacterSupport: {
|
||||
brackets: [
|
||||
{ tokenType: 'delimiter.curly.ts', open: '{', close: '}', isElectric: true },
|
||||
{ tokenType: 'delimiter.square.ts', open: '[', close: ']', isElectric: true },
|
||||
{ tokenType: 'delimiter.paren.ts', open: '(', close: ')', isElectric: true }
|
||||
]
|
||||
},
|
||||
|
||||
__characterPairSupport: {
|
||||
autoClosingPairs: [
|
||||
{ open: '{', close: '}' },
|
||||
{ open: '(', close: ')' },
|
||||
{ open: '"', close: '"', notIn: ['string'] }
|
||||
]
|
||||
}
|
||||
});
|
||||
|
||||
if (vscode.workspace.getConfiguration('cmake').get('showOptionsMovedNotification')) {
|
||||
void vscode.window.showInformationMessage(
|
||||
localize('options.moved.notification.body', "Some status bar options in CMake Tools have now moved to the Project Status View in the CMake Tools sidebar. You can customize your view with the 'cmake.options' property in settings."),
|
||||
|
|
|
@ -964,7 +964,14 @@ async function getVSInstallForKit(kit: Kit): Promise<VSInstallation | undefined>
|
|||
// Clang for VS kit format
|
||||
(!!kit.compilers && kit.name.indexOf("Clang") >= 0 && kit.name.indexOf(vsDisplayName(inst)) >= 0);
|
||||
|
||||
return installs.find(match);
|
||||
const inst = installs.find(match);
|
||||
if (!inst) {
|
||||
log.warning(localize('vs.instance.not.found.run.scan.kits',
|
||||
'VS installation instance not found for kit "{0}" - ({1}). It is recommended you re-scan the kits and also remove any user-local entries that are not present anymore on the system.',
|
||||
kit.name, kit?.visualStudio));
|
||||
}
|
||||
|
||||
return inst;
|
||||
}
|
||||
|
||||
export async function getVSKitEnvironment(kit: Kit): Promise<Environment | null> {
|
||||
|
|
108
src/preset.ts
108
src/preset.ts
|
@ -262,9 +262,12 @@ export interface ConfigurePreset extends Preset {
|
|||
installDir?: string;
|
||||
}
|
||||
|
||||
export interface BuildPreset extends Preset {
|
||||
export interface InheritsConfigurePreset extends Preset {
|
||||
configurePreset?: string;
|
||||
inheritConfigureEnvironment?: boolean; // Defaults to true
|
||||
}
|
||||
|
||||
export interface BuildPreset extends InheritsConfigurePreset {
|
||||
jobs?: number;
|
||||
targets?: string | string[];
|
||||
configuration?: string;
|
||||
|
@ -335,9 +338,7 @@ export interface ExecutionOptions {
|
|||
noTestsAction?: 'default' | 'error' | 'ignore';
|
||||
}
|
||||
|
||||
export interface TestPreset extends Preset {
|
||||
configurePreset?: string;
|
||||
inheritConfigureEnvironment?: boolean; // Defaults to true
|
||||
export interface TestPreset extends InheritsConfigurePreset {
|
||||
configuration?: string;
|
||||
overwriteConfigurationFile?: string[];
|
||||
output?: OutputOptions;
|
||||
|
@ -354,9 +355,7 @@ export interface PackageOutputOptions {
|
|||
verbose?: boolean;
|
||||
}
|
||||
|
||||
export interface PackagePreset extends Preset {
|
||||
configurePreset?: string;
|
||||
inheritConfigureEnvironment?: boolean; // Defaults to true
|
||||
export interface PackagePreset extends InheritsConfigurePreset {
|
||||
configurations?: string[];
|
||||
generators?: string[];
|
||||
variables?: { [key: string]: string | null | undefined };
|
||||
|
@ -377,12 +376,18 @@ export interface WorkflowStepsOptions {
|
|||
name: string;
|
||||
}
|
||||
|
||||
export interface WorkflowPreset extends Preset {
|
||||
export interface WorkflowPreset {
|
||||
name: string;
|
||||
displayName?: string;
|
||||
description?: string;
|
||||
vendor?: VendorType;
|
||||
isUserPreset?: boolean;
|
||||
steps: WorkflowStepsOptions[];
|
||||
|
||||
__vsDevEnvApplied?: boolean; // Private field to indicate if we have already applied the VS Dev Env.
|
||||
__expanded?: boolean; // Private field to indicate if we have already expanded this preset.
|
||||
__file?: PresetsFile; // Private field to indicate the file where this preset was defined.
|
||||
|
||||
}
|
||||
|
||||
// Interface for toolset options specified here: https://cmake.org/cmake/help/latest/variable/CMAKE_GENERATOR_TOOLSET.html
|
||||
|
@ -564,6 +569,29 @@ function isInheritable(key: keyof ConfigurePreset | keyof BuildPreset | keyof Te
|
|||
return key !== 'name' && key !== 'hidden' && key !== 'inherits' && key !== 'description' && key !== 'displayName';
|
||||
}
|
||||
|
||||
export function inheritsFromUserPreset(preset: ConfigurePreset | BuildPreset | TestPreset | PackagePreset | WorkflowPreset,
|
||||
presetType: 'configurePresets' | 'buildPresets' | 'testPresets' | 'packagePresets' | 'workflowPresets', folderPath: string): boolean {
|
||||
|
||||
const originalUserPresetsFile: PresetsFile = getOriginalUserPresetsFile(folderPath) || { version: 8 };
|
||||
const presetInherits = (presets: Preset[] | undefined, inherits: string | string[] | undefined) => presets?.find(p =>
|
||||
Array.isArray(inherits)
|
||||
? inherits.some(inherit => inherit === p.name)
|
||||
: inherits === p.name
|
||||
);
|
||||
|
||||
if (presetType !== 'workflowPresets' && (preset as Preset).inherits &&
|
||||
presetInherits(originalUserPresetsFile[presetType], (preset as Preset).inherits)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// first step of a Workflow Preset must be a configure preset
|
||||
const inheritedConfigurePreset = presetType === 'workflowPresets' ? (preset as WorkflowPreset).steps[0]?.name :
|
||||
presetType !== 'configurePresets' ? (preset as InheritsConfigurePreset).configurePreset : undefined;
|
||||
|
||||
return inheritedConfigurePreset ?
|
||||
!!originalUserPresetsFile.configurePresets?.find(p => p.name === inheritedConfigurePreset) : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Shallow copy if a key in base doesn't exist in target
|
||||
*/
|
||||
|
@ -1809,7 +1837,7 @@ async function expandPackagePresetHelper(folder: string, preset: PackagePreset,
|
|||
// Map<fsPath, Set<referencedPresets>>
|
||||
const referencedWorkflowPresets: Map<string, Set<string>> = new Map();
|
||||
|
||||
export async function expandWorkflowPreset(folder: string, name: string, workspaceFolder: string, sourceDir: string, preferredGeneratorName?: string, allowUserPreset: boolean = false, configurePreset?: string): Promise<WorkflowPreset | null> {
|
||||
export async function expandWorkflowPreset(folder: string, name: string, workspaceFolder: string, sourceDir: string, allowUserPreset: boolean = false, configurePreset?: string): Promise<WorkflowPreset | null> {
|
||||
const refs = referencedWorkflowPresets.get(folder);
|
||||
if (!refs) {
|
||||
referencedWorkflowPresets.set(folder, new Set());
|
||||
|
@ -1817,25 +1845,12 @@ export async function expandWorkflowPreset(folder: string, name: string, workspa
|
|||
refs.clear();
|
||||
}
|
||||
|
||||
const preset = await expandWorkflowPresetImpl(folder, name, workspaceFolder, sourceDir, preferredGeneratorName, allowUserPreset, configurePreset);
|
||||
const preset = await expandWorkflowPresetImpl(folder, name, workspaceFolder, sourceDir, allowUserPreset, configurePreset);
|
||||
if (!preset) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const expandedPreset: WorkflowPreset = { name, steps: [{type: "configure", name: "_placeholder_"}] };
|
||||
const expansionOpts: ExpansionOptions = await getExpansionOptions(workspaceFolder, sourceDir, preset);
|
||||
|
||||
// Expand environment vars first since other fields may refer to them
|
||||
if (preset.environment) {
|
||||
expandedPreset.environment = EnvironmentUtils.createPreserveNull();
|
||||
for (const key in preset.environment) {
|
||||
if (preset.environment[key]) {
|
||||
expandedPreset.environment[key] = await expandString(preset.environment[key]!, expansionOpts);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
expansionOpts.envOverride = expandedPreset.environment;
|
||||
|
||||
// According to CMake docs, no other fields support macro expansion in a workflow preset.
|
||||
merge(expandedPreset, preset);
|
||||
|
@ -1843,16 +1858,16 @@ export async function expandWorkflowPreset(folder: string, name: string, workspa
|
|||
return expandedPreset;
|
||||
}
|
||||
|
||||
async function expandWorkflowPresetImpl(folder: string, name: string, workspaceFolder: string, sourceDir: string, preferredGeneratorName?: string, allowUserPreset: boolean = false, configurePreset?: string): Promise<WorkflowPreset | null> {
|
||||
async function expandWorkflowPresetImpl(folder: string, name: string, workspaceFolder: string, sourceDir: string, allowUserPreset: boolean = false, configurePreset?: string): Promise<WorkflowPreset | null> {
|
||||
let preset = getPresetByName(workflowPresets(folder), name);
|
||||
if (preset) {
|
||||
return expandWorkflowPresetHelper(folder, preset, workspaceFolder, sourceDir, preferredGeneratorName);
|
||||
return expandWorkflowPresetHelper(folder, preset, workspaceFolder, sourceDir);
|
||||
}
|
||||
|
||||
if (allowUserPreset) {
|
||||
preset = getPresetByName(userWorkflowPresets(folder), name);
|
||||
if (preset) {
|
||||
return expandWorkflowPresetHelper(folder, preset, workspaceFolder, sourceDir, preferredGeneratorName, true);
|
||||
return expandWorkflowPresetHelper(folder, preset, workspaceFolder, sourceDir, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1869,14 +1884,14 @@ async function expandWorkflowPresetImpl(folder: string, name: string, workspaceF
|
|||
}
|
||||
]
|
||||
};
|
||||
return expandWorkflowPresetHelper(folder, preset, workspaceFolder, sourceDir, preferredGeneratorName, true);
|
||||
return expandWorkflowPresetHelper(folder, preset, workspaceFolder, sourceDir, true);
|
||||
}
|
||||
|
||||
log.error(localize('workflow.preset.not.found', 'Could not find workflow preset with name {0}', name));
|
||||
return null;
|
||||
}
|
||||
|
||||
async function expandWorkflowPresetHelper(folder: string, preset: WorkflowPreset, workspaceFolder: string, sourceDir: string, preferredGeneratorName: string | undefined, allowUserPreset: boolean = false) {
|
||||
async function expandWorkflowPresetHelper(folder: string, preset: WorkflowPreset, workspaceFolder: string, sourceDir: string, allowUserPreset: boolean = false) {
|
||||
if (preset.__expanded) {
|
||||
return preset;
|
||||
}
|
||||
|
@ -1891,34 +1906,6 @@ async function expandWorkflowPresetHelper(folder: string, preset: WorkflowPreset
|
|||
|
||||
refs.add(preset.name);
|
||||
|
||||
// Init env to empty if not specified to avoid null checks later
|
||||
if (!preset.environment) {
|
||||
preset.environment = EnvironmentUtils.createPreserveNull();
|
||||
}
|
||||
let inheritedEnv = EnvironmentUtils.createPreserveNull();
|
||||
|
||||
// Expand inherits
|
||||
if (preset.inherits) {
|
||||
if (util.isString(preset.inherits)) {
|
||||
preset.inherits = [preset.inherits];
|
||||
}
|
||||
for (const parentName of preset.inherits) {
|
||||
const parent = await expandWorkflowPresetImpl(folder, parentName, workspaceFolder, sourceDir, preferredGeneratorName, allowUserPreset);
|
||||
if (parent) {
|
||||
// Inherit environment
|
||||
inheritedEnv = EnvironmentUtils.mergePreserveNull([parent.environment, inheritedEnv]);
|
||||
// Inherit other fields
|
||||
let key: keyof WorkflowPreset;
|
||||
for (key in parent) {
|
||||
if (isInheritable(key) && preset[key] === undefined) {
|
||||
// 'as never' to bypass type check
|
||||
preset[key] = parent[key] as never;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Expand configure preset. Evaluate this after inherits since it may come from parents
|
||||
const workflowConfigurePreset = preset.steps[0].name;
|
||||
if (workflowConfigurePreset) {
|
||||
|
@ -1958,8 +1945,6 @@ async function expandWorkflowPresetHelper(folder: string, preset: WorkflowPreset
|
|||
}
|
||||
}
|
||||
|
||||
preset.environment = EnvironmentUtils.mergePreserveNull([process.env, inheritedEnv, preset.environment]);
|
||||
|
||||
preset.__expanded = true;
|
||||
return preset;
|
||||
}
|
||||
|
@ -2047,8 +2032,11 @@ export function buildArgs(preset: BuildPreset, tempOverrideArgs?: string[], temp
|
|||
}
|
||||
|
||||
tempOverrideArgs && result.push(...tempOverrideArgs);
|
||||
preset.nativeToolOptions && result.push('--', ...preset.nativeToolOptions);
|
||||
tempOverrideBuildToolArgs && result.push(...tempOverrideBuildToolArgs);
|
||||
if (preset.nativeToolOptions || tempOverrideBuildToolArgs) {
|
||||
result.push('--');
|
||||
preset.nativeToolOptions && result.push(...preset.nativeToolOptions);
|
||||
tempOverrideBuildToolArgs && result.push(...tempOverrideBuildToolArgs);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
|
@ -379,16 +379,18 @@ export class PresetsController {
|
|||
}
|
||||
case SpecialOptions.InheritConfigurationPreset: {
|
||||
const placeHolder = localize('select.one.or.more.config.preset.placeholder', 'Select one or more configure presets');
|
||||
const presets = preset.configurePresets(this.folderPath);
|
||||
const presets = preset.allConfigurePresets(this.folderPath);
|
||||
const inherits = await this.selectAnyPreset(presets, presets, { placeHolder, canPickMany: true });
|
||||
newPreset = { name: '__placeholder__', description: '', displayName: '', inherits };
|
||||
break;
|
||||
}
|
||||
case SpecialOptions.ToolchainFile: {
|
||||
const displayName = localize("custom.configure.preset.toolchain.file", "Configure preset using toolchain file");
|
||||
const description = localize("description.custom.configure.preset", "Sets Ninja generator, build and install directory");
|
||||
newPreset = {
|
||||
name: '__placeholder__',
|
||||
displayName: `Configure preset using toolchain file`,
|
||||
description: 'Sets Ninja generator, build and install directory',
|
||||
displayName,
|
||||
description,
|
||||
generator: 'Ninja',
|
||||
binaryDir: '${sourceDir}/out/build/${presetName}',
|
||||
cacheVariables: {
|
||||
|
@ -400,10 +402,12 @@ export class PresetsController {
|
|||
break;
|
||||
}
|
||||
case SpecialOptions.Custom: {
|
||||
const displayName = localize("custom.configure.preset", "Custom configure preset");
|
||||
const description = localize("description.custom.configure.preset", "Sets Ninja generator, build and install directory");
|
||||
newPreset = {
|
||||
name: '__placeholder__',
|
||||
displayName: `Custom configure preset`,
|
||||
description: 'Sets Ninja generator, build and install directory',
|
||||
displayName,
|
||||
description,
|
||||
generator: 'Ninja',
|
||||
binaryDir: '${sourceDir}/out/build/${presetName}',
|
||||
cacheVariables: {
|
||||
|
@ -466,7 +470,7 @@ export class PresetsController {
|
|||
}
|
||||
|
||||
async addBuildPreset(): Promise<boolean> {
|
||||
if (preset.configurePresets(this.folderPath).length === 0) {
|
||||
if (preset.allConfigurePresets(this.folderPath).length === 0) {
|
||||
return this.handleNoConfigurePresets();
|
||||
}
|
||||
|
||||
|
@ -485,7 +489,7 @@ export class PresetsController {
|
|||
label: localize('create.build.from.config.preset', 'Create from Configure Preset'),
|
||||
description: localize('description.create.build.from.config.preset', 'Create a new build preset')
|
||||
}];
|
||||
if (preset.buildPresets(this.folderPath).length > 0) {
|
||||
if (preset.allBuildPresets(this.folderPath).length > 0) {
|
||||
items.push({
|
||||
name: SpecialOptions.InheritBuildPreset,
|
||||
label: localize('inherit.build.preset', 'Inherit from Build Preset'),
|
||||
|
@ -508,14 +512,14 @@ export class PresetsController {
|
|||
switch (chosenItem.name) {
|
||||
case SpecialOptions.CreateFromConfigurationPreset: {
|
||||
const placeHolder = localize('select.a.config.preset.placeholder', 'Select a configure preset');
|
||||
const presets = preset.configurePresets(this.folderPath);
|
||||
const presets = preset.allConfigurePresets(this.folderPath);
|
||||
const configurePreset = await this.selectNonHiddenPreset(presets, presets, { placeHolder });
|
||||
newPreset = { name: '__placeholder__', description: '', displayName: '', configurePreset };
|
||||
break;
|
||||
}
|
||||
case SpecialOptions.InheritBuildPreset: {
|
||||
const placeHolder = localize('select.one.or.more.build.preset.placeholder', 'Select one or more build presets');
|
||||
const presets = preset.buildPresets(this.folderPath);
|
||||
const presets = preset.allBuildPresets(this.folderPath);
|
||||
const inherits = await this.selectAnyPreset(presets, presets, { placeHolder, canPickMany: true });
|
||||
newPreset = { name: '__placeholder__', description: '', displayName: '', inherits };
|
||||
break;
|
||||
|
@ -543,7 +547,7 @@ export class PresetsController {
|
|||
}
|
||||
|
||||
async addTestPreset(): Promise<boolean> {
|
||||
if (preset.configurePresets(this.folderPath).length === 0) {
|
||||
if (preset.allConfigurePresets(this.folderPath).length === 0) {
|
||||
return this.handleNoConfigurePresets();
|
||||
}
|
||||
|
||||
|
@ -562,7 +566,7 @@ export class PresetsController {
|
|||
label: localize('create.test.from.config.preset', 'Create from Configure Preset'),
|
||||
description: localize('description.create.test.from.config.preset', 'Create a new test preset')
|
||||
}];
|
||||
if (preset.testPresets(this.folderPath).length > 0) {
|
||||
if (preset.allTestPresets(this.folderPath).length > 0) {
|
||||
items.push({
|
||||
name: SpecialOptions.InheritTestPreset,
|
||||
label: localize('inherit.test.preset', 'Inherit from Test Preset'),
|
||||
|
@ -585,14 +589,14 @@ export class PresetsController {
|
|||
switch (chosenItem.name) {
|
||||
case SpecialOptions.CreateFromConfigurationPreset: {
|
||||
const placeHolder = localize('select.a.config.preset.placeholder', 'Select a configure preset');
|
||||
const presets = preset.configurePresets(this.folderPath);
|
||||
const presets = preset.allConfigurePresets(this.folderPath);
|
||||
const configurePreset = await this.selectNonHiddenPreset(presets, presets, { placeHolder });
|
||||
newPreset = { name: '__placeholder__', description: '', displayName: '', configurePreset };
|
||||
break;
|
||||
}
|
||||
case SpecialOptions.InheritTestPreset: {
|
||||
const placeHolder = localize('select.one.or.more.test.preset.placeholder', 'Select one or more test presets');
|
||||
const presets = preset.testPresets(this.folderPath);
|
||||
const presets = preset.allTestPresets(this.folderPath);
|
||||
const inherits = await this.selectAnyPreset(presets, presets, { placeHolder, canPickMany: true });
|
||||
newPreset = { name: '__placeholder__', description: '', displayName: '', inherits };
|
||||
break;
|
||||
|
@ -619,7 +623,7 @@ export class PresetsController {
|
|||
}
|
||||
|
||||
async addPackagePreset(): Promise<boolean> {
|
||||
if (preset.configurePresets(this.folderPath).length === 0) {
|
||||
if (preset.allConfigurePresets(this.folderPath).length === 0) {
|
||||
return this.handleNoConfigurePresets();
|
||||
}
|
||||
|
||||
|
@ -661,7 +665,7 @@ export class PresetsController {
|
|||
switch (chosenItem.name) {
|
||||
case SpecialOptions.CreateFromConfigurationPreset: {
|
||||
const placeHolder = localize('select.a.config.preset.placeholder', 'Select a configure preset');
|
||||
const presets = preset.configurePresets(this.folderPath);
|
||||
const presets = preset.allConfigurePresets(this.folderPath);
|
||||
const configurePreset = await this.selectNonHiddenPreset(presets, presets, { placeHolder });
|
||||
newPreset = { name: '__placeholder__', description: '', displayName: '', configurePreset };
|
||||
break;
|
||||
|
@ -695,7 +699,7 @@ export class PresetsController {
|
|||
}
|
||||
|
||||
async addWorkflowPreset(): Promise<boolean> {
|
||||
if (preset.configurePresets(this.folderPath).length === 0) {
|
||||
if (preset.allConfigurePresets(this.folderPath).length === 0) {
|
||||
return this.handleNoConfigurePresets();
|
||||
}
|
||||
|
||||
|
@ -720,7 +724,7 @@ export class PresetsController {
|
|||
label: localize('create.workflow.from.config.preset', 'Create from Configure Preset'),
|
||||
description: localize('description.create.workflow.from.config.preset', 'Create a new workflow preset')
|
||||
}];
|
||||
if (preset.workflowPresets(this.folderPath).length > 0) {
|
||||
if (preset.allWorkflowPresets(this.folderPath).length > 0) {
|
||||
items.push({
|
||||
name: SpecialOptions.CreateFromWorkflowPreset,
|
||||
label: localize('create.workflow.preset', 'Create from Workflow Preset'),
|
||||
|
@ -743,7 +747,7 @@ export class PresetsController {
|
|||
switch (chosenItem.name) {
|
||||
case SpecialOptions.CreateFromConfigurationPreset: {
|
||||
const placeHolder = localize('select.a.config.preset.placeholder', 'Select a configure preset');
|
||||
const presets = preset.configurePresets(this.folderPath);
|
||||
const presets = preset.allConfigurePresets(this.folderPath);
|
||||
const configurePreset = await this.selectNonHiddenPreset(presets, presets, { placeHolder });
|
||||
if (configurePreset) {
|
||||
newPreset = { name: '__placeholder__', description: '', displayName: '',
|
||||
|
@ -754,7 +758,7 @@ export class PresetsController {
|
|||
}
|
||||
case SpecialOptions.CreateFromWorkflowPreset: {
|
||||
const placeHolder = localize('select.one.workflow.preset.placeholder', 'Select one workflow base preset');
|
||||
const presets = preset.workflowPresets(this.folderPath);
|
||||
const presets = preset.allWorkflowPresets(this.folderPath);
|
||||
const workflowBasePresetName = await this.selectNonHiddenPreset(presets, presets, { placeHolder, canPickMany: false });
|
||||
const workflowBasePreset = presets.find(pr => pr.name === workflowBasePresetName);
|
||||
newPreset = { name: '__placeholder__', description: '', displayName: '', steps: workflowBasePreset?.steps || [{type: "configure", name: "_placeholder_"}] };
|
||||
|
@ -1006,10 +1010,8 @@ export class PresetsController {
|
|||
const workflowPresets = preset.allWorkflowPresets(this.folderPath);
|
||||
for (const workflowPreset of workflowPresets) {
|
||||
// Set active workflow preset as the first valid workflow preset (matching the selected configure preset is not a requirement as for the other presets types)
|
||||
if (!workflowPreset.hidden) {
|
||||
await this.setWorkflowPreset(workflowPreset.name, false/*needToCheckConfigurePreset*/, false/*checkChangingPreset*/);
|
||||
currentWorkflowPreset = this.project.workflowPreset?.name;
|
||||
}
|
||||
await this.setWorkflowPreset(workflowPreset.name, false/*needToCheckConfigurePreset*/, false/*checkChangingPreset*/);
|
||||
currentWorkflowPreset = this.project.workflowPreset?.name;
|
||||
if (currentWorkflowPreset) {
|
||||
break;
|
||||
}
|
||||
|
@ -1712,24 +1714,33 @@ export class PresetsController {
|
|||
// Note: in case anyone want to change this, presetType must match the corresponding key in presets.json files
|
||||
async addPresetAddUpdate(newPreset: preset.ConfigurePreset | preset.BuildPreset | preset.TestPreset | preset.PackagePreset | preset.WorkflowPreset,
|
||||
presetType: 'configurePresets' | 'buildPresets' | 'testPresets' | 'packagePresets' | 'workflowPresets') {
|
||||
const originalPresetsFile: preset.PresetsFile = preset.getOriginalPresetsFile(this.folderPath) || { version: 8 };
|
||||
if (!originalPresetsFile[presetType]) {
|
||||
originalPresetsFile[presetType] = [];
|
||||
// If the new preset inherits from a user preset, it should be added to the user presets file.
|
||||
let presetsFile: preset.PresetsFile;
|
||||
let isUserPreset = false;
|
||||
|
||||
if (preset.inheritsFromUserPreset(newPreset, presetType, this.folderPath)) {
|
||||
presetsFile = preset.getOriginalUserPresetsFile(this.folderPath) || { version: 8 };
|
||||
isUserPreset = true;
|
||||
} else {
|
||||
presetsFile = preset.getOriginalPresetsFile(this.folderPath) || { version: 8 };
|
||||
isUserPreset = false;
|
||||
}
|
||||
|
||||
if (!presetsFile[presetType]) {
|
||||
presetsFile[presetType] = [];
|
||||
}
|
||||
switch (presetType) {
|
||||
case "configurePresets":
|
||||
case "buildPresets":
|
||||
case "testPresets":
|
||||
case "packagePresets":
|
||||
originalPresetsFile[presetType]!.push(newPreset);
|
||||
presetsFile[presetType]!.push(newPreset);
|
||||
break;
|
||||
case "workflowPresets":
|
||||
originalPresetsFile[presetType]!.push(newPreset as preset.WorkflowPreset);
|
||||
presetsFile[presetType]!.push(newPreset as preset.WorkflowPreset);
|
||||
break;
|
||||
}
|
||||
|
||||
await this.updatePresetsFile(originalPresetsFile);
|
||||
await this.updatePresetsFile(presetsFile, isUserPreset);
|
||||
}
|
||||
|
||||
private getIndentationSettings() {
|
||||
|
|
|
@ -92,6 +92,9 @@ export class ProjectStatus {
|
|||
await runCommand('selectPackagePreset');
|
||||
await this.refresh(node);
|
||||
}),
|
||||
vscode.commands.registerCommand('cmake.projectStatus.viewPackageSettings', async (_node: Node) => {
|
||||
await runCommand('viewPackageSettings');
|
||||
}),
|
||||
vscode.commands.registerCommand('cmake.projectStatus.selectWorkflowPreset', async (node: Node) => {
|
||||
await runCommand('selectWorkflowPreset');
|
||||
await this.refresh(node);
|
||||
|
@ -668,6 +671,9 @@ class PackageNode extends Node {
|
|||
return this.initialize();
|
||||
}
|
||||
|
||||
async refresh(): Promise<void> {
|
||||
await this.packagePreset?.refresh();
|
||||
}
|
||||
}
|
||||
|
||||
class WorkflowNode extends Node {
|
||||
|
@ -820,7 +826,7 @@ class ConfigPreset extends Node {
|
|||
return;
|
||||
}
|
||||
this.label = (treeDataProvider.cmakeProject.configurePreset?.displayName || treeDataProvider.cmakeProject.configurePreset?.name) || noConfigPresetSelected;
|
||||
this.tooltip = 'Change Configure Preset';
|
||||
this.tooltip = localize("configPreset.change", "Change Configure Preset");
|
||||
this.contextValue = 'configPreset';
|
||||
this.collapsibleState = vscode.TreeItemCollapsibleState.None;
|
||||
await this.updateDescription();
|
||||
|
@ -859,7 +865,7 @@ class BuildPreset extends Node {
|
|||
if (this.label === preset.defaultBuildPreset.name) {
|
||||
this.label = preset.defaultBuildPreset.displayName;
|
||||
}
|
||||
this.tooltip = 'Change Build Preset';
|
||||
this.tooltip = localize("buildPreset.change", "Change Build Preset");
|
||||
this.contextValue = 'buildPreset';
|
||||
this.collapsibleState = vscode.TreeItemCollapsibleState.None;
|
||||
await this.updateDescription();
|
||||
|
@ -899,7 +905,7 @@ class TestPreset extends Node {
|
|||
if (this.label === preset.defaultTestPreset.name) {
|
||||
this.label = preset.defaultTestPreset.displayName;
|
||||
}
|
||||
this.tooltip = 'Change Test Preset';
|
||||
this.tooltip = localize("testPreset.change", "Change Test Preset");
|
||||
this.contextValue = 'testPreset';
|
||||
this.collapsibleState = vscode.TreeItemCollapsibleState.None;
|
||||
await this.updateDescription();
|
||||
|
@ -939,7 +945,7 @@ class PackagePreset extends Node {
|
|||
if (this.label === preset.defaultPackagePreset.name) {
|
||||
this.label = preset.defaultPackagePreset.displayName;
|
||||
}
|
||||
this.tooltip = 'Change Package Preset';
|
||||
this.tooltip = localize("packagePreset.change", "Change Package Preset");
|
||||
this.contextValue = 'packagePreset';
|
||||
this.collapsibleState = vscode.TreeItemCollapsibleState.None;
|
||||
|
||||
|
@ -980,7 +986,7 @@ class WorkflowPreset extends Node {
|
|||
if (this.label === preset.defaultWorkflowPreset.name) {
|
||||
this.label = preset.defaultWorkflowPreset.displayName;
|
||||
}
|
||||
this.tooltip = 'Change Workflow Preset';
|
||||
this.tooltip = localize("workflowPreset.change", "Change Workflow Preset");
|
||||
this.contextValue = 'workflowPreset';
|
||||
this.collapsibleState = vscode.TreeItemCollapsibleState.None;
|
||||
}
|
||||
|
@ -1000,7 +1006,7 @@ class Kit extends Node {
|
|||
return;
|
||||
}
|
||||
this.label = treeDataProvider.cmakeProject.activeKit?.name || noKitSelected;
|
||||
this.tooltip = "Change Kit";
|
||||
this.tooltip = localize("kit.change", "Change Kit");
|
||||
this.collapsibleState = vscode.TreeItemCollapsibleState.None;
|
||||
this.contextValue = 'kit';
|
||||
}
|
||||
|
@ -1124,7 +1130,7 @@ class Variant extends Node {
|
|||
return;
|
||||
}
|
||||
this.label = treeDataProvider.cmakeProject.activeVariantName || "Debug";
|
||||
this.tooltip = "Set variant";
|
||||
this.tooltip = localize("set.variant", "Set variant");
|
||||
this.collapsibleState = vscode.TreeItemCollapsibleState.None;
|
||||
this.contextValue = 'variant';
|
||||
}
|
||||
|
|
|
@ -67,7 +67,7 @@ export function activate(extensionContext: vscode.ExtensionContext): void {
|
|||
const packageInfo: IPackageInfo = getPackageInfo();
|
||||
if (packageInfo) {
|
||||
const targetPopulation: TargetPopulation = TargetPopulation.Public;
|
||||
experimentationTelemetry = new ExperimentationTelemetry(new TelemetryReporter(packageInfo.name, packageInfo.version, appInsightsKey));
|
||||
experimentationTelemetry = new ExperimentationTelemetry(new TelemetryReporter(appInsightsKey));
|
||||
initializationPromise = getExperimentationServiceAsync(packageInfo.name, packageInfo.version, targetPopulation, experimentationTelemetry, extensionContext.globalState);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,5 +18,5 @@ export async function onTestSettingsChange(): Promise<void> {
|
|||
|
||||
export async function onPackageSettingsChange(): Promise<void> {
|
||||
await treeDataProvider.refreshPackageNode();
|
||||
// No updates necessary to status bar, package/workflow presets live in Project Status View only.
|
||||
getStatusBar()?.updatePackagePresetButton();
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ import { DirectoryContext } from '@cmt/workspace';
|
|||
import * as vscode from 'vscode';
|
||||
import { CMakeDriver } from '@cmt/drivers/drivers';
|
||||
import * as nls from 'vscode-nls';
|
||||
import { ConfigureType } from './cmakeProject';
|
||||
import { WorkflowPreset, ConfigurePreset, BuildPreset, TestPreset, PackagePreset, getPresetByName, allConfigurePresets, allBuildPresets, allTestPresets, allPackagePresets } from './preset';
|
||||
import * as proc from '@cmt/proc';
|
||||
import { ProjectController } from './projectController';
|
||||
|
@ -51,16 +52,25 @@ export class WorkflowDriver implements vscode.Disposable {
|
|||
let newTestPreset: TestPreset | null = null ;
|
||||
let newPackagePreset: PackagePreset | null = null;
|
||||
const workflowSteps = workflowPreset?.steps || [];
|
||||
let cleanWorkflowConfigure: boolean = false;
|
||||
for (const step of workflowSteps) {
|
||||
switch (step.type) {
|
||||
case "configure":
|
||||
newConfigurePreset = getPresetByName(allConfigurePresets(driver.workspaceFolder), step.name);
|
||||
if (newConfigurePreset?.name !== oldConfigurePreset?.name) {
|
||||
await prj.setConfigurePreset(newConfigurePreset?.name || null);
|
||||
// If the workflow configure preset is different than the current project configure preset
|
||||
// it is better to re-configure clean.
|
||||
cleanWorkflowConfigure = true;
|
||||
}
|
||||
|
||||
log.info(localize('workflow.configuring', 'Configuring project with the {0} configure preset of the workflow.', newConfigurePreset?.name));
|
||||
await prj.configureInternal(ConfigureTrigger.workflow);
|
||||
if (cleanWorkflowConfigure) {
|
||||
log.info(localize('workflow.configuring.clean', 'Configuring clean project with the {0} configure preset of the workflow.', newConfigurePreset?.name));
|
||||
await prj.configureInternal(ConfigureTrigger.workflow, [], ConfigureType.Clean);
|
||||
} else {
|
||||
log.info(localize('workflow.configuring', 'Configuring project with the {0} configure preset of the workflow.', newConfigurePreset?.name));
|
||||
await prj.configureInternal(ConfigureTrigger.workflow);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
|
@ -102,7 +112,11 @@ export class WorkflowDriver implements vscode.Disposable {
|
|||
if (newConfigurePreset?.name !== oldConfigurePreset?.name && oldConfigurePreset) {
|
||||
await prj.setConfigurePreset(oldConfigurePreset?.name);
|
||||
log.info(localize('workflow.restore.configuring', 'Workflow finished. Restore the original {0} configure preset and reconfigure.', oldConfigurePreset?.name ?? ""));
|
||||
await prj.configureInternal(ConfigureTrigger.workflow);
|
||||
if (cleanWorkflowConfigure) {
|
||||
await prj.configureInternal(ConfigureTrigger.workflow, [], ConfigureType.Clean);
|
||||
} else {
|
||||
await prj.configureInternal(ConfigureTrigger.workflow);
|
||||
}
|
||||
}
|
||||
|
||||
if (newBuildPreset?.name !== oldBuildPreset?.name && oldBuildPreset) {
|
||||
|
|
|
@ -26,7 +26,8 @@ function createConfig(conf: Partial<ExtensionConfigurationSettings>): Configurat
|
|||
ctest: {
|
||||
parallelJobs: 0,
|
||||
allowParallelJobs: false,
|
||||
testExplorerIntegrationEnabled: true
|
||||
testExplorerIntegrationEnabled: true,
|
||||
testSuiteDelimiter: ''
|
||||
},
|
||||
parseBuildDiagnostics: true,
|
||||
enabledOutputParsers: [],
|
||||
|
@ -48,6 +49,7 @@ function createConfig(conf: Partial<ExtensionConfigurationSettings>): Configurat
|
|||
loadCompileCommands: true,
|
||||
configureOnOpen: null,
|
||||
configureOnEdit: true,
|
||||
deleteBuildDirOnCleanConfigure: false,
|
||||
skipConfigureIfCachePresent: null,
|
||||
useCMakeServer: true,
|
||||
cmakeCommunicationMode: 'automatic',
|
||||
|
|
2104
yarn.lock
2104
yarn.lock
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Загрузка…
Ссылка в новой задаче