From 54e487d10e29f889a6c95769961e6975f14b8fa6 Mon Sep 17 00:00:00 2001 From: i-ky Date: Thu, 18 Jun 2020 22:04:04 +0300 Subject: [PATCH 01/26] Fix typo in FAQ (#1320) "an" -> "a" --- docs/faq.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/faq.rst b/docs/faq.rst index 88bd6d8b4..d390c8604 100644 --- a/docs/faq.rst +++ b/docs/faq.rst @@ -43,5 +43,5 @@ Will CMake Tools Ever Support ````? **************************************** Only if you voice support for it as a `GitHub issue -`_. Open an feature -request or search for and provide feedback for an existing one! \ No newline at end of file +`_. Open a feature +request or search for and provide feedback for an existing one! From b02e5fb3ea025890394b1600f78cfb47aafff80e Mon Sep 17 00:00:00 2001 From: csigs Date: Wed, 24 Jun 2020 13:27:43 -0700 Subject: [PATCH 02/26] Localization - Translated Strings (#1329) Co-authored-by: DevDiv Build Lab - Dev14 --- i18n/rus/src/tree.i18n.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/rus/src/tree.i18n.json b/i18n/rus/src/tree.i18n.json index 2a7ba674f..de873350a 100644 --- a/i18n/rus/src/tree.i18n.json +++ b/i18n/rus/src/tree.i18n.json @@ -14,6 +14,6 @@ "item.render.issue": "Возникла проблема при отрисовке этого элемента. Это ошибка.", "empty.project": "Пустой проект", "update.project.with.mismatch": "Обновление проекта с несоответствующим свойством имени", - "error.update.code.model.on.nonexist.folder": "Обновление модели кода в папке, которая еще не существует?", + "error.update.code.model.on.nonexist.folder": "Обновление модели кода в папке, которая еще не существует.", "error.rendering.children.nodes": "Ошибка при отображении дочерних узлов." } \ No newline at end of file From 28712f5a833e0cc3f0fb06c2d18117248c7a2b3a Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 26 Jun 2020 15:45:34 -0700 Subject: [PATCH 03/26] Consolidate CMake Tools documentation (#1324) --- docs/README.md | 70 +++- docs/__conf.py | 258 --------------- docs/_static/dummy.txt | 0 docs/build.md | 55 ++++ docs/building.rst | 104 ------ docs/changelog.rst | 219 ------------ docs/cmake-settings.md | 69 ++++ docs/common_issues.rst | 58 ---- docs/configure.md | 100 ++++++ docs/configuring.rst | 169 ---------- docs/contribute.md | 49 +++ docs/debug-launch.md | 97 ++++++ docs/debugging.rst | 141 -------- docs/development.rst | 54 --- docs/faq.md | 29 ++ docs/faq.rst | 47 --- docs/getting_started.rst | 175 ---------- docs/how-to.md | 37 +++ docs/how_do_i.rst | 63 ---- docs/images/cmake_kits_json.png | Bin 0 -> 68754 bytes .../custom_variant_selector.png | Bin docs/images/default_target.png | Bin 0 -> 5729 bytes docs/{res => images}/launch_target.png | Bin .../many_variants_example.png} | Bin docs/{res => images}/target_selector.png | Bin docs/images/variants_yaml.png | Bin 0 -> 58928 bytes docs/index.rst | 42 --- docs/kits.md | 139 ++++++++ docs/kits.rst | 243 -------------- docs/res/build_button.png | Bin 7127 -> 0 bytes docs/res/build_command.png | Bin 27158 -> 0 bytes docs/res/build_progress.png | Bin 21442 -> 0 bytes docs/res/configure_output.png | Bin 111115 -> 0 bytes docs/res/default_target.png | Bin 6453 -> 0 bytes docs/res/kit_selected.png | Bin 17484 -> 0 bytes docs/res/kit_selector.png | Bin 47009 -> 0 bytes docs/res/kits_json.png | Bin 77342 -> 0 bytes docs/res/no_kits.png | Bin 18155 -> 0 bytes docs/res/no_variant.png | Bin 4447 -> 0 bytes docs/res/quickstart.png | Bin 19276 -> 0 bytes docs/res/variant_selector.png | Bin 24971 -> 0 bytes docs/res/variants_yaml.png | Bin 60292 -> 0 bytes docs/settings.rst | 311 ------------------ docs/troubleshoot.md | 45 +++ docs/troubleshooting.rst | 76 ----- docs/variants.md | 178 ++++++++++ docs/variants.rst | 244 -------------- 47 files changed, 865 insertions(+), 2207 deletions(-) delete mode 100644 docs/__conf.py delete mode 100644 docs/_static/dummy.txt create mode 100644 docs/build.md delete mode 100644 docs/building.rst delete mode 100644 docs/changelog.rst create mode 100644 docs/cmake-settings.md delete mode 100644 docs/common_issues.rst create mode 100644 docs/configure.md delete mode 100644 docs/configuring.rst create mode 100644 docs/contribute.md create mode 100644 docs/debug-launch.md delete mode 100644 docs/debugging.rst delete mode 100644 docs/development.rst create mode 100644 docs/faq.md delete mode 100644 docs/faq.rst delete mode 100644 docs/getting_started.rst create mode 100644 docs/how-to.md delete mode 100644 docs/how_do_i.rst create mode 100644 docs/images/cmake_kits_json.png rename docs/{res => images}/custom_variant_selector.png (100%) create mode 100644 docs/images/default_target.png rename docs/{res => images}/launch_target.png (100%) rename docs/{res/many_variants.png => images/many_variants_example.png} (100%) rename docs/{res => images}/target_selector.png (100%) create mode 100644 docs/images/variants_yaml.png delete mode 100644 docs/index.rst create mode 100644 docs/kits.md delete mode 100644 docs/kits.rst delete mode 100644 docs/res/build_button.png delete mode 100644 docs/res/build_command.png delete mode 100644 docs/res/build_progress.png delete mode 100644 docs/res/configure_output.png delete mode 100644 docs/res/default_target.png delete mode 100644 docs/res/kit_selected.png delete mode 100644 docs/res/kit_selector.png delete mode 100644 docs/res/kits_json.png delete mode 100644 docs/res/no_kits.png delete mode 100644 docs/res/no_variant.png delete mode 100644 docs/res/quickstart.png delete mode 100644 docs/res/variant_selector.png delete mode 100644 docs/res/variants_yaml.png delete mode 100644 docs/settings.rst create mode 100644 docs/troubleshoot.md delete mode 100644 docs/troubleshooting.rst create mode 100644 docs/variants.md delete mode 100644 docs/variants.rst diff --git a/docs/README.md b/docs/README.md index d19fc2ebe..0d74a528a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,5 +1,69 @@ -# CMake Tools Documentation +# CMake Tools for Visual Studio Code documentation -If you are an end user that has come looking for the CMake Tools documentation, you probably want to take a look at it in rendered HTML form: +CMake Tools is an extension designed to make it easy to work with CMake-based projects. -[Click here to go to the official end-user CMake Tools Documentation](https://vector-of-bool.github.io/docs/vscode-cmake-tools/index.html). + If you are new, try the [CMake Tools quick start](https://code.visualstudio.com/docs/cpp/CMake-linux) and see the [frequently asked questions](faq.md). + +[How to](how-to.md) +* [Create a new project](how-to.md#create-a-new-project) +* [Configure a project](how-to.md#configure-a-project) +* [Build a project](how-to.md#build-a-project) +* [Debug a project](how-to.md#debug-a-project) +* [Pass command-line arguments to the debugger](debug-launch.md#debug-using-a-launchjson-file) +* [Set up include paths for C++ IntelliSense](how-to.md#set-up-include-paths-for-c-intellisense) + +[Kits](kits.md) +* [How kits are found and defined](kits.md#how-kits-are-found-and-defined) +* [Kit options](kits.md#kit-options) + +[Configure](configure.md) +* [CMake configuration process overview](configure.md#cmake-configuration-process-overview) +* [The CMake tools configure step](configure.md#the-cmake-tools-configure-step) +* [The configure step outside of CMake Tools](configure.md#the-configure-step-outside-of-cmake-tools) +* [Clean configure](configure.md#clean-configure) + +[Variants](variants.md) +* [Variant YAML example](variants.md#example-yaml-variants-file) +* [Variant schema](variants.md#variant-schema) +* [Variant settings](variants.md#variant-settings) +* [Variant options](variants.md#variant-options) +* [How variants are applied](variants.md#how-variants-are-applied) +* [Large variant file example](variants.md#large-variant-file-example) + +[Build](build.md) +* [Build the default target](build.md#build-the-default-target) +* [Build a single target](build.md#build-a-single-target) +* [How CMake tools builds your project](build.md#how-cmake-tools-builds) +* [Clean build](build.md#clean-build) + +[Debug and launch](debug-launch.md) +* [Select a launch target](debug-launch.md#select-a-launch-target) +* [Quick debugging](debug-launch.md#quick-debugging) +* [Debug using a launch.json file](debug-launch.md#debug-using-a-launchjson-file) +* [Run without debugging](debug-launch.md#run-without-debugging) + +[Configure CMake Tools settings](cmake-settings.md) +* [CMake Tools settings](cmake-settings.md#cmake-settings) +* [Variable substitution](cmake-settings.md#variable-substitution) + +[Troubleshoot CMake Tools](troubleshoot.md#troubleshoot-cmake-tools) +* [Common issues and resolutions](troubleshoot.md#common-issues-and-resolutions) +* [CMake Tools is unable to provide IntelliSense configuration](troubleshoot.md#error-cmake-tools-is-unable-to-provide-intellisense-configuration) +* [Green squiggles beneath #include directives](troubleshoot.md#green-squiggles-beneath-include-directives) +* [Debugging ignores launch.json](troubleshoot.md#debugging-ignores-launchjson) +* [Reset CMake Tools extension state](troubleshoot.md#reset-cmake-tools-extension-state) +* [Increase the logging level](troubleshoot.md#increase-the-logging-level) +* [Check the log file](troubleshoot.md#check-the-log-file) +* [Get help](troubleshoot.md#get-help) + +[Frequently asked questions](faq.md) +* [How can I get help?](faq.md#how-can-i-get-help) +* [What about CMake language support?](faq.md#what-about-cmake-language-support) +* [How do I learn about CMake?](faq.md#how-do-i-learn-about-cmake) +* [How does CMake Tools work with C and C++ IntelliSense?](faq.md#how-does-cmake-tools-work-with-c-and-c-intellisense) +* [How do I perform common tasks](faq.md#how-do-i-perform-common-tasks) + +[How to contribute](contribute.md) +* [Developer Reference](contribute.md#developer-reference) +* [Build the CMake Tools extension](contribute.md#build-the-cmake-tools-extension) +* [Coding guidelines](contribute.md#coding-guidelines) diff --git a/docs/__conf.py b/docs/__conf.py deleted file mode 100644 index c19fc85fc..000000000 --- a/docs/__conf.py +++ /dev/null @@ -1,258 +0,0 @@ -# -*- coding: utf-8 -*- -# -# CMake Tools documentation build configuration file, created by -# sphinx-quickstart on Sat Sep 23 14:46:28 2017. -# -# This file is execfile()d with the current directory set to its -# containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -import sys -import os - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -#sys.path.insert(0, os.path.abspath('.')) - -# -- General configuration ------------------------------------------------ - -# If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix of source filenames. -source_suffix = '.rst' - -# The encoding of source files. -#source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = u'CMake Tools' -copyright = u'2017, vector-of-bool' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = '1.0.0' -# The full version, including alpha/beta/rc tags. -release = '1.0.0-dev' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -#language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -exclude_patterns = [] - -# The reST default role (used for this markup: `text`) to use for all -# documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] - -# If true, keep warnings as "system message" paragraphs in the built documents. -#keep_warnings = False - - -# -- Options for HTML output ---------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -html_theme = 'default' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -#html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] - -# The name for this set of Sphinx documents. If None, it defaults to -# " v documentation". -#html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -#html_logo = None - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -#html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -# Add any extra paths that contain custom files (such as robots.txt or -# .htaccess) here, relative to this directory. These files are copied -# directly to the root of the documentation. -#html_extra_path = [] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_domain_indices = True - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - -# If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -#html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None - -# Output file base name for HTML help builder. -htmlhelp_basename = 'CMakeToolsdoc' - - -# -- Options for LaTeX output --------------------------------------------- - -latex_elements = { -# The paper size ('letterpaper' or 'a4paper'). -#'papersize': 'letterpaper', - -# The font size ('10pt', '11pt' or '12pt'). -#'pointsize': '10pt', - -# Additional stuff for the LaTeX preamble. -#'preamble': '', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - ('index', 'CMakeTools.tex', u'CMake Tools Documentation', - u'vector-of-bool', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# If true, show page references after internal links. -#latex_show_pagerefs = False - -# If true, show URL addresses after external links. -#latex_show_urls = False - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_domain_indices = True - - -# -- Options for manual page output --------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - ('index', 'cmaketools', u'CMake Tools Documentation', - [u'vector-of-bool'], 1) -] - -# If true, show URL addresses after external links. -#man_show_urls = False - - -# -- Options for Texinfo output ------------------------------------------- - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - ('index', 'CMakeTools', u'CMake Tools Documentation', - u'vector-of-bool', 'CMakeTools', 'One line description of project.', - 'Miscellaneous'), -] - -# Documents to append as an appendix to all manuals. -#texinfo_appendices = [] - -# If false, no module index is generated. -#texinfo_domain_indices = True - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -#texinfo_show_urls = 'footnote' - -# If true, do not generate a @detailmenu in the "Top" node's menu. -#texinfo_no_detailmenu = False diff --git a/docs/_static/dummy.txt b/docs/_static/dummy.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/build.md b/docs/build.md new file mode 100644 index 000000000..421789aa3 --- /dev/null +++ b/docs/build.md @@ -0,0 +1,55 @@ +# Build with CMake Tools + +Once you have [configured](configure.md) your project, you can run a CMake build. Most of your time with CMake Tools will be spent configuring the build. The build process is much simpler. + +You can start a build by: + +1. Running **CMake: Build** from the VS Code command pallette. +2. Pressing the keyboard shortcut (the default is `F7`). +3. Selecting the **Build** button in the VS Code status bar. + +When the build starts, the CMake Tools output panel opens to display build tool output. The **Build** button will change to a **Stop** button, and may show a progress bar for the running build. Pressing the **Stop** button cancels the running build. Starting a build while another build is running will cancel the current build and start a new one. + +> **Note:** The progress bar only displays if the build tool emits output lines that can be parsed to get a percentage of the build progress. This includes Ninja and Makefile generators. MSBuild does not emit this information, so no progress bar will be visible. + +The results of the build are written to the directory specified by [cmake.buildDirectory](cmake-settings.md#cmake-settings). This defaults to a subdirectory of the project directory, so the build results are visible within the project explorer. The exact file paths will depend on your CMake project configuration. + +## Build the default target + +CMake Tools persists a "default target" for the build process. The default target is the "all" target (named `ALL_BUILD` in some generators), which builds all of the targets that CMake has designated for a default build. + +The name of the default target is shown in the status bar to the right of the **Build** button in square brackets: + +![Default target as shown in the status bar](images/default_target.png) + +Selecting this button shows a quick pick list for all the targets CMake Tools is aware of that can be built, along with the full path to the build result that will be generated by the target: + +![List of targets](images/target_selector.png) + +## Build a single target + +You can build a single target without changing the current build target from the VS Code command pallette by running the **CMake: Build a target** command, or by pressing the keyboard shortcut (default is `Shift+F7`). CMake will build any dependent targets, even if they aren't directly selected. + +## How CMake Tools builds + +### Build flags + +CMake Tools builds by passing the `--build` flag to CMake. This flag is used as a generator-agnostic build invocation tool. CMake tools also passes `--config `, based on the current build type from the active [variant](variants.md). This instructs multi-configuration build tools which configuration they should build. + +For advanced scenarios, additional flags to `--build` can be set with [cmake.buildArgs](cmake-settings.md#cmake-settings), and additional flags for the underlying build tool can be set with [cmake.buildToolArgs](cmake-settings.md#cmake-settings). + +### The build environment + +Environment variables are inherited from the calling Visual Studio Code process, with additional variables from the [cmake.buildEnvironment](cmake-settings.md#cmake-settings) and [cmake.environment](cmake-settings.md#cmake-settings) settings. + +If you are using a [Visual Studio Kit](kits.md#visual-Studio), CMake Tools runs the build with the appropriate environment variables set to build with the chosen version of Visual Studio, much like how it sets these environment variables during [the CMakeTools configure step](configure.md#the-cmake-tools-configure-step). + +## Clean build + +To clean the build, from the VS Code command pallette run the **CMake: Clean** command. Or run the **CMake: Clean rebuild** command to quickly delete any build results and run the build from scratch. + +## Next steps + +- Use CMake Tools to [launch and debug](debug-launch.md) +- Learn about [CMake settings](cmake-settings.md#cmake-settings) you can set to control the build. +- Explore the [CMake Tools documentation](README.md) \ No newline at end of file diff --git a/docs/building.rst b/docs/building.rst deleted file mode 100644 index 5f8d4976a..000000000 --- a/docs/building.rst +++ /dev/null @@ -1,104 +0,0 @@ -.. _building: - -CMake Building -############## - -Once you have :ref:`configured ` your project, you can run a CMake -build. Most work with CMake Tools will be done with configuring, and the build -process is much simpler. - -Starting a build can be done in one of three ways: - -#. Executing the *CMake: Build* command -#. Hitting the associated hotkey (the default being :kbd:`F7`). -#. Pressing the *Build* button in the status bar. - -When the build starts, the CMake Tools output panel will be opened and the -output from the build tool will be shown as it runs. The *Build* button will -change to a *Stop* button and may show a progress bar for the running build. -Pressing the *Stop* button will cancel the running build. Attempting to execute -a build while a build is running will cancel the running build and start a new -one. - -.. note:: - The progress bar will only be shown if the build tool emits output lines - that can be parsed to contain a percentage of the build progress. This - includes Ninja and Makefile generators. MSBuild does not emit this - information, so no progress bar will be visible. - -The results of the build will be written to the directory specified by -:ref:`conf-cmake.buildDirectory`. This defaults to a subdirectory of the project -directory, so the build results will be visible within the project explorer. -The exact file paths will depend on the CMake project configuration. - -.. _building.default-target: - -The Default Target -****************** - -CMake Tools persists a "default target" for the build process. The default -target is the "all" target (named ``ALL_BUILD`` in some generators), which will -build all targets CMake has designated for a default build. - -The name of the default target is shown in the status bar to the right of the -*Build* button in square brackets: - -.. image:: res/default_target.png - :align: center - -Clicking this button will show a quick-pick for all the target CMake Tools is -aware of that can be built, along with the full path to the build result that -will be generated by the target: - -.. image:: res/target_selector.png - :align: center - -.. _building.single-target: - -Building a Single Target -************************ - -Instead of changing the build target, one can also request to build a single -target a single time. Run the *CMake: Build a target* command, or hit the -associated hotkey (defaults to :kbd:`Shift+F7`). - -.. note:: - CMake will build dependent targets, even if they aren't directly selected. - -.. _building.how: - -How CMake Tools Builds -********************** - -Build Flags -=========== - -CMake Tools builds by passing the ``--build`` flag to CMake. This flag is used -as a generator-agnostic build invocation tool. CMake tools also passes -``--config `` based on the current build type from the active -:ref:`variant `. This instructs multi-conf build tools on what -configuration they should build. - -Additional flags to ``--build`` can be set with :ref:`conf-cmake.buildArgs`, -and additional flags for the underlying build tool can be set with -:ref:`conf-cmake.buildToolArgs`. These are advanced options and should only be -used if you know what you are doing. - -The Build Environment -===================== - -Environment variables will be inherited from the calling Visual Studio Code -process, with additional variables from the :ref:`conf-cmake.buildEnvironment` -and :ref:`conf-cmake.environment` setting. - -If using a :ref:`Visual Studio Kit `, CMake Tools runs the build -with the appropriate environment variables set to build with the chosen -Visual Studio, much like how it sets these environment variables when -:ref:`configuring `. - -Cleaning Up -*********** - -CMake Tools lets you clean the build output by running the *CMake: Clean* -command. One can also run the *CMake: Clean rebuild* to quickly delete build -results and run the build from scratch. \ No newline at end of file diff --git a/docs/changelog.rst b/docs/changelog.rst deleted file mode 100644 index 49a5783b4..000000000 --- a/docs/changelog.rst +++ /dev/null @@ -1,219 +0,0 @@ -.. _changelog: - -Changelog and History -##################### - -.. _changes-1.1.3: - -1.1.3 -***** - -Removal: - -- The visual CMake cache editor GUI is gone. The API with which it was drawn is - being removed from a future version of VS Code, and the feature had many - issues. A future CMake GUI will be introduced with more features and greater - stability. - (`#579 `_) - -Features and Tweaks: - -- On Linux, will detect old CMake versions and offer to do an automatic - upgrade. Windows support is pending. If you have a macOS devices and would - like to contribute, please open a pull request! -- Smarter parsing of GCC and Clang compile errors to fold ``note:`` and - ``required from:`` blocks into their main diagnostic. This permits the - folding and browsing of template and macro instantiation errors in a nicer - fashion. MSVC error parsing pending. (**NOTE**: There is an upstream issue - with the sort order of diagnostic information, so ``required from:`` - tracebacks may appear out-of-order). - -Fixes: - -- On Windows, "Launch target in terminal" will use ``cmd.exe`` unconditionally. - This works around issues with command quoting in PowerShell. - (`#562 `_) -- "Debug target" will prefer ``lldb-mi`` to ``lldb``. Fixes issues where - ``cpptools`` is unable to launch the debugger. - (`#584 `_) -- Document the ``environmentVariables`` field on kits. - (`#586 `_) -- Fix legacy CMake mode not setting the CMake generator. - (`#567 `_) -- Permit limited variable expansion for ``cmake.cmakePath`` in ``settings.json`` - (refer to documentation for more details). - (`#569 `_) - -.. _changes-1.1.2: - -1.1.2 -***** - -Fixes and tweaks upon 1.1.2: - -- Fix silent failure when a build directory appears at a different path than is - encoded in its ``CMakeCache.txt``. -- Improved logic in path normalization, but could be better. -- Improve documentation on using ``launch.json``. -- Fix shell splitting preventing certain command lines from being parsed - correctly. -- Display a more helpful message when using a toolchain file and we fail to find - the C and/or C++ compiler because it is not stored in the CMake cache. - -`See the 1.1.2 milestone on GitHub `_. - -.. _changes-1.1.1: - -1.1.1 -***** - -Fixes and tweaks upon 1.1.0: - -- Fix "Unable to automatically determine compiler" when using VS generators. -- Fix failure to provide IntelliSense information for header files even after - adding them to a target. -- "Unexpected stderr/stdout..." no longer appears. This output is now logged as - regular CMake status messages. - -**BREAKING CHANGE**: Variant substitutions follow a new `${variant:var-key}` -syntax to match the special namespacing of substitutions. See :ref:`variant-sub`. - -`See the 1.1.1 milestone on GitHub `_. - -.. _changes-1.1.0: - -1.1.0 -***** - -1.1.0 is the most exciting release yet! It includes several long-awaited -features, including but not limited to: - -- *A project outline view*. CMake Tools will now render a tree representation of - your CMake project, including all targets and source files. - - - Individual targets can be built/run using the context menu in the outline. - - Individual source files can be compiled using the outline context menu. - - The debugger can be started by right-clicking on the desired executable. - -- Update progress and cancellation notifications. Now uses the official VSCode - progress APIs. A proper *Cancel* button is visible on the progress - notification for cancelling the build. -- Progress for the *Configure/Generate* phase. It is up to CMake to generate - reliable progress values, though. -- Automatically configure a project when it is opened. CMake Tools will ask you - the first time, and this preference can be persisted. -- Will automatically ask you for a debug target if you try to debug but haven't - yet set one. - -``cpptools`` Integration! -========================= - -The highest-demand feature of all has finally landed! - -Recent versions of Microsoft's C and C++ extension now export an extensibility -API that gives external sources the opportunity to provide project configuration -information on a file-by-file basis. - -CMake Tools 1.1.0+ will utilize this API to provide per-file compilation and -configuration information to support the C++ extension. This means that a -properly set up CMake project need not manually set configuration information -to receive the benefits of cpptools' IntelliSense engine. - -Check :ref:`the updated How-Do-I page `. - -.. _changes-1.0.1: - -1.0.1 -***** - -Resolves a few issues/enhancements that didn't make it into 1.0.0. - -- Automatically detect when a kit specifies a path to a non-existent compiler - and ask what to do with that kit (remove or keep). -- New option :ref:`conf-cmake.copyCompileCommands`: Set a path to which - ``compile_commands.json`` will be copied after a configure run. -- Fix failing when CMake executable has a different name than ``cmake``. -- Fixed edits to the kits file not applying immediately. -- Fixed issue where CTest is not on the ``$PATH`` and it fails to detect tests. - -.. _changes-1.0.0: - -1.0.0 -***** - -CMake Tools 1.0.0 is a minor change over 0.11.x, but marks the first "stable" -release. It is now a developer-ready tool that is suitable for everyday work! -[#counter]_ - -1.0.0 contains the following improvements and fixes over 0.11.x: - -- Option to build on ``cmake.launchTargetPath`` (Launch-before-debug). - See :ref:`conf-cmake.buildBeforeRun`. -- `LLVM for Windows `_ is now supported as an - auto-detected Kit type. -- To support LLVM for Windows, kit options can now be freely mixed-and-matched, - eg. setting a toolchain file along with a Visual Studio environment. -- Cache initialization files are now supported in ``settings.json``. See - :ref:`conf-cmake.cacheInit`. -- Kits are now **optional**. If no kit is active, CMake Tools will ask you if - you want to scan, select a kit, or opt-out of kits. If no kit is chosen, CMake - Tools will let CMake decide what to do. -- GCC cross-compilers are now detected as regular compilers for compiler kits. -- Setting :ref:`conf-cmake.defaultVariants` is respected again. -- Setting :ref:`conf-cmake.mingwSearchDirs` is respected again. -- CMake Tools will attempt to set the path to the debugger (``gdb`` or ``lldb``) - during Quick Debugging. -- Fix for intermittent "Not yet configured" errors. - -A few issues slated for 1.0.0 fell through as the schedule slipped. If you -expected a feature in 1.0.0 that isn't listed above, it will be available in -1.0.1. - -.. [#counter] If you don't agree, please open a bug report! - -.. _changes-0.11.0: - -0.11.1 -****** - -Several bugfixes and tweaks: - -- Attempted fix for "No build system was generated yet" by implementing more - reliable dirty-checks when running a build/configure. - (`#385 `_) -- Fix handling spaces in filepaths when running ``vswhere.exe``. - (`#381 `_) -- Fix environment variables from ``settings.json`` being ignored when using - legacy (non-cmake-server) mode. - (`#384 `_) -- Do not case-normalize diagnostics on Windows. This prevents VSCode from - considering two equivalent paths to be different when opening them from the - problems panel. - (`#395 `_) -- Reset progress when build finishes. Stops a flash of "%100" when starting a - new build. - (`#394 `_) -- Better error message when trying to use debugging on non-cmake-server. - (`#388 `_) - -0.11.0 -****** - -0.11.0 is the biggest change so far to CMake Tools. It brings not just new -functionality, but new infrastructure and maintainers behind the extension. - -It began with an `overly-ceremonious blog post `_, -followed by months of beta (when it should have been a few weeks). - -Here's a quick summary: - -- :ref:`"Kits" provide a new way to encapsulate the toolset used to build a - project. ` -- Opt-in automatic error reporting. -- Lots of stability and backend cleanup. -- All new documentation! - -0.10.x and Older -**************** - -The old (pre-0.11.0) changelog can be found in `here `_. diff --git a/docs/cmake-settings.md b/docs/cmake-settings.md new file mode 100644 index 000000000..09e49f14e --- /dev/null +++ b/docs/cmake-settings.md @@ -0,0 +1,69 @@ +# Configure CMake Tools settings + +CMake Tools supports a variety of settings that can be set at the user, or workspace, level via VSCode's `settings.json` file. This topic covers the available options and how they are used. + +Options that support substitution, in the table below, allow variable references to appear in their strings. See [variable substitution](#variable-substitution), below, for more information about variable expansion. + +## CMake settings + +|Setting |Description | Default value | Supports substitution | +|---------|---------|---------|-----| +| `cmake.autoSelectActiveFolder`| If 'false', your active folder only changes if you manually run the `CMake: Select Active Folder` command. | 'true' | no | +| `cmake.buildArgs` | An array of additional arguments to pass to `cmake --build`. | `[]` (empty array-no additional arguments) | yes | +| `cmake.buildBeforeRun` | If `true`, build the launch/debug target before running the target. | `true` | no | +| `cmake.buildDirectory` | Specify the build directory (i.e. the root directory where `CMakeCache.txt` will be generated.) | `${workspaceFolder}/build` | yes | +| `cmake.buildEnvironment`| An object containing `key:value` pairs of environment variables, which will be passed only to the compiler. | `null` (no environment variables specified) | yes | +| `cmake.buildToolArgs` | An array of additional arguments to pass to the underlying build tool. | `[]` (empty array-no additional arguments) | yes | +| `cmake.cacheInit` | Path, or list of paths, to cache-initialization files. Passed to CMake via the `-C` command-line argument. | `[]` (empty array-no cache initializer files) | no | +| `cmake.cmakePath`| Specify location of the cmake executable. | `cmake` (causes CMake Tools to search the `PATH` environment variable, as well as some hard-coded locations.) | Supports substitution for `workspaceRoot`, `workspaceFolder`, `workspaceRootFolderName`, `userHome`, `${command:...}` and `${env:...}`. Other substitutions result in an empty string. | +| `cmake.cmakeCommunicationMode` | Specifies the protocol for communicating between the extension and CMake | `automatic` | no | +| `cmake.configureArgs` | Arguments to CMake that will be passed during the configure process. Prefer to use `cmake.configureSettings` or [CMake variants](variants.md).
Do not pass `-D` arguments using this setting. | `[]` (empty array-no arguments) | yes | +| `cmake.configureEnvironment` | An object containing `key:value` pairs of environment variables, which will be passed to CMake only when configuring.| `null` (no environment variable pairs) | yes | +| `cmake.configureSettings` | An object containing `key:value` pairs, which will be passed to CMake when configuring. The same as passing `-DVAR_NAME=ON` via `cmake.configureArgs`. | `null` (no values) | yes | +| `cmake.copyCompileCommands`| If not `null`, copies the `compile_commands.json` file generated by CMake to the path specified by this setting whenever CMake successfully configures. | `null` (do not copy the file) | yes | +| `cmake.defaultVariants` | Override the default set of variants that will be supplied when no variants file is present. See [CMake variants](variants.md). | | no | +| `cmake.environment` | An object containing `key:value` pairs of environment variables, which will be passed onto CMake when configuring and to the compiler. | `null` (no environment variables) | yes | +| `cmake.generator` | Set to a string to override CMake Tools preferred generator logic. If set, CMake will unconditionally use it as the `-G` CMake generator command line argument. ||no| +| `cmake.installPrefix` | If specified, sets a value for `CMAKE_INSTALL_PREFIX` when running CMake configure. If not set, no value will be passed.
If `CMAKE_INSTALL_PREFIX` is set via `cmake.configureArgs` or `cmake.configureSettings`, `cmake.installPrefix` will be ignored.| `null` (no value specified) | yes | +| `cmake.loggingLevel` | A string setting that specifies how much output CMake Tools produces in its output channel. Set to one of `"trace"`, `"debug"`, `"info"`, `"note"`, `"warning"`, `"error"`, or `"fatal"`. `"trace"` is the most verbose.

Regardless of the logging level, CMake Tools writes all levels of logging to the CMake Tools log file. This file is useful if you need to [troubleshoot CMake Tools](troubleshoot.md) | `"info"` | no | +| `cmake.mingwSearchDirs`| List of paths to search for a MinGW installation. This means that GCC does not need to be on your `$PATH` for it to be found via kit scanning. | ["C:\\MinGW"] (Search in C:\MinGW for a MinGW installation) | no | +| `cmake.parallelJobs` | Specify the number of jobs run in parallel during the build. | | no | +| `cmake.preferredGenerators` | A list of strings of generator names to try, in order, when configuring a CMake project for the first time. | | no | +| `cmake.saveBeforeBuild` | If `true` (the default), saves open text documents when build or configure is invoked before running CMake. | `true` | no | +| `cmake.sourceDirectory` | Directory where the root `CMakeLists.txt` is stored. | `${workspaceFolder}` | yes | + +## Variable substitution + +Some options support the replacement of special values in their string value by using a `${variable}` syntax. The following built-in variables are expanded: + +| Variable | Expansion | +|---------|---------| +|`${workspaceRoot}`|**DEPRECATED**. The full path to the workspace root directory.| +|`${workspaceFolder}` | The full path to the workspace root directory. | +|`${workspaceRootFolderName}`| The name of the leaf directory in the workspace directory path.| +|`${buildType}`|The current CMake build type. For example: `Debug`, `Release`, `MinSizeRel`| +|`${buildKit}`| The current CMake kit name. For example: `GCC 7.3.0`| +|`${generator}`| The name of the CMake generator. For example: `Ninja`| +|`${projectName}`|**DEPRECATED**. Expands to the constant string `"ProjectName"` CMake does not consider there to be just one project name to use. The concept of a single project does not work in CMake. Use `${workspaceRootFolderName}`, instead.| +|`${userHome}`| The full path to the current user's home directory. | + +### Environment variables + +Environment variables are expanded using the `${env:VARNAME}` and `${env.VARNAME}` syntax, where `VARNAME` is the environment to variable to expand. If the named environment variable is undefined, the expansion is an empty string. + +### Variant substitution + +Variant options are expanded using the `${variant:VARIANTNAME}` syntax, where the name of the currently active choice of the provided `VARIANTNAME` variant option is expanded. If the variant option is undefined, the expansion is an empty string. + +### Command substitution + +CMake Tools can expand VS Code commands. for example, you can expand the path to the launch target by using the syntax `${command:cmake.launchTargetPath}` + +Be careful with long-running commands because it isn't specified when, or how many times, CMake Tools will execute a command for a given expansion. + +## Next steps + +- Learn about [user vs. workspace settings](https://code.visualstudio.com/docs/getstarted/settings) +- [Get started with CMake Tools on Linux](https://code.visualstudio.com/docs/cpp/cmake-linux) +- Review [How CMake Tools builds](build.md#how-cmake-tools-builds) +- Explore the [CMake Tools documentation](README.md) \ No newline at end of file diff --git a/docs/common_issues.rst b/docs/common_issues.rst deleted file mode 100644 index d571eb9c5..000000000 --- a/docs/common_issues.rst +++ /dev/null @@ -1,58 +0,0 @@ -.. _common-issues: - - -Common Issues and Resolutions -############################# - -There are a few frequently appearing issues in the CMake Tools issue tracker. -Make sure you've checked that your issue isn't already solved here before -submitting a question or bug report. - - -.. _missing-config: - -I see: 'CMake Tools' is unable to provide IntelliSense configuration ... -************************************************************************ - -If you are seeing this informational pop-up appear, or are seeing that -``#include`` directives are not resolving in the editor (you see a green -underline on the ``#include`` directive), this means that the relevant source -file is not attached to a CMake Target. - -.. note:: - The target of a failing ``#include`` directive **need not** be a source - file of your target. This is only concerning the file *containing* the - failing ``#include`` directive! - -If the file which receives this message is outside of your project, it is safe -to ignore it. - -If you are receiving this message for files *within* your project, it means you -probably need to add the source file to a target. - -This is most common with header files in a project. **Header files should be -included in the source list of a target**. Even though CMake will not try to -compile or process these headers in any special way, CMake Tools uses this -information in a variety of places to provide a better user experience. - - -.. _failing-include: - -I see green underlines/squiggles beneath my ``#include`` directives in my source files -************************************************************************************** - -.. note:: - Please refer to :ref:`missing-config` - - -.. _debug-button-no-launch: - -The "Debug" button and "Debug target" features are ignoring my ``launch.json`` -****************************************************************************** - -If you wish to specify additional debugging options, and/or use a different -debugging engine, refer to :ref:`debugging.launch-json`. - -.. note:: - The target debugging feature is restricted to launching target executables - with a default configuration in cpptools' debugging engine. diff --git a/docs/configure.md b/docs/configure.md new file mode 100644 index 000000000..3a88554a1 --- /dev/null +++ b/docs/configure.md @@ -0,0 +1,100 @@ +# The CMake configure process + +In CMake, _configure_ refers to detecting requirements and generating the build files that will produce the final compiled artifacts. + +The following concepts will help you understand how CMake Tools interacts with CMake's configure process: + +* The _CMake Cache_ is a list of key-value pairs that persist between runs of the configure process. It contains the following: + + * Values that are expensive to determine, such as whether a `-flag` or `#include` file is supported by the compiler. + * Values that rarely change, such as the path to a header/library. + * Values that offer control to the developer, such as `BUILD_TESTING` to determine whether or not to build test libraries/executables. +* _Cache initializer arguments_ are the arguments passed to CMake that set values in the cache before any CMake scripts are run. These allow you to control the build settings. On the CMake command line, these appear as `-D` arguments. (CMake Tools doesn't use CMake's `-C` argument). +* Unless overwritten or deleted, values in the CMake Cache persist between CMake runs. +* CMake doesn't do the build itself, it relies on build tools installed on your system. The result of a _configure_ depends on the CMake _Generator_. The _Generator_ tells CMake what kind of tool will be used to compile and generate the results of the build. There are several families of generators available: + + |Generator |Description| + |---------|---------| + |Ninja | Emits files for the [Ninja build tool](https://ninja-build.org). This is the generator CMake Tools tries first, unless configured otherwise. See [cmake.preferredGenerators](cmake-settings.md#cmake-settings). | + |Makefile | Emits a `Makefile` for the project that can be built via `make`.| + |Visual Studio | Emits visual studio solutions and project files. There are many different Visual Studio generators, so it is recommended to let CMake Tools automatically determine the appropriate generator.| + +Regardless of generator, CMake Tools always supports building from within Visual Studio Code. If you are building from within Visual Studio Code, we recommend you use the [Ninja build tool](https://ninja-build.org/). + +## The CMake Tools configure step + +CMake Tools drives CMake via the cmake-file-api which provides project info via a file on disk. + +When CMake Tools runs the configure step, it takes the following into consideration: + +1. **The active kit** + + [CMake kits](kits.md) provide information about the toolchains available on your system that can be used with CMake to build your projects. + + * For [toolchain](kits.md#specify-a-toolchain), CMake Tools sets the CMake cache variable `CMAKE_TOOLCHAIN_FILE` to the path to the file specified by the kit. + + * For [compilers](kits.md#specify-a-compiler), CMake Tools sets the `CMAKE__COMPILER` cache variable to point to the path for each `` defined in the kit. + + * For [Visual Studio](kits.md#visual-studio), CMake Tools sets environment variables necessary to use the selected Visual Studio installation, and sets `CC` and `CXX` to `cl.exe` so that CMake will detect the Visual C++ compiler as the primary compiler, even if other compilers like GCC are present on `$Path`. + + Each kit may also define additional cache variable settings required for the kit to operate. A kit may also define a `preferredGenerator`. + + See [CMake kits](kits.md) for more information about how kits work.\ + See [Kit options](kits.md#kit-options) for more information about the different types of kits. + +1. **Which generator to use** + + CMake Tools tries not to let CMake decide implicitly which generator to use. Instead, it tries to detect a preferred generator from a variety of sources, stopping when it finds a valid generator. The sources it checks are: + + 1. The config setting [cmake.generator](cmake-settings.md#cmake-settings). + 1. The config setting [cmake.preferredGenerators](cmake-settings.md#cmake-settings). Each element in this list is checked for validity, and if one matches, it is chosen. The list has a reasonable default that works for most environments. + 1. The kit's [preferredGenerator](cmake-settings.md#cmake-settings) attribute. Automatically generated Visual Studio kits set this attribute to the Visual Studio generator matching their version. + 1. If no generator is found, CMake Tools produces an error. + +1. **The configuration options** + + CMake Tools has a variety of locations where configuration options can be defined. They are searched in order and merged together. When keys have the same name, the most recent value found during the search is used. The search locations are: + + 1. The [cmake.configureSettings](cmake-settings.md#cmake-settings) option from `settings.json`. + 2. The `settings` value from the active [variant options](variants.md#variants-options). + 3. `BUILD_SHARED_LIBS` is set based on [variant options](variants.md#variants-options). + 4. `CMAKE_BUILD_TYPE` is set based on [variant options](variants.md#variants-options). + 5. `CMAKE_INSTALL_PREFIX` is set based on [cmake.installPrefix](cmake-settings.md#cmake-settings). + 6. `CMAKE_TOOLCHAIN_FILE` is set for [toolchain](kits.md#specify-a-toolchain). + 7. The [cmakeSettings](kits.md#generic-options) attribute on the active kit. + + Additionally, [cmake.configureArgs](cmake-settings.md#cmake-settings) are passed before any of the above. + +1. **The configure environment** + + CMake Tools sets environment variables for the child process it runs for CMake. Like the configuration options, values are merged from different sources, with later sources taking precedence. The sources are: + + 1. The environment variables required by the active [kit](kits.md). + 2. The value of [cmake.environment](cmake-settings.md#cmake-settings). + 3. The value of [cmake.configureEnvironment](cmake-settings.md#cmake-settings). + 4. The environment variables required by the active [variant](variants.md). + +All of the above are taken into account to perform the configure. Once finished, CMake Tools loads project information from CMake and generates diagnostics based on CMake's output. You are now ready to [build with CMake Tools](build.md). + +## The configure step outside of CMake Tools + +CMake Tools is designed to work well with an external CMake process. If you choose to run CMake from another command line, or other IDE/tool, it should work provided the host environment is set up properly. + +> **Important:** +> CMake Tools is unaware of any changes made by an external CMake process, and you will need to re-run the CMake configure within CMake Tools to have up-to-date project information. + +## Clean configure + +To get CMake Tools to do a clean configure, run **CMake: Delete cached built settings and reconfigure** from the command palette in VS Code. + +A clean configure deletes the `CMakeCache.txt` file and `CMakeFiles` directory from the build directory. This resets all of CMake's default state. + +A clean configure is required for certain build system changes, such as when the active kit changes, but may als be convenient as a reset if you have changed configuration settings outside of CMake Tools. + +CMake Tools will do a clean configure automatically if you change the active kit. + +## Next steps + +- Explore how to build at [Build with CMake Tools](build.md) +- Learn how kits work at [CMake Kits](kits.md) +- Explore the [CMake Tools documentation](README.md) \ No newline at end of file diff --git a/docs/configuring.rst b/docs/configuring.rst deleted file mode 100644 index 8f0692fa0..000000000 --- a/docs/configuring.rst +++ /dev/null @@ -1,169 +0,0 @@ -.. _configuring: - -CMake Configuring -################# - -CMake Tools wraps the CMake *configure* process separately from the *build* -process. - -.. seealso:: - - :ref:`getting-started` - -A Crash-Course on CMake's Configuration Process -*********************************************** - -For those new to CMake, *Configure* refers to the process of detecting -requirements and generating the build files that will produce the final -compiled artifacts. - -To understand how CMake Tools interacts with CMake's configure process, a few -things must be discussed: - -- The *CMake Cache* is a list of key-value pairs that persist between - executions of the configure process. It contains a few different types of - values: - - - Values that are often heavy or slow to compute, such as whether a ``-flag`` - or ``#include`` file is supported by the compiler. - - Values that rarely change, such as the path to a header/library. - - Values that offer control to the developer, such as ``BUILD_TESTING`` - to determine whether or not to build test libraries/executables. - -- *Cache initializer arguments* are the arguments passed to CMake that set - values in the cache before any CMake scripts are executed. This lets one - control build settings. On the CMake command line, these appear as ``-D`` - arguments [#cache-init]_. - -- Unless overwritten or deleted, values in the CMake Cache will persist between - executions of CMake. - -- The result of a *configure* depends on the CMake *Generator*. The *Generator* - tells CMake what kind of tool will be used to compile and generate the results - of the build, since CMake doesn't do the build itself. There are several - families of generators available: - - - *Ninja* - Emits files for the `Ninja build tool `_. - This is the generator CMake Tools will always try first, unless configured - otherwise. (See :ref:`conf-cmake.preferredGenerators`). - - *Makefile* - Emits a ``Makefile`` for the project that can be built via - ``make``. - - *Visual Studio* - Emits visual studio solutions and project files. There are - many different Visual Studio generators, so it is recommended to let CMake - Tools automatically determine the appropriate generator. - - Regardless of generator, CMake Tools will always support building from within - Visual Studio Code. Choosing a particular generator is unimportant - [#use-ninja]_. - -.. Check if this still applies in the future: - -.. [#cache-init] - CMake also supports a ``-C`` argument, but this isn't used by or - configurable from CMake Tools. - -.. [#use-ninja] - But you should use `Ninja `_. - -.. _configuring.how: - -How CMake Tools Configures -************************** - -CMake Tools speaks to CMake over *CMake Server*, an execution mode of CMake -wherein a persistent connection is held open to query information and get -project information. - -When CMake Tools runs the configure step, it takes a few things into -consideration to run the configuration: - -#. *The active kit* - :ref:`CMake Tools' Kits ` tell CMake Tools about the - toolchains available on your system that can be used with CMake to build - your projects. - - - For :ref:`kits.types.toolchain`, CMake Tools sets the CMake cache variable - ``CMAKE_TOOLCHAIN_FILE`` to the path to the file specified by the kit. - - For :ref:`kits.types.compiler`, CMake Tools sets the ``CMAKE__COMPILER`` - cache variable to point to the path for each ```` defined in the - kit. - - For :ref:`kits.types.vs`, CMake Tools starts the CMake Server process with the - environment variables necessary to use the selected Visual Studio - installation. It also sets ``CC`` and ``CXX`` to ``cl.exe`` to force - CMake to detect the Visual C++ compiler as the primary compiler, even if - other compilers like GCC are present on the ``$PATH``. - - Each kit may also define additional cache variable settings requires for the - kit to operate. A kit may also define a ``preferredGenerator``. - - .. seealso:: - - :ref:`kits` - Describes how Kits work - - :ref:`kits.types` - The different types of kits - -#. *The generator to use* - CMake Tools tries not to let CMake decide implicitly - on which generator to use. Instead it tries to detect a "preferred" generator - from a variety of sources, stopping when it finds a valid generator: - - #. The config setting :ref:`conf-cmake.generator`. - #. The config setting :ref:`conf-cmake.preferredGenerators` - Each element - in this list is checked for validity, and if one matches, it is chosen. - The list has a reasonable default that will work for most environments. - #. The kit's :ref:`preferredGenerator ` - attribute. Automatically generated Visual Studio kits will set this - attribute to the Visual Studio generator matching their version. - #. If no generator is found, CMake Tools produces an error. - -#. *The configuration options* - CMake Tools has a variety of locations where - configuration options can be defined. They are searched in order and merged - together, with later searches taking precedence in case of overlapping keys: - - #. The :ref:`conf-cmake.configureSettings` option from ``settings.json``. - #. The ``settings`` value from the active :ref:`variants.opts`. - #. ``BUILD_SHARED_LIBS`` is set based on :ref:`variants.opts`. - #. ``CMAKE_BUILD_TYPE`` is set based on :ref:`variants.opts`. - #. ``CMAKE_INSTALL_PREFIX`` is set based on :ref:`conf-cmake.installPrefix`. - #. ``CMAKE_TOOLCHAIN_FILE`` is set for :ref:`kits.types.toolchain`. - #. The :ref:`cmakeSettings ` attribute on the - active kit. - - Additionally, :ref:`conf-cmake.configureArgs` are passed *before* any of - the above. - -#. *The configure environment* - CMake Tools sets environment variables for the - child process it runs for CMake. Like the configuration options, values are - merged from different sources, with later sources taking precedence: - - #. The environment variables required by the active :ref:`kit `. - #. The value of :ref:`conf-cmake.environment`. - #. The value of :ref:`conf-cmake.configureEnvironment`. - #. The environment variables required by the active :ref:`variant `. - -All of the above are taken into account to perform the configure. Once finished, -CMake Tools will load project information from CMake and generate diagnostics -based on CMake's output. :ref:`You are now ready to build! ` - -Configuring Outside of CMake Tools -********************************** - -CMake Tools is built to play nicely with an external CMake process. If you -choose to run CMake from another command line or other IDE/tool, all should -work successfully (provided the host environment is set up properly). - -Nevertheless, be aware: CMake Tools will be unaware of any changes made by an -external CMake process, and you will need to re-run the CMake configure within -CMake Tools to have up-to-date project information. - -A "Clean" Configure -******************* - -CMake Tools also has the concept of a "clean configure," executed by running -*CMake: Delete cached built settings and reconfigure*. The process consists -simply of deleting the ``CMakeCache.txt`` file and ``CMakeFiles`` directory -from the build directory. This is enough to reset all of CMake's default state. -Should additional cleaning be necessary, it must be done by hand. - -This process is required for certain build system changes, but may be convenient -as a "reset" if you have tweaked any configuration settings outside of CMake -Tools. - -CMake Tools will also do this *automatically* if you change the active -:ref:`kit `. CMake can't yet properly handle changing the toolchain -without deleting the configuration data. diff --git a/docs/contribute.md b/docs/contribute.md new file mode 100644 index 000000000..c0c287ea8 --- /dev/null +++ b/docs/contribute.md @@ -0,0 +1,49 @@ +# How to Contribute to CMake Tools + +This article is for developers who want to contribute to the CMake Tools open source project. + +## Developer Reference + +Documentation for the code is kept within the code, and is extracted via `TypeDoc`. + +## Build the CMake Tools extension + +As with most VS Code extensions, you'll need `Node.JS ` installed. + +The process is: + +1. Install dependencies + +```bash +$ npm install +``` + +1. Compile the code: + +```bash +$ npm install +``` + +## Coding guidelines + +### Formatting + +Code is formatted using `clang-format`. We recommend you install the +[Clang-Format extension](https://marketplace.visualstudio.com/items?itemName=xaver.clang-format). + +### Linting + +We use tslint for linting our sources. +You can run `tslint` across the sources from a terminal or command prompt by running `npm run lint`. +You can also run `npm: lint` from the VS Code command pallette ry running the `task lint` command. +Warnings from `tslint` show up in the **Errors and Warnings** pane and you can navigate to them from inside VS Code. +To lint the source as you make changes, install the [tslint extension](https://marketplace.visualstudio.com/items/eg2.tslint). + +### Style + +* Use inline field initializers whenever possible. +* Declare properties in constructor parameters lists, when possible. +* Use `lowerCamelCase` for public members, methods, and function/method parameters. +* Use `snake_case` for variables. +* Use `kebab-case` (hyphen-separated-names) for files and directories. +* Prefix private members/methods with an underscore and write them `_withCamelCase`. diff --git a/docs/debug-launch.md b/docs/debug-launch.md new file mode 100644 index 000000000..8d53c75b1 --- /dev/null +++ b/docs/debug-launch.md @@ -0,0 +1,97 @@ +# CMake: Debug and launch + +CMake Tools makes it easier to set up debugging. Because C and C++ projects may define multiple (sometimes dozens or even hundreds) of executables, creating a `launch.json` may be difficult. + +If you define any executable targets via CMake, CMake Tools will be aware of them and allow you to start debugging them. + +> **Note:** +> Debugging is supported when CMake is using either _CMake Server_ or the cmake-file-api. These modes are enabled automatically for CMake versions 3.7.2 and above. Debugging is not available on older versions. + +If you are running an older version of CMake and want to use target debugging, update your CMake version to version 3.7.2 or higher. + +By default, launching or debugging an executable target causes it to be built first. This can be disabled with the [cmake.buildBeforeRun](cmake-settings.md#cmake-settings) setting. + +## Select a launch target + +The first time you run target debugging, CMake Tools asks for you to specify a target, which will be persisted between sessions. + +The active launch target is shown in the status bar to the right of the *Debug* button: + +![Image of launch target to the right of the debug button](images/launch_target.png) + +Selecting the active launch target button will show the launch target selector so that you can change the active launch target. + +## Quick debugging + +Quick-debugging lets you start a debugger on a target without creating a `launch.json`. + +> **Note:** +> Only the debugger from Microsoft's `vscode-ms-vscode.cpptools` extension supports quick-debugging. See [Debug using a launch.json file](#debug-using-a-launchjson-file), below, for information about `launch.json` and using other debuggers. + +Start quick debugging by running the *CMake: Debug Target* command from the VS Code command pallette, or by pressing the keyboard shortcut (the default is **Ctrl+F5**). + +> **Note:** +> Quick-debugging does not let you specify program arguments or other debugging options. See the next section for more options. + +## Debug using a launch.json file + +You can specify the working directory or command line arguments for debugging, or use another debugger than the one included with Microsoft's `vscode-ms-vscode.cpptools`, by creating a `launch.json` file. + +You'll need to know the path to the executable binary, which may be difficult to know in advance. CMake Tools can help by using command substitution in the `launch.json` file. This is already used by things like process selection when attaching to a running process. It works by specifying a command-based substitution in the appropriate field of `launch.json`. + +Here is a minimal example of a `launch.json` file that uses `cmake.launchTargetPath` and `cmake.launchTargetDirectory` to start a debugger on the active launch target: + +```json +{ + "version": "0.2.0", + "configurations": [ + { + "name": "(gdb) Launch", + "type": "cppdbg", + "request": "launch", + // Resolved by CMake Tools: + "program": "${command:cmake.launchTargetPath}", + "args": [], + "stopAtEntry": false, + "cwd": "${workspaceFolder}", + "environment": [ + { + // add the directory where our target was built to the PATHs + // it gets resolved by CMake Tools: + "name": "PATH", + "value": "$PATH:${command:cmake.launchTargetDirectory}" + }, + { + "name": "OTHER_VALUE", + "value": "Something something" + } + ], + "externalConsole": true, + "MIMode": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} +``` + +The value of the `program` attribute is expanded by CMake Tools to be the absolute path of the program to run. + +> **Note:** +> You must successfully [configure](configure.md) before `cmake.launchTargetPath` and `cmake.launchTargetDirectory` will resolve correctly. + +## Run without debugging + +If you want to run a target without debugging it, from VS Code's command pallette, run the *CMake: Execute the current target without a debugger* command, or by pressing the keyboard shortcut (the default `Shift+F5`). + +The output of the target will be shown in an integrated terminal. + +## Next steps + +- See how to [troubleshoot CMake Tools](troubleshoot.md) +- Explore the [CMake Tools documentation](README.md) \ No newline at end of file diff --git a/docs/debugging.rst b/docs/debugging.rst deleted file mode 100644 index 4a6af01cf..000000000 --- a/docs/debugging.rst +++ /dev/null @@ -1,141 +0,0 @@ -.. _debugging: - -Target Debugging and Launching -############################## - -CMake Tools removes some of the friction required in setting up debugging. -Because C and C++ projects may define multiple (sometimes dozens or even -hundreds) of executables, creating a ``launch.json`` may be difficult, tedious, -and error-prone. - -If you define any executable targets via CMake, CMake Tools will be aware of -them and allow you to start a debugger on them. - -.. note:: - Debugging is only supported when using *CMake Server* mode. This mode will - be enabled automatically on CMake versions at least as new as 3.7.2, but is - completely unavailable on older CMake versions. - - Target debugging used to be supported on prior versions, but was difficult - and error-prone, creating more problems than it solved. If you are running - an older CMake version and wish to use target debugging, you'll have to - update your CMake version. - -By default, the launch or debug of an executable target will cause it to be -built. - -.. note:: - The build on launch can be disabled with a setting, see - :ref:`conf-cmake.buildBeforeRun`. - -Selecting a Launch Target -************************* - -The "launch target" or "debug target" is initially unset. The first time you try -to run target debugging, CMake Tools will ask you to specify a target, which -will be persisted between sessions. - -The active launch target is shown in the status bar to the right of the *Debug* -button: - -.. image:: res/launch_target.png - :align: center - -Pressing this button will show the launch target selector and lets one change -the active launch target. - -Quick Debugging -*************** - -Quick-debugging lets you start a debugger on a target without ever creating -a ``launch.json``. - -.. note:: - At the moment, only the debugger from Microsoft's ``vscode-cpptools`` - extension is supported with quick-debugging. See :ref:`debugging.launch-json` - below for using ``launch.json`` and other debuggers. - -Quick debugging can be started using the *CMake: Debug Target* command from -the command pallette, or by pressing the associated hotkey (the default is -:kbd:`Ctrl+F5`). - -.. note:: - Quick-debugging does not let you specify program arguments or other - debugging options. See :ref:`debugging.launch-json` for more options. - -.. _debugging.launch-json: - -Debugging with CMake Tools and ``launch.json`` -********************************************** - -Sometimes, more flexibility is needed for debugging, including setting things -like the working directory or command line arguments. In addition, one may want -to use a debugger other than the one included with Microsoft's -``vscode-cpptools``. - -All these things can be done using ``launch.json``. The primary obstacle to -using ``launch.json`` is that the path to the executable binary might be -difficult to know in advance. CMake Tools can help by using -*Command substitution* in ``launch.json``. This is already used by things like -the process selection when attaching to a running process. It works by simply -specifying a a command-based substitution in the appropriate field of -``launch.json``. - -Here is a minimal example of a ``launch.json`` that uses the -``cmake.launchTargetPath`` and ``cmake.launchTargetDirectory`` to start a debugger -on the active selected launch target: - -.. code:: javascript - - { - "version": "0.2.0", - "configurations": [ - { - "name": "(gdb) Launch", - "type": "cppdbg", - "request": "launch", - // Resolved by CMake Tools: - "program": "${command:cmake.launchTargetPath}", - "args": [], - "stopAtEntry": false, - "cwd": "${workspaceFolder}", - "environment": [ - { - // add the directory where our target was built to the PATHs - // it gets resolved by CMake Tools: - "name": "PATH", - "value": "$PATH:${command:cmake.launchTargetDirectory}" - }, - { - "name": "OTHER_VALUE", - "value": "Something something" - } - ], - "externalConsole": true, - "MIMode": "gdb", - "setupCommands": [ - { - "description": "Enable pretty-printing for gdb", - "text": "-enable-pretty-printing", - "ignoreFailures": true - } - ] - } - ] - } - -The value of the ``program`` attribute is resolved by CMake Tools to the -absolute path to the program to run. - -.. note:: - A successful :ref:`configure ` must be executed before - ``cmake.launchTargetPath`` and ``cmake.launchTargetDirectory`` will resolve correctly. - -Running Targets Without a Debugger -********************************** - -Sometimes one will want to just run a target and see its output. This can -be done with the *CMake: Execute the current target without a debugger* command, -or the associated keybinding (the default is :kbd:`Shift+F5`). - -The output of the target will be shown in an integrated terminal. diff --git a/docs/development.rst b/docs/development.rst deleted file mode 100644 index 215fc974b..000000000 --- a/docs/development.rst +++ /dev/null @@ -1,54 +0,0 @@ -How to Contribute -================= - -Developer Reference -------------------- - -Documentation for the code itself is kept within the code, and is extracted via -TypeDoc. See the developer reference documentation `here `_. - -Building extension ------------------- -As with most VS Code extensions you need you need `Node.JS `_ installed. - -The process if fairly straightforward: - -1. Install dependencies - -.. code:: bash - - $ npm install - -2. Compile the code: - -.. code:: bash - - $ npm run compile - -Of course build command (as few others) is available as Visual Studio Code task. - -Coding guidelines ------------------ - -Formatting -:::::::::: -Code is formatted using ``clang-format``. It is recommended to install -`Clang-Format extension `_. - -Linting -::::::: -We use tslint for linting our sources. -You can run tslint across the sources by calling ``npm run lint`` from a terminal or command prompt. -You can also run ``npm: lint`` as a Code task by pressing ``CMD+P`` (``CTRL+P`` on Windows) and entering ``task lint``. -Warnings from tslint show up in the Errors and Warnings quick box and you can navigate to them from inside Code. -To lint the source as you make changes you can install the `tslint extension `_. - -Style -::::: - -* Use inline field initializers whenever possible. -* Declare properties in constructor parameters lists, when possible. -* Use ``lowerCamelCase`` for public members, methods, and function/method parameters. -* Use ``snake_case`` for variables. -* Use ``kebab-case`` for files and directories. (hyphen-separated-names) -* Prefix private members/methods with an underscore and write them ``_withCamelCase`` diff --git a/docs/faq.md b/docs/faq.md new file mode 100644 index 000000000..0bd89d9fd --- /dev/null +++ b/docs/faq.md @@ -0,0 +1,29 @@ +# Frequently asked questions — CMake Tools 1.4.0 documentation + +## How can I get help? + +Please visit [the end-user support chat](https://gitter.im/vscode-cmake-tools/support). This is a community chat. Microsoft does not actively monitor it. + +Also look in the [Troubleshooting guide](troubleshoot.md). + +Check the [CMake Tools issue tracker](https://github.com/vector-of-bool/vscode-cmake-tools/issues) and [What's New](https://github.com/microsoft/vscode-cmake-tools/blob/develop/CHANGELOG.md) to see if your issue is already known/solved before submitting a question or bug report. Feel free to [Open a Github issue](https://github.com/microsoft/vscode-cmake-tools/issues) if your problem hasn't been reported. + +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. + +## How do I learn about CMake? + +CMake Tools is not the same as CMake. There are many great resources around to learn how to use CMake. See Jason Turner's [C++ Weekly - Intro to CMake](https://www.youtube.com/watch?v=HPMvU64RUTY) for a good video introduction. + +[CMake's documentation](https://marketplace.visualstudio.com/items?itemName=twxs.cmake) is also available. + +## How does CMake Tools work with C and C++ IntelliSense? + +See [Pass command-line arguments to the debugger](how-to.md#pass-command-line-arguments-to-the-debugger) + +## How do I perform common tasks + +See the [How To](how-to.md). diff --git a/docs/faq.rst b/docs/faq.rst deleted file mode 100644 index d390c8604..000000000 --- a/docs/faq.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _faq: - -Frequently Asked Questions -########################## - -How Can I Get Help? -******************* - -CMake Tools is a volunteer-run project. You can ask around for help in the -`end-user support Gitter chat `_. -Also look in the :ref:`troubleshooting guide `. You can always -open a `GitHub issue `_ -if all else fails. - -What About CMake Language Support? -********************************** - -CMake Tools was create separately from the `CMake extension -`_, which -provides language coloring and autocompletion support. - -I'm New to CMake. Help? -*********************** - -CMake Tools is not the same as CMake. There are many great resources around to -learn how to use CMake. A good video introduction can be found in Jason Turner's -`C++ Weekly - Intro to CMake `_. - -`CMake's documentation `_ is also -available. - -How Does it Work with C and C++ IntelliSense? -********************************************* - -Orthogonally. Check the :ref:`How-do-I about IntelliSense `. - -How Do I ````? -******************* - -Refer to the :ref:`how-do-i` page. - -Will CMake Tools Ever Support ````? -**************************************** - -Only if you voice support for it as a `GitHub issue -`_. Open a feature -request or search for and provide feedback for an existing one! diff --git a/docs/getting_started.rst b/docs/getting_started.rst deleted file mode 100644 index 4bfee95dd..000000000 --- a/docs/getting_started.rst +++ /dev/null @@ -1,175 +0,0 @@ -.. _getting-started: - -Getting Started -############### - -Assuming you already have a CMake project to configure, skip to the -:ref:`gs.configuring` section. - -.. _gs.quickstart: - -CMake Tools' *Quick Start* -************************** - -CMake Tools provides a *CMake: Quick Start* command to quickly generate a very -bare-bones CMake project that can be configured and built with minimal friction. - -Start by selecting *CMake: Quick Start* from the command palette: - -.. image:: res/quickstart.png - :align: center - -CMake Tools will then prompt you for the following information: - -#. *The project name* - Will be written to the generated ``CMakeLists.txt`` and - a few initial source files. -#. *The project type* - Decides what initial source files to write. Not hugely - important as the project can be tweaked arbitrarily after generation. - Currently offers two choices: - - - *Library* - Writes an ``add_library()`` command and a basic source and - header file. - - *Executable* - Writes an ``add_executable()`` command and a basic source - file with a *Hello, world* style ``main()`` function. - -Once this information is collected, CMake will try an initial configure and -build of the project straight away. - -.. _gs.configuring: - -Configuring Your Project -************************ - -Configuring a project is simple, but has two steps before configuration can take -place. - -Pre-Configure Steps -=================== - -Selecting a Kit ---------------- - -Before we can configure, you must select a *Kit*. -:ref:`(Read more about kits) `. - -What are kits? - Kits represent a *toolchain*: A set of compilers, linkers, or other tools - that will be used to build a project. If you have no Kit selected, CMake - Tools will start by asking you to select a Kit. - -When first opening a project, a status bar item will read **No Kit Selected**: - -.. image:: res/no_kits.png - :align: center - -To select a kit, click this statusbar button, or run the *Select a Kit* command -from the command palette. A quick-pick will appear: - -.. image:: res/kit_selector.png - :align: center - -Upon choosing a kit, the statusbar button will display the name of the active -kit: - -.. image:: res/kit_selected.png - :align: center - -The chosen kit will be remembered between sessions. Should the availability of -the kit change, the statusbar item may revert and you will be required to select -a kit again. - -.. note:: - If you try to configure your project without an active Kit selected, you - will be prompted to choose one before configuring can proceed. - -CMake Tools will use the compilers/toolchain from the kit when building your -project. - -Find out more on the :ref:`kits` page. - -Selecting a Variant -------------------- - -Similar to selecting a kit, we must select a *Variant*. -:ref:`(Read more about variants) `. - -Before selecting a variant, the variant slot on the statusbar will read *Unknown*: - -.. image:: res/no_variant.png - :align: center - -To select a variant, click this statusbar button, or run the *Set build type* -command from the command palette. A quick-pick will appear: - -.. image:: res/variant_selector.png - :align: center - -The active build variant will be displayed on the same statusbar button, along -with the project name and extension status. - -.. note:: - Just like with kits, CMake Tools will ask you which variant to build if you - haven't already made a selection. - -Variants can be customized to a wide variety of purposes. Find out more on the -:ref:`variants` page. - -Running Configuration -===================== - -Configuration can be run by clicking the project button in the statusbar and -changing the build type, by running the *CMake: Configure* command from the -command palette, or by running a build when configuration has not yet taken -place. - -When configuration runs, the *CMake/Build* output panel will reveal and show -the live output from CMake as configuration runs: - -.. image:: res/configure_output.png - :align: center - -At this point, CMake Tools has loaded information about your project and you are -free to roam about the cabin. - -.. seealso:: - - :ref:`configuring` - -.. _gs.building: - -Building Your Project -********************* - -More important than just configuring, you probably want to *build* your project -as well. - -Building is simple: Run the *CMake: Build* command from the command palette: - -.. image:: res/build_command.png - :align: center - -.. note:: The default keybinding for this command is ``F7``. - -You can also press the *Build* button in the statusbar: - -.. image:: res/build_button.png - :align: center - -While the the build is running, the *Build* button will be replaced with a -build progress bar: - -.. image:: res/build_progress.png - :align: center - -The build can be stopped by clicking the *Stop* button. - -.. seealso:: - - :ref:`building` - -Accessing Build Results -*********************** - -By default, CMake Tools writes build output to the ``build/`` subdirectory of -your source tree, so build results are visible from the file explorer within -Visual Studio Code. This can be changed by changing the -:ref:`cmake.buildDirectory ` setting. - diff --git a/docs/how-to.md b/docs/how-to.md new file mode 100644 index 000000000..2346d9ec5 --- /dev/null +++ b/docs/how-to.md @@ -0,0 +1,37 @@ +# How To + +This page links to documentation for common tasks. + +## Create a new project + +* From the command palette in VS Code, run the **CMake: Quick Start** command in a directory that doesn't have a `CMakeLists.txt` file. +* See the [CMake Tools on Linux tutorial](https://code.visualstudio.com/docs/cpp/cmake-linux#_create-a-cmake-hello-world-project) + +## Configure a project + +* From the command palette in VS Code, run the **CMake: Configure** command. +* See the *Configure Hello World* section of the [CMake Tools on Linux tutorial](https://code.visualstudio.com/docs/cpp/cmake-linux#_configure-hello-world), or the more in-depth [CMake Tools configure step](configure.md#the-cmake-tools-configure-step) documentation. + +## Build a project + +* From the command palette in VS Code, run the **CMake: Build** command, press the keyboard shortcut **F7**, or select the **Build** button in the status bar. +* See the *Build hello world* section of the [CMake Tools on Linux tutorial](https://code.visualstudio.com/docs/cpp/cmake-linux#_build-hello-world), or the more in-depth [Build with CMake Tools](build.md) documentation. + +## Debug a project + +* From the command palette in VS Code, run the **CMake: Debug Target** command, press the keyboard shortcut **Ctrl+F5**, or press the **Debug** button in the status bar. +* See the [CMake:Target debugging and launching](debug-launch.md) page for more information. + +## Pass command-line arguments to the debugger + +See [Debug using a launch.json file](debug-launch.md#debug-using-a-launchjson-file). + +## Set up include paths for C++ IntelliSense + +CMake Tools currently supports Microsoft's ms-vscode.cpptools extension. If the ms-vscode.cpptools extension is installed and enabled, then configuring your project will provide this integration automatically. + +ms-vscode.cpptools will show a prompt confirming that you wish to use CMake Tools to provide the configuration information for your project. Accept this prompt to activate the integration. Subsequently, CMake Tools will provide and automatically update cpptools configuration information for each source file in your project. + +## Next steps + +- Explore the [CMake Tools documentation](README.md) \ No newline at end of file diff --git a/docs/how_do_i.rst b/docs/how_do_i.rst deleted file mode 100644 index 95cdc2ea7..000000000 --- a/docs/how_do_i.rst +++ /dev/null @@ -1,63 +0,0 @@ -.. _how-do-i: - -How Do I... -########### - -This page talks about and links to documentation concerning common tasks and -processes. - -Create a New Project? -********************* - -- Run the *CMake: Quick Start* command in a directory with no ``CMakeLists.txt``. - -Check out :ref:`gs.quickstart`. - -Configure a Project? -******************** - -- Run the *CMake: Configure* command. - -Check out the :ref:`Getting Started - Configuring ` section, -or the more in-depth :ref:`configuring` documentation. - -Build a Project? -**************** - -- Run the *CMake: Build* command, press :kbd:`F7`, or press the *Build* button - in the status bar. - -See the :ref:`Getting Started - Building ` section, or the -in-depth :ref:`building` documentation. - -Debug a Project? -**************** - -- Run the *CMake: Debug Target* command, press :kbd:`Ctrl+F5`, or press the - *Debug* button in the status bar. - -There's a lot to this one. Check out the :ref:`debugging` page for more -information. - -Pass Command Line Argument to the Debugger? -******************************************* - -See the :ref:`debugging.launch-json` documentation. - -.. _hdi.intellisense: - -Set Up Include Paths for C++ IntelliSense? -****************************************** - -CMake Tools currently supports Microsoft's cpptools extension. -If the cpptools extension is installed and enabled, then configuring your -project will attempt this integration automatically. - -The first time this integration is attempted, cpptools will show a prompt -confirming that you wish to use CMake Tools to provide the configuration -information for your project. Accepting this prompt is all you need to do to -activate the integration. From then on, CMake Tools will provide and -automatically update cpptools' configuration information for each source file -in your project. - -Happy IntelliSense-ing! diff --git a/docs/images/cmake_kits_json.png b/docs/images/cmake_kits_json.png new file mode 100644 index 0000000000000000000000000000000000000000..15e79ee1ddd46932e5803b710fee2ef1a160fe50 GIT binary patch literal 68754 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 literal 0 HcmV?d00001 diff --git a/docs/res/custom_variant_selector.png b/docs/images/custom_variant_selector.png similarity index 100% rename from docs/res/custom_variant_selector.png rename to docs/images/custom_variant_selector.png diff --git a/docs/images/default_target.png b/docs/images/default_target.png new file mode 100644 index 0000000000000000000000000000000000000000..6f58d55d434caafd303b8655a32536ca2bcaccc3 GIT binary patch literal 5729 zcmcK8Ra8`8xBzfkLQ+b)yAwUdvt$ogp?>lS9+AqHteLVm%AsrzG1_rUFhU!ZU3{3Zjx*liOC-9n$9-rMcxsq?V_=Z{`d2Vh z`AO&>I>~(0%zO;rIr)I>yMVL1jMz8yR2qE@@`4 zMkYm^s)y(+Z>iPQM&l+MtNy~p#W6CWq^fnW6(EI)o6(q^KwwOUqeS*N zH0{ptp(298HXFu*kEg6^Nruy<80}0H#zKov?yf|JgUwnXh#zLhqFRsp5FZiU$bugh zN;XRUkVN+Xn#9Y>ny)2Hr2M1wc?reF?Vvr%MNRFR(1^sC`@Ci7ZQ$7Q$Bts9HLo{Z&En(3wYkq1U!UxlW$vFm7f$T?n58mbpU@ z2U0K$MTFR9m4Eb5yQtg+Uh*(mf9CUEdtqqUOc1J#MgBqpf04Tt-4El2mQni@xlBx1=l=#WnycKS)K zGhr;hn1{i#%xh)XEU1y?trl(Tk6*q-y^0Tu5;rrf>bFTJwlr%%i3l?sdGcxiW>=WQWX!~y72w^ zHB#wQ_;UFu=M6({TrT;jy1`Un)>k?>Lvw0Pk(==Zz#F!Q*$P&RhQJOmu#W3dFDZ6< zpcvb24X6{fIl<2KD9jElcNh;P*bOs@zS5mYSyXjOokYZe;lh>!Ha(}cr)-Z(8N9 zXRCAR>;yG@XL+IWa0Dgn7qlXF$?Zy2nS_odTl6$Z-3y`6gK3Fq1pyq3*W2`Ae_EYi zjGpBKWAT#!ky&A(F`?kI0p|<<6 zw3xy5ey5>$Ikd=gt^Mv7-sR56U5ck$;R)5h>z)KKwmIAwOWh`W?A+3GflTIn%@kVv zI}Zi1g>0)*<;a!>XezmUI*;p68Lg>F( zZd-bYq+ztR|B;9mJI6BKht6c_q1SiVosagY8FDXKIz)R@IL(`b4+Y=6+9!7su2=n8Yjz2SSY z8BCq@>s-a*-0$Z_PN}R3R_8g7V5^L-xf!@7ML9ew>h0HE#elE5t~B%QS~WiKfVDoXSF;Di2@G*%3c37goH%7X3A*w$r0SG-vJCk>yk9C*>N>T_SEv_nw^ z?`2IWoo@Yz#NE2kl-^FndNeg{+bM>BYjOo-`Ut+0aCD{{lddD=*1MzQlbsT)nOnT3 zSaar>UFty6K4Tk_g#4Kugjh(5e_j5eY$Am$k;$Bcb5|jFnPV4y1P0m_T5A6 zvkrj)vUL@;kluJKLcK87s7@PLL-}p4oE5y5m~CONb?>>MoRMHpEvrLC&$Jv~;59ws z1ZX(zIay*-yNH_;c{?g!Pu#HFZP23sp;HS>>}1Y?r}AwPRRN>;7Vaygv44Jy{m-@& zt-x^4c6Cy#DK0W7bWnM(3WcB9Ohwa!y9Jotxg8{#-ExDA|#(I#AXF~>?Y^vYi!rRPRB=p;$}dUsr&T6f!sQ z>+&S?cRgg_2Ss}%GLKv8Dur@VWRLnHo!^vc2U&gGvd1yTbEWB8y+Gu_zDL=6>S=I3 z`tcO2OZ#A$0)+bBB`GZS*{h}3Lb3qr$LiE7DQQw%N+Lf-ECocX2JnkYc?b%2Pb5q* z7>!<}0o(;|zfv)y`n!{GKN?>*LGUoSiXwkfy!Tr#H#D4>j}+za<;+iqFfu!o_Jb=_ zN(8MBW?|Ch&T;HhVozkY063yHNW0KNR*Aw`xgISZtKhb!M^ zZYDl3?n&B&QO-`2HQ9h`_h^ub6fHCof{Rc*Tqftmxi8_!J8z>~rnr8iD|(BRyq54n z8tNF`jGn6;@3mZs#?XwtAgIKc$mKmrewdY1w?aEmSk>PK5v@+{uPRK&{RFLi`+i!8 z{xiEAJi=)wGPCyg3>f%ao@pV0EgN6V`Pq4J5UnM;>(s*aUKCHg+%x@JD^O!lsL;<;U-QY~7IQ zGap1Xs|C|<`@mF`d2_mt&al45`=|f2FcQW1VF)D$)%NI!` zfx%G1tX(4Dcdw7HLmAadoO`D;1|$#PnDt}SIZG}F^^PuT8wCdl0djr&I45W>{Y!&0 z^7n0}+e{@zH&Tr&s!=Sg*0oYdAEPxw@v^u62j)R$?mzHE)Hd{_6*HFys$~v~OmEk) z#YPiI#n;gJM|_T})3w801B;>%(S>_`)6^m)dGE8aKK%{ml2}mBEOsP5m(m)+k6r0T z_zqsnTduTUykFGi-UtJ%_h!Y zIa$4e!;J_MXBBtFlRh*=V`9Y*F69eyUkO;Lu@|W`l|3;syf7(KBmM9VtNrZ2?)QO6ll6!f$u9Uy$rqnB2>f8w8HwIP zJe&m{9y8<5Odq2r2>F95GY)DH^Y#P-mq1%{2_(vnG$u$w8j9_w*$QR#%yik~eq^jw z$SD?4Oj*FK4?xzs&@Q;yRKsO&5#&?^%@!yF4SRY39)y1lGs;>K>Kwc=MGJy26MD!% zNZwCV&%fN{aJ<_;IjA|Dc)0H;4U)DFf=&BUs1)P%S@I*fm9-nM`DxLva^aj`R&75O zeO>7@eo)exG2V`yZwp?y0E?M%v=&A+X~+peKNkp?4r*02jjLKrY*oNe0Sl2i5m z<7&rhQYVYwQoxRiUkAia@R^zPy&ac5J*=Sm=%=zPllq(Y0T1^(idv}TQ?>?UnhX>> zXZ;!yai;CnAz-695iMNY5uP^lL3%Sb==5?fak|yXZ|S~8Gs|jK_ALH)SJS&5d#dlp zZSNm*wPJ->vz**bF>KU>$3jiNcrs;jQ_~SD{F;!{%935z*!)wt&>w>~i2t-e>y53Z zy}wLJES$SX>15FSE@))Rfs-%w$1S+r;v8`~$+F1#9qiT?Bbi5ok94c*;iCZh zRkeQUr-H=kmF#NB7+5&ibU)p{7ATm{={xrb$5&*=fw{?{#Qp zmNnICN;`;S49_D9<$=Bzf@+-tlEATN@&_z|)*X3W=q}Xsk#v?{H@XjRa{<9^Jhzs{ zez8U{@TTUoK_(h5R>y~c^S<`mlXV&L-TlnnW|3=vBkVD85r>0m(VyEe=-H=#gIcMwUfFgie3FRzX#mV3<~;KBfIw1K)Zr-{ z@tBEb*qa9?!^!j#&=|(KA7Vio(Bb$53x5pegMPy&4zQ9^yWeGgTZN@WvW(uJ4n*T- za#F;&N5H8eDgjsH#OuE!p8(JFMF(!Y@TEboqVkRj6C_*?uRLCI50wmqWTe)ws=Vc& zykD=Xtf-j4;UH}i$b%I04?#N>wgXz9M|AIIdX;n$$1z6?_!m49U&yMON;w`=$U!@S zaS4HXsGLQrgLoaICk_qvN-LZmL|c-g=(xv|WTwEqvYkjnz#jhJ+Y>o&CM%$KRiO>b z#oXC277+F2;8AIOufd!dVD%?I>@k$YSGe6*!>8rjn%?vlPU2JkKJId*IApL@*Zz(v z#Yib$PZOkRRnw9B)+?G%bjD|x^tx1PGG+GR`bm3Ki~aM3pI8#wD#3|me%EH_QK*x4CZc z;$rH|)lUIN9-&o6P^v1)usLuYtG>?47%s9Je(UO`B{))uy>Bx6f~cixvYk40g^J!= z{w!T3=%g2CZ;-c-Um@oj6lOKr$Z69oL=uQZjh#<~oy?4@W7$X5qk5p2u)Dm}h0bK& z5qHo1FSzenvctJUK5UE{y49!3A_)A@kTf(aJ$R&te4yaAG)}m+#}v>`p1$Qa19aT!Y%( zrgG%N;u&=R@PY@%FG=SZx-k)IIl39;!Zlx-DwQkeMl~~gg$Sp`WTFVpoHsA718>hH zQWkqL%UQV@fAh3o#!OjgbLcS*Ouolaa+an-~Oh=y)QHEcedk<}19T1yz=%6T^35e~cdZLU(XhCWQUBMMj6^$N6x@ z37ZEd=v)egBYo~{4i5UW^M1`{*XtH$w_<&6-!uOBnwxS!H9njA7lEB21^~MQwD(sY2hn-!ztw}Hst=%Un77?MJ>;p2l2(wRMS(fQML>FA6=dEM*si- literal 0 HcmV?d00001 diff --git a/docs/res/launch_target.png b/docs/images/launch_target.png similarity index 100% rename from docs/res/launch_target.png rename to docs/images/launch_target.png diff --git a/docs/res/many_variants.png b/docs/images/many_variants_example.png similarity index 100% rename from docs/res/many_variants.png rename to docs/images/many_variants_example.png diff --git a/docs/res/target_selector.png b/docs/images/target_selector.png similarity index 100% rename from docs/res/target_selector.png rename to docs/images/target_selector.png diff --git a/docs/images/variants_yaml.png b/docs/images/variants_yaml.png new file mode 100644 index 0000000000000000000000000000000000000000..ad0e5719d619d9d30e453e2823e7b9a0725ad6a0 GIT binary patch literal 58928 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 XrbOD2R(;mE0=#ai>8V!0EJObX1`TIS literal 0 HcmV?d00001 diff --git a/docs/index.rst b/docs/index.rst deleted file mode 100644 index 9417f1176..000000000 --- a/docs/index.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. CMake Tools documentation master file, created by - sphinx-quickstart on Sat Sep 23 14:46:28 2017. - -CMake Tools for Visual Studio Code -================================== - -CMake Tools is an extension designed to make working with CMake-based projects -as easy as possible. If you are new, check the :ref:`getting-started` docs. Also -check the :ref:`how-do-i` docs and the :ref:`faq`. - -Contents: - -.. toctree:: - :maxdepth: 2 - - getting_started - - kits - variants - - configuring - building - debugging - - settings - common_issues - troubleshooting - - faq - how_do_i - - development - - changelog - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` - diff --git a/docs/kits.md b/docs/kits.md new file mode 100644 index 000000000..7f19cbcdd --- /dev/null +++ b/docs/kits.md @@ -0,0 +1,139 @@ +# CMake kits + +A _kit_ defines project-agnostic and configuration-agnostic info about how to build code. A kit can include: + +- A set of compilers: these are locked at specific versions so that you can switch your compiler version quickly and easily. +- A Visual Studio installation: building for Visual Studio involves more than just finding the necessary compiler executable. Visual C++ requires certain environment variables to be set to tell it how to find and link to the Visual C++ toolchain headers and libraries. +- A toolchain file: The low-level way to instruct CMake how to compile and link for a target. CMake Tools handles toolchain files using kits. + +Kits are mostly CMake-generator-agnostic (a CMake generator writes the input files for the native build system). Visual Studio kits have a preferred generator that will be used as a fallback to ensure a matching MSBuild and .sln generator are used for the Visual C++ compiler. + +> **Note:** +> * If you use the [Ninja](https://ninja-build.org/) build system, don't worry about Visual Studio CMake Generators. CMake Tools will prefer Ninja if it is present, unless configured otherwise. +> * If you change the active kit while a project is configured, the project configuration will be re-generated with the chosen kit. +> * Using a kit is recommended but optional. If you don't use a kit, CMake will perform its own automatic detection. + +## How kits are found and defined + +When the CMake Tools extension runs for the first time, it will [scan for kits](#scan-for-kits) to find available toolchains. It populates the initial list of kits by looking in directories where known compilers are typically installed, and uses `vswhere` to find Visual Studio installations. + +### User-local kits + +A user-local kit is a kit that is available to a particular user for all projects open with CMake Tools. + +The user-local list of kits is stored in the `cmake-kits.json` file, which you can edit by invoking **Edit CMake Kits** from the command palette: + +![Example cmake_kits_json file](images/cmake_kits_json.png) + +You can manually edit this file to define new global kits, however the contents of this file will be automatically updated by CMake Tools during a [scan for kits](#scan-for-kits). + +> **Tip:** +> Define a new kit with your desired settings rather than modify kits that the CMake Tools extension creates so that your changes aren't overwritten during the next [scan for kits](#scan-for-kits). + +### Project kits + +Default user-local kits are available for all projects that use CMake Tools. To define a project-local kit, create a `.vscode/cmake-kits.json` file in the project directory. You manage the contents of this file manually, but CMake Tools will automatically reload and refresh when it sees this file added, removed, or changed. When changing kits, you can select from both user-local and project-local kits. + +An example of when a project-local kit is useful is when the project defines its own CMake toolchain file(s). A [toolchain kit](#specify-a-toolchain) can be defined that specifies this file to be loaded. You can commit the `.vscode/cmake-kits.json` to source control and share it with other developers for easier collaboration using the named toolchain. + +### Scan for kits + +Update [user-local kits](#user-local-kits) by running **Scan for Kits** from the VS Code command palette. The following process is used to find available kits: + +**1. Search the current PATH for compilers** + + - CMake tools uses the `PATH` environment variable to get a list of directories where compilers can be found. + - CMake Tools looks for `gcc` and `clang` binaries on the `PATH` and gets version information from each executable it finds. For `gcc`, if a corresponding `g++` executable resides in the same directory it is added to the kit as the corresponding C++ compiler. The same applies for a `clang++` binary in the directory of a `clang` executable. + +> **Note:** +> CMake Tools only automatically detects `Clang` and `GCC`. If you'd like auto-detection for more tools, please [open a Github issue](https://github.com/microsoft/vscode-cmake-tools/issues) with information about the compiler binary names and how to parse its version information. + +**2. Find Visual Studio installations** + +- CMake tools includes `vswhere.exe`, which it uses to find Visual Studio instances installed on the system. + +- For each of `x86`, `amd64`, `x86_amd64`, `x86_arm`, `x86_arm64`, `amd64_x86`, `amd64_arm`, and `amd64_arm64`, CMake Tools checks for installed Visual C++ environments. A kit is generated for each existing MSVC toolchain that is found. + +**3. Save results to the user-local kits file** + +- The [user-local kit](#user-local-kits) `cmake-kits.json` file is updated with the new kit information. + +> **Warning:** +> The name of each kit is generated from the kit compiler and version information. Kits with the same name will be overwritten. To prevent custom kits from being overwritten, give them unique names. CMake Tools will not delete entries from `cmake-kits.json`. It only adds and updates existing ones. + +## Kit options + +CMake defines different options that can be specified for each kit in their definition in `cmake-kits.json`, and these options can be mixed-and-matched as needed. For example, a single kit may request a Visual Studio environment, while specifying `clang-cl` as a compiler. + +See [Configure CMake](configure.md) for more information about how kits are applied during configuration. + +### Specify a compiler + +To specify a compiler, list the path to the compiler in the `cmake-kits.json` file. + +The most common CMake languages are `C` and `CXX`, and CMake Tools has built-in support for finding these. However, any language can be specified: + +```xml +{ + "name": "My Compiler Kit", + "compilers": { + "C": "/usr/bin/gcc", + "CXX": "/usr/bin/g++", + "Fortran": "/usr/bin/gfortran" + } +} +``` + +### Specify a toolchain + +CMake Tools doesn't automatically detect toolchains, but you can specify a CMake toolchain file in a kit, like this: + +```xml +{ + "name": "Emscripten", + "toolchainFile": "/path/to/emscripten/toolchain.cmake" +} +``` + +CMake Tools will pass this path for `CMAKE_TOOLCHAIN_FILE` during configuration. + +### Visual Studio + +CMake Tools automatically sets up the environment for working with Visual C++. It is best to let CMake Tools generate the kits first, then duplicate and modify them: + +```xml +{ + "name": "A Visual Studio", + "visualStudio": "Visual Studio Build Tools 2017", + "visualStudioArchitecture": "amd64" +} +``` + +Keys: +> `visualStudio` : the name of a Visual Studio installation obtained by `VSWhere`.\ +> `visualStudioArchitecture`: the Visual Studio target architecture that would be passed to the `vcvarsall.bat` file when entering the VS dev environment. + +> **Note:** +> To use Visual C++, both `visualStudio` and `visualStudioArchitecture` must be specified. Omitting either one won't work. + +### General options + +The following additional options may be specified: + +`preferredGenerator` + +> The CMake generator that should be used with this kit if not the default. CMake Tools will still search in `cmake.preferredGenerators` from `settings.json`, but will fall back to this option if no generator from the user settings is available + +`cmakeSettings` + +> A JSON object passed as a list of cache settings when running CMake configure. Don't use this for project-specific settings and options. Instead, use `settings.json` for that purpose. + +> This setting is most useful when the toolchain file respects additional options that can be passed as cache variables. + +`environmentVariables` + +> A JSON object of key-value pairs specifying additional environment variables to be defined when using this kit. + +## Next steps + +- Explore the [CMake Tools documentation](README.md) \ No newline at end of file diff --git a/docs/kits.rst b/docs/kits.rst deleted file mode 100644 index 316396f76..000000000 --- a/docs/kits.rst +++ /dev/null @@ -1,243 +0,0 @@ -.. _kits: - -CMake Kits -########## - -A *kit* encompasses project-agnostic and configuration-agnostic information -about how to build code. A kit can include: - -- *A set of compilers for some set of languages* - These are locked at specific - versions such that you can switch your compiler version quickly and easily. -- *A Visual Studio installation* - Building for VS is more complicated than - simply finding the necessary compiler executable. Visual C++ requires certain - environment variables to be set to tell it how to find and link to the - Visual C++ toolchain headers and libraries. -- *A toolchain file* - This is the lowest-level way to instruct CMake how to - compile and link for a target. CMake Tools handles toolchain files using - kits. - -Kits are mostly CMake-generator-agnostic, although Visual Studio kits will have -a "preferred" generator that will be used as a fallback to ensure a matching -MSBuild and .sln generator is used for the Visual C++ compiler. - -.. note:: - If you use `Ninja `_ there is no need to worry - about Visual Studio CMake Generators. CMake Tools will prefer Ninja if it is - present unless configured otherwise. - -.. note:: - If you change the active Kit while a project is configured, the project - configuration will be re-generated with the chosen kit. - -.. note:: - Using a kit is recommended but optional. Opting-out of using kits will - cause CMake to perform its own automatic detection. - -How Are Kits Found and Defined? -=============================== - -Upon first startup, CMake Tools will :ref:`scan the system ` for -available toolchains. It looks in certain directories for the presence of -compilers or Visual Studio installations (using ``vswhere``) to populate the -initial list of Kits. - -.. _user-local-kits: - -User-Local Kits -*************** - -User-local kits are kits that are available to a particular user for all -projects open with CMake Tools. - -The user-local list of kits is stored in a user-owned file, which you can edit -by invoking *Edit CMake Kits* from the command palette. It will open the -``cmake-kits.json`` file: - -.. image:: res/kits_json.png - :align: center - -This file can be manually modified to define new global kits, and the contents -of this file will also be automatically controlled by CMake Tools via the -:ref:`automated kit scanning `. - -.. warning:: - Don't modify any of the kits that CMake Tools defines itself: It will - overwrite any modifications during :ref:`kit scanning `. See - below for more information. - -Project Kits -************ - -The default user-local kits are available for all projects using CMake Tools -for a user. In addition, one can define project-local kits by creating a -``.vscode/cmake-kits.json`` file in the project directory. The contents of this -file must be managed manually, but CMake Tools will automatically reload and -refresh when it sees this file added, removed, or changed. When changing kits, -both user-local and project-local kits will be available for selection. - -An example usage of project-local kits is if the project defines its own -CMake toolchain file(s). A :ref:`toolchain kit ` can be defined -that specifies this file to be loaded. The ``.vscode/cmake-kits.json`` file can -be committed to source control and shared with other developers for easier -collaboration on the named toolchain. - -.. _kit-scan: - -Scanning Process -**************** - -:ref:`user-local-kits` can be updated by running *Scan for Kits* in the -command palette. The following process occurs to find available kits: - -#. **Search the current PATH for compilers** - - CMake tools will use the ``PATH`` environment variable for a list of - directories where compilers can be found. - - CMake Tools looks for ``gcc`` and ``clang`` binaries and asks each - executable for version information. - - For gcc, if a corresponding ``g++`` executable resides in the same - directory it is added to the kit as the corresponding C++ compiler. The - same applies for a ``clang++`` binary in the directory of a ``clang`` - executable. - - .. note:: - At the moment, CMake Tools will automatically detect *Clang* and - *GCC* only. If you'd like auto-detection for more tools, - please open an issue on the GitHub page with information about the - compiler binary names and how to parse its version information. - -#. **Ask VSWhere about Visual Studio installations** - - CMake tools includes a bundled ``vswhere.exe`` which it uses to ask about - existing Visual Studio instances installed on the system. - - For each of ``x86``, ``amd64``, ``x86_amd64``, ``x86_arm``, ``x86_arm64``, - ``amd64_x86``, ``amd64_arm``, and ``amd64_arm64``, CMake Tools will check - // for installed Visual C++ environments. - // A kit is generated for each existing MSVC toolchain. - -#. **Save results to the user-local kits file** - - When finished, the :ref:`user-local ` ``cmake-kits.json`` - file will be updated with the new kit information. - - .. warning:: - - The ``name`` of each kit is generated from the kit compiler - and version information, and kits with the same name will be - overwritten in the file. - - To prevent custom kits from being overwritten, give them unique names. - CMake Tools will not delete entries from ``cmake-kits.json``, only add - and update existing ones. - -.. _kits.types: - -Kit Options -=========== - -CMake defines several different options that can be specified on each kit in -their definition in ``cmake-kits.json``, and these options can be -mixed-and-matched as needed. For example, A single kit may request a -Visual Studio environment while specifying ``clang-cl`` as a compiler. - -.. seealso:: - - - :ref:`configuring.how` - Explains how kits are applied during configuration - -.. _kits.types.compiler: - -Compilers -********* - -Specifying language compilers is as simple as listing the paths to compilers -for CMake languages. - -The most common CMake languages are ``C`` and ``CXX``, and CMake Tools has -built-in support for finding these, but any language can be specified: - -.. code:: json - - { - "name": "My Compiler Kit", - "compilers": { - "C": "/usr/bin/gcc", - "CXX": "/usr/bin/g++", - "Fortran": "/usr/bin/gfortran" - } - } - -.. _kits.types.toolchain: - -Toolchain -********* - -CMake Tools will not automatically detect them, but you can also specify a -CMake toolchain file in a kit: - -.. code:: json - - { - "name": "Emscripten", - "toolchainFile": "/path/to/emscripten/toolchain.cmake" - } - -CMake Tools will pass this path for ``CMAKE_TOOLCHAIN_FILE`` during configure. - -.. _kits.types.vs: - -Visual Studio -************* - -CMake Tools will automatically setup the environment for working with Visual C++ -when you use a Visual Studio code. It is advised to let CMake Tools -generate the kits first, then duplicate them and modify them. - -.. code:: json - - { - "name": "A Visual Studio", - "visualStudio": "Visual Studio Build Tools 2017", - "visualStudioArchitecture": "amd64" - } - -The ``visualStudio`` key corresponds to a name of a Visual Studio installation -obtained from VSWhere. The ``visualStudioArchitecture`` key corresponds to a -Visual Studio target architecture that would be passed to the ``vcvarsall.bat`` -file when entering the VS dev environment. - -.. note:: - To use Visual C++, *both* of ``visualStudio`` and - ``visualStudioArchitecture`` *must* be specified. Omitting one will not - work. - -.. _kits.common: - -Generic Options -*************** - -In addition to the above options, the following may be specified: - -.. _kits.common.preferredGenerator: - -``preferredGenerator`` - The CMake generator that should be used with this kit if not the default. - CMake Tools will still search in ``cmake.preferredGenerators`` from - ``settings.json``, but will fall back to this option if no generator - from the user settings is available - -.. _kits.common.cmakeSettings: - -``cmakeSettings`` - A JSON object that will be passed as a list of cache settings when running - CMake configure. Don't use this for project-specific settings and options: - Prefer to use the ``settings.json`` for that purpose. - - This setting is most useful when the toolchain file respects additional - options that can be passed as cache variables. - -``environmentVariables`` - A JSON object of key-value pairs specifying additional environment - variables to be defined when using this kit. diff --git a/docs/res/build_button.png b/docs/res/build_button.png deleted file mode 100644 index 088523000ff6cd418a0ffc8e5d58dc83a3acb3c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7127 zcmcgxWmlX{kbQ7>2|gsj3GVK$0R|1O!QI{6f)gwdWN;4z1_%(`g9i;S?mFl!`w#Zh zerY@1r>m>_bl1pzu#cbR)GUSKb< z#6CMVTPHmQ#fYTkSg2-rLxDckV58ON1+#xdf|GZ`pYQY+{<@7zZvA z-D+}MyleP`EuCl^7d8_eT^-RrTcDU5NNbp++es2m{QP;K0A6%}7ZcE?(qALHNx&;n zg7O~LHo7-9y6^6)?cXsoW8fnj{IZ)yMh|BRrA3DT;k1>A=;6hfwEy1&cL>CJW=bVm zkcFroIIi`Vi!8j1*Du_C`m4)DKET@zrG65ZWA#IGJdn#Rw(yUDS z8>P;Ka(^c2chiNHh{M}CTf>L34Z8RXm=>K(LUfs0^&F&z;CToDxB-Agp6@&*dR%cQ zb7zE2GS~P=`2cw=!WI8UX*zoP5|UGi0k8$^r+Kg#hZPpYr2C&U@w*(|XeSG=qQm_w z-W3oS=&+ULe&1&szQx$DHOiM|LsB_L?3Mg&YHnv!r%)pjLroKj5Z^pJ79XMu_F~a2 zCL;#dk76`Yag2>w2}zOa#m`2hw|okBAV$^^_zu^pub*?!aB!2?L`nS_Nmz|sgo6rw zgU>S{^s6bw0&100Pj-UA7F5U}-Ck0thXeVcoM@;YaQk<7F#0LF>=K365%Oc8xT!azL zA7gX<-fB9eOaR`T>)c<500G>OuGS2@*9z^+k}@$ zd<8*g)&3y!mba^w`>6ith-C>K$8*aRyxdi!bFlwB|1351{Jx#Z{a8_c;4Yry$qF{A z(Zbl`CbGScrBC}eK(To_QCI)m5a*xKP>gZE`!~@Gq|S(BxKfwj;y0z*5%byelCb;u zxSC`pH%wqyS4f}g4~%bI3DuSi4BQLr)Cxanl)hv?5$%a$glz`*4fYWBkQtroaFAT( zlf9EfKSC}B>^23?wbIKTOOsPCM7bdV_Z#IJ?(5U(Oxe8CVz%$3K@l_=gCcZhP>XAv z2Ss&R69%NvoVS=8gq}qQyl+KyLtoD%+ctvqh&B*YiWZg#w`qBLgT?16aoqW(v~0@< zm0ms0N}fTUVx4Ruq)U@u@b#iZy+v@l+=NqS=qdvMw`;w}-y^D$zY?E$O7J_UJa=fx zC-EXsiPbSe7;E5)DdevKLIjFkN6k()2MPis74_SU5_|a8v)|7b&f2fGZdLS4h7(qw zZ|vfLD9{lCkSh^Ys1Tz=_&(GSF*Jq3iUy7-ukS8g53X9;WJKK1wHlc$I_+T7p(dd$ z4P_TSJ9rtW0H71QK~N9xeu09xg9^+2tIo?g@o8%_VmbS$22W&k!oDlhv2s5xoDa;H z%{gn2i*Tt}ZLWCN+G|F&A_C_rmz@l2#y>DHbH~Nuw@ilSedE!Xt0BPc8~}9Zo=?J2 z{g~HcD$=&aj37P zR%H8rd(L)SnU$+xyMQk9&N?fTS#*0@k;l$6Yv5mO;_490Xvv zhS-u@j?~4p6xya6#AYetqaBjM{S@f%`yzWTxPTz&gN3yH_7I0H6}-Ca<^!a6f=tKs z#lqftv_Oq%oVyeDT9TBoDQj!71 z!^pR!JE7b!51BO*d-nC_tQJ9i{U<2Djh5_Z&!5GT;TQ9zLyScN)0b3C6hLSThbmq^ zW&8(R%+Q4D<-D#Dro~fn^`~p;YTssUhNw?Tr%m!j&9pab*eq}98%vnVpPSd4kdSJh zf=JgQ?|*-@sq<;v#WV41aJAsW#8P8?922KF$hkv$+hWu%@u{E;0l@!$dzyCnpmJk! zLz5q65ih`~XY*Uo6Zkg$XV&O4F3<=b+6K$b7^NzWKn)((`?&g?03|Of`kJPrZ8nmC z5Ik&T;<3dxRVGC>6s8H7v0W_9=n1sZ9I@4aj&kcKl6E(`p3E?i?K^k6s8E3#p=4B+ z;d0Sbg?nY6g4Lsf%am)zSwjH|0{|El;Wb%X`q|9pp41S>`<2S!EF0l;p&97n|M7z& zT|Hbr?L!Eveu$BT@ySJG0HPsY!*>pwOhm~gy?K!6cK5wfPf}fBYPx1CeaW^=MnowAxWX!N5V#OAEibK6ARME>UuifwCw5A{Ce^o@avYN7h|`tD@x z(h8sc!nQM7xz!kCG<+$~xL-{BBgGL*{7tZXmPnN&i();q!9s%rElYi}C6SBLfnh;V zWzQjsf|}|1OxCcdo)8HWP|!$c3*jD~dc82eAU?a&LlmFAD>)tuKCV}8w1`(hmSzm+ zJA6(RWB-KA2B_I~$awBa&ME<^Y%wnFuW*R7ard})@EBq)kQ!w)$8Rv)y`FE1=bT-g ze-fv*O1RYgMgGEI%%_uM^sPt=zMK^d?NI!) z;xG`X9wG)8SmOpdPUAB2aBR?OeSe2Wd^DQ?o#|sdYKX5fAbo$l$K5NJv0WHvRL>zc zvd%kp_k#YZKm>e$p&^9k3D*cea_3}}?QZ`#Cc^=I{n3=~j2*E7APve;Wup?d8o*XSVk#^dzHYEc^k*cg5~RGnn0DpfQJXPB5M~H&{}!~pvHKp+ z_?U)8qOFE`G2<_{nv^rL`2JzKGB-0m68JHIb@kmR~}3>)^T6#83K>@#Rn{A$RVcYK8W0J8Nr( zv9KLn?P(t;P>vp%s=AahjH58h9!LcVdK-O_0x&}PI!zh`EsJl?2>k$3AfB2Jymy53 z#pMTvO-CmqTmSQt-ECbMZrrf{;nr?T@K7DW*B(8YgoiRz9nX&HGcKk1WoY=tm!e)_21SUuWuMtWp*4_^>(`*sDww{Kj zL<*L`E6?BrEv+4N8{PeY;zTIHA z(_it{m>#OSnq7pP%&Zh``+0a@y}C}E+vpb@IXMC7OCRAP^AX3Y&-Kx0`@nak9BslQ z{=8SWhvMOJPZU)%j4L3z>joFANJayNs+> zd}a5MQI)CLgSg;6KH9F)I_4#Gib zvru^wp47aJ>_U`uIwK0>5!`LQ<^KBl(I$rV3u5Y_{nVK#2~Fxw za$Q(@P(Ka8&(=}LRI(&)iKDvZb!y>K*r}|TswA{_Iqn=BFUI!HKFPUEX zrU23bk;KQPzST;E!NJ^Tk=gYi7IW=!S^J=pog8GKm?z6g@dftZ_)G1@Nc-iR@{WhU zJw;=s3?UV)jZz*7cc^8iBCL)hYLt3AcsIf!EB0$%eSBP*>3`1GF>cRN2mBvAN^+{b@9i)}HpypCc25hbQ@Cn{y-2vLTrG7$Y(T8KBjgBdqx_ zZNU61&vMtFUIUxy7kqe`J?cPISD=!_GX~CwV-sqOHxy zlfxZ6*J5`R>N*q2+34%_P~)wn`rYUx211-Tl&HyW^{B|$?>{~%DJFtvA+iM8WnUljj@nxVEM?z+zO0b4W+tX2tUt)(y&52@txX#)*qBl= z`?3nVH|Ss;t)VEMw|mQ}y>hvze|7TyKRttk-#M>7?sghtrSX!ZmaVUBq~LSyZm`hz z)?FG+LYvehrdvE7zxBk;I_>dv6=x>@k0gp^F}I-bb9mn?SVe&L6S3FdwUN@37K)mV zjX9fqezvkSX%AnEZOSfT9Ij?$enl(oWscAT$5y_^H7=CIt= zXTVZ%ku*=@#d4LQ&Li(Gf{Bipt}{l^E%M{)9yjc`4fMq&%5#RVV*#Wxy?ZHMOP|k^ zf9w%iL!oH}t?R;{y|i(`S{bvSj=a6bzKYdB1p6?1eQq5g-NI};^vfqn*uXWmDP%mZ zdeUrSh|Xlzb#X&CW37vUBg;aP)VUO0H6QVYfJgN8WshyYaux{w>QcdLR%SaGyG_2g z+Rc*4Dxfzr?(UU~$J)zn>QNq6wEmiM7uHiQ=a>0Ufaz z8#K@CRTe2kX#P8_7{knZvy^M4F5o9>xpKMcU1c$>(>iFC1%a(s*5uEtfqf;P(L5fprCA4{{w0x?Tt^ChPLyyDoKw@ zb$z0Ik;~a!K0pf%);X)5P8}DWN3lbGMJ;yj7Y(L5_q9L8x-~y?O z^#;b@I$3==1}DFVwyDymX*9oplwST}VW=`4vWY<7T7B1N@z`G=4Vem5P;881e$5FI zJM4`};fBc-A3EqrfzZ~Wz2@eC;j+v*h9OG+T?XBnKP^5NT>}Ex%*#i$D7p;G(jIz` z(`B`E&`x@*wav=$X?l;E_YexxBcv;XMxprP+_e1=m@jA3G8IDluQ@BIS^(DG(4S;> zmn%U*ry8%Uldt?))Oho)Q7%f0<)5fwC7~h=ZK6Xtlb@-NlN{wR=9Bu@TQb!K$1t@# z4ZJPgPMZ*&+2wANr!bA)2@SR+zc&z{6|QTjiOzgiE1H?zUz@O4tI?4>Q@Pgq=BwOo z9ycr2X2*1PkB{qaJVDiqRf|P__tWNb&;8RUgT&IN>k<|qc--g^^BNg;*#Galh7gN} zSL+J4-&3ou;?2NT0!{~OwL2=vsYBnl_v5pUe*i)#lg^og$Sj}9OI*)smFJy2pxM0@?mzPvkONk)qW=fVn+>0`$35GYtzm$~cYdR|VI=C?Q&^Lag^+Lm;jjyeE zI5h0~A|ojB$i1ukrLHhNg4GyBUEme?@!{vR`D>1s|1C>Lj7J%q6ES>P|Br|;G|hbl zXMvq?g*}tkzB)lS;Pd9tZ{x?c8__gtp50}>=oz#~UjbnHC~o0w$uOk@D@AU%Crb;L zRFXKaQ_ePT1{0ud^+xr}7fPY0mPdqDeUHE!?iyTwfKUUl3(dJVd!vTP2*oAP_T9m< zP7pl+NbFW)Xb5a(9*AGfZe7uT?FT_a*yy?D@LM_UN-U1Ult>5)EG@ z!YK;n1g+7BDIp2$b$g4hdo|xc5Fj}h5-ss`UM>;M#jUHfzZF+Af!8iR={w~ubbB8} zoIB1UhTvsB>F_HL`|h92q%n`B%fHq00TUn;4io2n^37Twq~S0TQ&opg-4ews*V6AiA}DOmsgcyhdnvufG+iOI5+|9SWjI|hRH)dy!oCC0{)bWzu# z5Em%BRo6IR>|52O^x2aI)Bcy$HWU>)%`@}C@xW)0Y>g<1UFj6#!~Tf1)5z&!dj5t4 zmshOsHZu~iISIArVp=aW_)^xPrMvORM9Ouq?u$q%oILO$NlJfZQ(K-C)gSb9;uEGR zInyh#5V6=+R!a~-{^DT%hXQ`i9I3WX>qFet>}!tCEu%*Rgvy7x{9*HQ*f}lwQH>}J zQoxWT(N}H}1qEG9;7L-Nbb3!mo1MhWESieP1c$LSWbDI8eQN>W_eXvB>1?aa%TF^h zB!J8aw;-j|v>5XPJuyz8aEHiw?H%pyr55imr0j3TS^%tHWu^j~)`twT^NZ3hDoR=) z@HW<(DG0q%@lzij^r{D1nwF(WR$2CNZyGEvD+ka*Szksvd5R0ADt=($Qw^1nkm9;0 zi>?cbH-?RMP3*r^I3Fa6JvBF+FCqe=$XptOsY4f!=%>2u#WQBJt*I<6x=Am5LHlPi z0BzTYX}$H0Xb@i$dXN+zeUda7+%?D5)AB z__MKRx=8Ox`g8_kv zL`g2u!CvMoW?2BuiYm0ifY9@QdW37nBn``suN%Y?RwN#S(q_xz5^2l1f5WEkwz9Kh zOt9}?`UKKYH2120d=s3Y)kX9%M#r% z55c=w-S|PN`15LmVs8|1Efmg8DtqHeSYHhjcpnRvhkNM^C$vrMs|(*MG+vYYH>Rkl z5)B3OG1MiC3uy)DP`0zF^CTMdifM%n49K?pLNw(WG67+c$StbAlgCyD2dc_V&6Al%>?HM8@I7a!)qxc2mY(alXn2o3twZKO9y(j~KBN=`kiN8)* z-pLHHO$(~x>L~;*^ANINBVYiMkr;L1JUz|~RvDoIhnC(yscRdUQgxNyyClmtRTN5< zJ*wIU_jfU2M!xdqXC$B=^TQHgMc3)?q~M`w6i>n{K`Bx2(rC)1E?#el(iX?}oDe6} zB-u_FrGNs*dwzPTf-Sysw5Dvk-%wv!kObtRFt4Qz)K1Nwy12n#nKSHn z!HM>d_?>`;@W1rE+)jyNB`xubv;HTqiF$YXN2LcUHPhk|sr2jAJaZgANdl>GbRyYE zTHkPd^vsX1!bU3uq79B^c;W}=Skoyi2jqFzA(!d*;m96e&GYr2EBqmpJRv#=R#H+@1LOqIx9CFQISk6x zW!1vy0tW&F;ldg-1-u@K=E>YE{A|N^4zE+wV#BSn2Y5d!XY3#wv<)}OWo3`NYAjw5 z2>8`7@=Sd6aK>14sYr}>s;NkHLaOO9bV8C^Z0MdKRymKr+x>s0P||*v&pJx m`R)JTg3KfOwGfRdcLY@M`O`2PSjlVf85 diff --git a/docs/res/build_command.png b/docs/res/build_command.png deleted file mode 100644 index f53379c011d74eb96915aeb4c78fd35ed22805be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27158 zcmagFWmH_x6E=8pcXxMpcMF8z?ykYzCqaS+w**NbIKf?mTY%v1?!g`Q=J$Vh&+ez4 z!(nF5?diU^x~iV4r>djWR20yViID*SKvR4ps{sJe)8OYqL}>88mvFo+_y*%4t*C{F zh`6+&x(l+s`@neQl19l=F5PGG~|u{!6r9 zN1YqeJ;r{Y#iLP$(c%`s?p})ieLps)B4OLHm+fQor^>u%9ThQM_^{7*pl{uOu191o z_eOTc2ve|`M83{(-)P;TdRlz1L{zE5> z`s!X{c`j)KLq^$7IYfnzO1&f5cUIgrP8dKT4E*N`xN+wLB2=;=hwa zU1nMlrRw4`ys+VRzuFce3_zHjFTTE#{^GKZ+3RR4MC1V^2`>p8pUFIQUfh0}kntU! zhr~H@#MsYijHZSC@EB&pimzPV>uhXP%I2?1z47fpfKY1gb)A!%722IdAnR-{t@55f zRMfaGCXVVWSVyZgz9U&Hvn%oe?{v3xqq$xzY zE*c7RMefm?_1S-cOZ`2y43f-)91ak2YU{DOLWXITb~kIoZ`iBGf_0U>8+eZdTsS}M zFSvM*$P45M(+nBje)U~y>R`(gJobvVA16Pl#}7a_3scM+*M!O~qjS1elPr%qUti+i8)l=+fHKD&);G7f zc83p3K>QZ%$n$VM5Mej&tH>~KYVDy20FfJdnAbrr2V+o@t}`SQuW6~q8|Qw~9h5b}vEb-5G*YS^~qJ$qX(*Qu4T>&%K!+YUZ*P3@Y6y$)nCdL37P+tr1bwq`* z%(`&&6cw<`qJ`Xjm&&$C9ki^~xf2W(#-w~lfxs^j_5L|E-?)= zk^+EKrhMaQd`ctxQDF^I@plMjxg$I7Ld;oE%UXwFTt1mMcR?_QvTl;ydX{SZq^Q$K zI5`2q7IVBX2pODT!W!~z$1-R8y0h^8rkti_Y2R6eLWJGAYsWvIW#uu5r(^I&o%D-e zU%kVpYmZ~ZMGkj2NyC7+4t@M&B5pHw*QsmkV;k4rqBrZzE_BZ)@i#NQ)uLI4Mgai2 zPFTDH^isY!O9AU_qIy`s4YWpIjZSFMyM0=iLc1M|0mKg;AznA>@0SgQisSWH-Rum- zJp?AbNanGj!q6*(2ou(?{GgojqM#trqp!g)oqee0dia;$oTx7(`!M1qu0oY7ri$y0 zodYZ^2&~IY&h50Nwk(R@-|HSNiF&nDIjmnXAViPhEH(VpuYUN(;#w+O(Q`JV(pvS+ zj+c2z)YHfopHlB`hUc;oq1!3Ph_ki+A=WIfKN?u2S<_O&%c)}5>pH&Y4z-J*L| zvqT%Gqe3TDs6WQ>!eom0--xRZ&vWe;!|`&TFMkqfwh#fXCc9Gch@|+k%T*<%Z>gbw z36Xf~ghP51X3s7g+Epwa7Nomy=bjZcou;*D$K-22SP0Wm1Dw})14UvETN-`6j7VYo zKV?B{O7ST0{s@VrLIogto=X0Zs`EaDoToDt3gFv5`hh%X9&UKLFhDVmNCw_snW$$F z!?Wc>hE>>Q$jg4*t4+(;V;s>&%}EGu1mIdW@hpNtgdGFL?ER#_FEPc6C0u8<`jKOn zv^qjibLq$>*kbkglr)qM8u-Q3~&NsFgxCw!wC$ckjPsfHc6`Zr?idS; zQ+hU9nE?7t+s4Z(JmC4XH-m@9+Dn-=_M3dIetYdTaC0WS85L4$ooiLE=X47L5$=dP zxKhuY=_T9-Vx5k@%osMF2xje-y(6%M2DqKd3r#+AS=vt(d3?1aLV#5y4~Vmk)nKD} zbL9sI{OM;X(Fe=~@gerSUX%?qI{?JMG{iUynfMyLYX{*i6vUpdI9(Avwr%Cwm>2d} zq9JLq;q|*lb)3XEakenJ6ghQt~Jr-wbOV3KP3TdL?U;YCAZq8&t+)#Yx;Lr1axuea(U+K^XRC6 zz-pt*t8Fe??f@w|$(X@;z|3`WEFu(SZ=a*}ebWcof*(w(5>rwq9y*Ui z?L;t;#ve+k3ooLSHwPp3&i-2~iBhbUGeBNz)ijC|ZcGsObH#rhd2mW|8WHB=0!~T3qHZ{5Sl)j(^;rt;j>900_ow)8^IA zFrvVWd~P}~F_HrDD7>xdWlsZ?>b16Bf7{;&LiJyyCPr?t;j&iic7~BBaGQdu>W3xYRG(&)Ae+$NM4bs%UnYiJsCzKeWA@tp;5kA)I_oP z>j@3*_)V_Q0{~=9uBGpMhev}$bx&V>ie1EXn)QG(JdIG5xLcuu6s?Dxar|a=NB%X4 zM;iH3y1DfUr5%!SJicZS`0W?nFdGw_A-$cfsrEz{%}hoY9ZAQNy~hUySXQn3A5&I; zqMTYUomRgnCA94{XRZbPUHu}8MfHB^dS|Ya+$#*QVs75Q7~X*ptCC@Xie5Qp>iz8( z6Ht`ELwQ%KgiczATr|WDyPDTm+1~M_mWTioN~xC9ezP?vv0xk=;qRCSI^7>p?i%mMXQgnvQO7|QfIz2!es1l>*g)P>YP3^}G38YzxOfxH7yiS~tf z@BX()@ts}aL#Vw;ePB%mSAT}L$iJI08ZnDS>KauKaUCtoQ;fT!)C&A>`DhFv!u(6_ zoGW>i$bFTSjRNc0ZMRXn=&QZykAIq=jTG{CkEaho znvt88pJPP91Dj%R^D z&kom%;FU)Ny*84#G`a7yi`2v+H0$)|o7DOF z`A14z0s;=hhVr(yr+yNbZ`& z3Gne>&Ic&^`ugJF8kSC$8k|tzL+j=={>>j9Z_^)%MH7KR(P1JjliE-oX_%gdAhOxkQUl;pJJa3jse#ugX&$Dy7< zC5w>TYA}t>uzQ0OKqcX4Wnf?s6U#OyjCGrr3O>+1X0#?Vs;5^#)Gf-Zz_lG3_QU;6QqnEJ2r5(aJf)Tix$!gJ-vo&o6i^ zI-WFbL?R;(<*@ z?3HYY|JjZ%w{GpYf|Qh$zyHHqj&@%2ZrGSU?B2wKm;h zNM8k9$a(Gle1Jh19vPuioV4R*Paiq)R*-gHZmJG>eQ|FVrKShhm;}`kL*nVrhAZ&v zn^dUx@x0q+FA{KfIWAG8l8p?6hll5eyxeC-eWs9jDg5fJ!JH~OUa41|$K^Fi*zSM5 z2ucTB1Xu@^35Q>wX;-IF81_;GTlpIA~Ra&t{+u&W4L@ZDW)3crWSS-m!X&@!z(Bx53Yf|F$#u z+5h@b+sNqYsIrq>$UO`bG~gaLBT%?LXRF2noYKX!N!8%8NI3M{+uJFrsZf%Fq&m#0 z%&86++e4;7*E8Q`KK-`2tQ{9Od|W!~cy#`|-i0Ch_ZI?1AZ2vk)PX4YEYWx@V|2+~ zW`DNM0ZDCbZBW0bCMUUhc%Fk_g(@<YNPyeJhmx$#n=@NT4yW?diSC0+zU z8?ZR6T6hm`TgOSm5vElL{;Z?Gz%*I&FP8=Gc$7% z=6^DszHnQ(104=Y+sl-y#KQXqC>VIq%ye+&%4S;JcZLTq(gwF9DG_r6FBF~b)EIwg zF}ItXCDFZgZok&aR$)Mt*4NKujP~jY1a}a$kL|8d1PpS~VlC!@&t#6Agl#5gpqn}N zZtXIA^Y$%hEna)3rDbIUaU=wpP9^2#PbZCQpirUArV8KL)cP&f*}FF{A6+}Ib+nsc z=~S8o^`HrmN(4X6S6i+HKc0Z@k6t;05>eXR-24aSf8sZ){xZ_bQ4FZB?ES(~@ zoD^nQF{4a7Cx|&XEDaO#a1b~Y{H$ii^nbcMnv#^!@zj-jWL#e1eIYvTCOT4sb@?Rp zfMVjke{=ZXl>Y$s$+~zU^nc3#AJ~B(&;Jh~M`Qd44UD=1x=R{M;BSwH(Xbyx2zpx?9afYR!pKq+;A0ihbH}R_#A5@O+RNp z>quTQZ%mfv$p64UTA7^EQd$9IaD?;_LV=MxEF7zZcylq-3!d0q^K8~5 zD}96!o$AiuC#TjuP-r0avOK#0P3ixDDsE&}m}a-MgJ2dlB9l3n39f}4mkOo(WR_AF z&IENdezmzhwsauTc&bNM>K2Ms4Rp?U@({8WW31g-(f<&MfS|nRyLXrCh^rtUsR~}$ zbQLCt5o8Kw%a;0*3@bp!DmcuGXKEo@wuGZ%WowrWm zdq`~hdnA5%M*;VO#{C{k$TnZo{r_kZX~c%vfY~<%%6T!&W6Ts~jj4^quqJGkG>+t* zk-I=5+Z|t)aeblwwPMr+E8=qX%hl+&n$$6U(30;Ph6|Ojq`_NC^#Cq-I{TPe=_94H zDEnjnZ3jMjQCOdBV%2p~S{SX=8|*fkwnPbikut$@wPST=AC_x|E94)ptt)$9L(;5g z9Ii7ZXj$WFH`){@@M+PMz~Loc!LNl0vlDX?t_Lae}Ut^px#^#*}Jr^5hXJHO|v2Tn{aiu zXQZF~4~5Zt{m06;nk|oKov(j4dRTPI?WSG3IRS`UJ`YE1Zld*w)k4iwghLJ@TbQeZ z-W!xpnqg}4j9KKRx?UP}+a$-AXg5%j&06?|q(`PZy2m=qx6F=3$z#LQC7OC^&sS69 z4wZLFkGiqJ#>wsdHK#isQQxh)38b~$CvSZqwD?bJ24ha|^aUGCGCn>Ar*F5UQQUSy zh{bE6g+9lyW+Onr@W~TI)YUe>^!D8GY!RRPiybh&YVJMoKAJrl6FG~Fi(9EO-#VNr z%k|qm*vk!B-Ef5tclT6Qx~p!I_^pnI z!x15m95yBJ+z1Vg2yUe4bwULh?jv#o$^y{@mlxS8}{7fdbQ%zU8!=!W5aO@W7 zG+$e)wC|Eirt{}m0AhFkx63 zvX5g3U|y~5qERMLqMgay-)9or%6;(lT<<%$SY+vbr^E{nbHd(zONfo_zn5uk{BA}D zVX9I+7{VHi{Fy9xdk`tt>@T^`(V?MHVRKGZLO0-r{>a(d+W4qUgOHRU`nF;|U+Yu@ z)Ls375~`|}kzO-t-C4`GM#ArQ2Vo#p;!!?$Fp%P?s4G$1@kfi0kO<2Dg&>ExUiD0< zU%At*7I!0g{P4$iB$fC=%Eu>u2+3i`cI7`CIi60f8zn7}C* z=?0v&>n8nZJYXieix<;(F>hI`OrNY&P+DC4&lG5q63sIVUE00w{+ctV z4)3@-E!N!+P=ri7)MJQUsmaTe0D8^tJ2loLN9cRDI(NNMIABuqZR&utKQq&ifX#pw zELqh#E!}iHp4RKJ78DeK!n#JD2g7~EWct2dJzzcCXH_Ur&=Cw}1y*=sj@&K*6khhl&p0Unjmb;$__4ZbG|hoR$c^KIG8q8_;wHxcl3+qnk) zYq8!j4Iazt5Ho6j0Co#<)VFypQiDXwfY`X867C6s@oBwt>7WOq8q4 zv^=i4bR5;C-%fjDHlv;c>C60Nlqpuk)OH05t!E|SJ@Z}-^Lu@%w}xhZQY5CTfz#Hb zU+O`9jEs+OH24`W#y?_H7I-mKWKi!QuSkOJ&=z+wzp^YmY;{^L*8J{v>p=Mb%vKXD~^U z@V_dau)Des+;H`Mc@h92rPb@`;TH_X@mlA&O&O_xvk~a&30UuZXp+AD>jjdGFItQ#eLND8rkA&J>>jLW81k>fD?mM@UQ8s|H6SMF{=8W z$p@gyZbAUe;OVw`Gs`CIG&D7B$Fkr68imhUe2%*`@uJMpn?D;@g?;~i1I@Lwt?d|0 ze4Q7#(SZKgW_9-T(VS;kDq8N~Tz?xOQd=EgC8c37O#-uI+n7FX$6400nFlZ;A&Kj^ z&GGYJsIfL|bdHIM3D{2jbd<`)#FU8nw4JQ#P6|3jVV~2$ak1nzkUvODn*2oWZwER@ ziHCj5pE{4-DB~b4up5dYo-l%k{wd#b0R47N;v`vBd~|e_Ow9i(OK2QqG?F)5o4Q10 zv0L_Xm;g$}q=okt@1DW@tcS4kZ+A?Wnd@x1es#6myEYAwz*D(^cVnxI^0#hYbNUU)i z$`eYwWCO$EO0Z!3rtXp-v2|>I2T~wHr6E8PN>Up~8J|DAR-1fn?GaRccoQ_styocZ z>fb0FlAQOHP|V#d65Gm8a;vnw*tIsCd+WKHvvx}wa@iDA_ndM;`Axk1^F1fMpR~J1 z{EsGmx0an2`ts+bMMNOb%MHeq3GEFk(M=#4>)D}afY)4W286}o)d!$t$_FIX-30B= z#kk6HRQ3ENfH2k*hmfPUr)T@ORoyKT&V9;Za=Ph?dKFy9FOzM~71pC~fpz-;7@Qlr zXII^)NrV*Z$FGd`+S+)){&kDaPlE=B8HbJTaFrsDxr!AquQqP+EFrmQas4cl{eSlY z997gVope6md|f&*sj(_qAYI9m(}*jP$Ay!MR35^h5Dx@dBAv4O;$pk0!qJshpE8mm zu)fdlvYM5dc>v~o?(TpjX4vMYMf^am+ZKKLNNPp~EC5n<#%*^4ApQ!Ieg?U?K^GR5 z6ZB6s3=BSNY0vp#6KMn%(ei@xIObj?&0Jw9IdPguZqI zk5VyeLe}Z71A-f{K13MQAx4`puQ}bv65~zFo|DwH-2vZ{um*B=mKGKuVP#)(P0CVL z=<+6y60u&q$O}x*!Ix2uRg_6(d`t`sB#}me)#Pald?Q6K8qp5ozJ`DVi9&oqa~}u>0ZVOumkmx!@A;QNx(y_I zKw|^{BlhJ8dm~Yr0Fep=-ioz-tFf`{S#>T+`!wo%6*x2ib;=wBa(zFz%0*!l+ zo|Io*#FDP(LBRq!I5CWfl$4aA0u47(Fm3k~HU{m)(yyYTLgn2%C?L5@ z@Qs+AWF-_Puq3_&KNTVO!KIY@m``ZhY>sxW^{=yqT%H+DeWzWb-deTNE;GC$E?+g@ zB=$OKb|rPK4Y#e7B~(pqE$HS(KpyroCx9N*3SW?3-_!W8_lA=YHC&oFPQF0HzJ8I% zI3ncvTDRHg1*E|Be_Epuu(L8U+U0eVl$qpDm^Chqi|N9Lf@+2i{*|0ab7%gxsMgZb z%34MEEhMy1p9&6P!}qZCvy08h$S~t1OdKmBszVfVL?K3vC3?K+~Ip>zJb?uG3z8{68=Is?3TIROwKmix!Mm7i{Es^?h>Xo?!zvk z&++PQp1w@fso5J?a{uIFib)}~l#Ya*Y*r{^UBr5Gym8E>t)0N+fd>Vlos;Wj0ywES zsP#hDL$v2c;aLxELnso-l9UwyX88^!LBC^;+J%Hx&u)Su{q^`~dcvf3CwY;q@WP*G z9;e*EAM$&BA76dr37opR9;NnDS3?{jkX85f^J|`QNFCWpq80o5>&lFCem=%BIQZpq zywi1&t(TK<%YZ^Lcbotbb~WVnIp~p?zfmxIrn%F);?E+G20)Gw>7yAp(dEU3%9MOwlkfTF&PY0l(8j7_*V{c95|gsw0w(R+_54vD z-%Cpm*Slo?T@)jlD0n+J6(?{5YQy5Df`WoTUCeKNo!PrU6Og6TDGTbDGFfahF||r6 zQ^a|rJ!PCNZNF_j8IJgQRWLVEg@m4viMB-fNin=DQc52A0G%ySz`U$DTdNNnS~(-a z)Ji+t5QfeFQv3d*rsw*YI+pMkw^PsvLLzVT(e(XS(Vq%UEz4N#_hkJ0X(H}?3yz0) zwC|nY4GLAmWco?_SgFyg|o*6AB^9@U~EZ738&MO9guml*Bf;2`l=aA&7n z4DIJF(4(hiWcZG-2^g~C*DhpbWs&-M)Gxdbdc5Hxj{GmuhW)AoaR$-&=41(s)*^9aLU}Xj9`PT) zU5CEZZb-D-Tz!5K`_jkf1JZ#yV&)uoJZl2x0w@L#+@Ib_hDKwIZ7%4A@jxyk%zcaG3Qim05 z4SSUTy12M-UTKj7CE+j=Z9Q&bm`uyW!{hOEcODfLg$9M9>k7mJ&n+sJ_ORHRq zSv}iUITUYI@A~li0d%PidaM%@6W4(X#Mp);pU_Aa%XB&NCkP1$2-FF|*pn|a)@PZE ziJzaJoqf!T8zfPjL0N#6mukJ=$qcG#wDzwr&wBy3*@B721_u71HWSD7Z*N=GHrr55 zg5@1BMVM)Hp~#FtSo@BJOCz2>|>gDk`Y6xa^55WTwKWL z72Y%uF)^biNvmRp#PRR%C}p_*a96e-s!MXcVj>z5@x83voiC`aL0(wPOG)nNEGs?h zd8s>sHKwKs2Ungq^XgrX2s5KqJ}J~rw8v%Dgpxd_7}r9}*m3sZkz(EZS-jWM)%rGH z;CEwOmLtiH#zmeXHi2q`>8%!LAq-`N&o-9I=df?Ty^SViJ#sEuIC`BMA5(Qru;eCo z+{uL8w-;=4V~#nc5dAJk?==gRgYI`isKUUKoT=}IoI0-VPlM|}G8pKfdV-8cWyiy! z*zGb;@Do@!sq@$y8yqtRVd;yo*CANO07E|$znz(X)h94o0*gjXAX!ja>VMXL3l>J5 z;JwdQpJ#MURWmqOt^B{WwD_;K&2>H;9x-X267f0wpjDiisTh2S1b=UWTL2abK~^Ct zDG6luoT~iE&}~EY{lRY1vzDW=x&F>ljS^%5yx{eFGlg+7i*iIjBV{`?De7rxvLmyj zr`FFl)&8>eA@mgn@VX(^+zps9KD%fj9*$T>K6>#ViNWmRax|^E4N=zmf{Bk4{Kdp? zMHBQ88)^3CbA^l|dIGNQ?ibIus#6D^&W!9kMiN89o90(k4i3c-fbAyRA*4+AXa(xWBfd+Fv^PkPnQd{N>AG^Rg#DHK^}_T*g#z!%RawEvuN412knET*+ia8 z!~2B`(D^L;?U5zUuvfP8bKnY}{lueF^am@uXRT))ARLvov>33bKRyQogF{32FOO$u zZI@%k#f;!RowEo}*-e}27KO4D*keM1&qBnA1Ox-#(Le-4QqA}FBHw&D=8Jq&@fin+ zW3P>W>$58Ff@2_CrH@xjwyQh+{w#$-w=c2R+ey;Lo@BRBiE4o}X0Bu7V%F6IXP>v6 z6}6Ks1X$&)D z*><8F!o%tlZLX-9RPc4C&IpEI=+abCi#zFV0`1y_qdpn0rJU4J0}$qquE zT`<@KX>A^!#tQw~8)Ew@k+ZhiAh7dxL`O@D)!+(En>?iqsr--jbwEnu$I_3#S@iwX zMh2QSR*HnrGTU60M@3QgHnBUDBK7fm!p6mKz>C@!N>mILB4uPeq?1Ei-a;${mlm-O z$zOEPL7>kf7@fQ5qNk@fiKhBQRWPM=nKP8k%O~@hYAS(CgvLP^H)-r714Ekn^ElQYQ&B>nzhIg+<|V zaiJ;GZB?CkDTbfP02&tLq&KeAmdkx{CF_F0*>?_i^Tz9Ah|kxT0vu95*?(;wNO|EK z4t00RznA$MC==~3Ga44-QdN01f?Zzl1w=2k3U~I39;URdp2{$0Jw)?MjDU}A$ zF99Y_TU(lTkH&Dc?OAE2Nt&KM;s9(5!m+82mw)MFa}$(0*we%JdBsGrPXUHB;54C3 zh7SPbf3A&0n&w;y$ajc+D-t_n-gqWAl1mW`prCa1^0pE8$_nYg_=yMB8|}aBw(54t z1$Nf08W{N*k2YhoNhrMrq$2DvhZ-+O2bAp+ii)=BweZEyB7qxX^wWrSL}8HhceaTK zyj!;_8+JPFR7+u&TnMYZ;-t~!oe_X(OJ>GDK-HS0gA(qJwI&{AWdV(h=&>)Y^Cb!v zPD&>{m2jf|Qwobr;I`^W7cvsS+q_s8e{hbL;&JpDMR<$ddvX#^N&QPsU;APxxTyO% zCv|76oRl~*4*@qmr(Oz@GtK#u)LWKh_u%Y33t48_aF$QAS@x5M?XhL{M;hH_k&C{5 zN$|2MXcV(@gs03UYn&tP+8)Sdye$cY(pUHeYV739xagO{f!{GOf4iES6iJ&KB&V=Q z2Wp|R^oYU(&rqQ+kd4w3R;Fg%yVLPLl}3}6YTs#(?@?!1*0_mB-N~KU@?s%28Gr74 zx|79Q{Qb90cswYH0my)_ELOW5Q%Vd%4Ded7OYqzEc&$1(k&|=-Pd6wWr`HIjPn3Xt zn8d?NS7BS`_u<{h@?^R4AuoQ>6`cV}q?Fb8-p%u%)^23`Y2sqM1+vd&NQWi~x2QQ( zao(Nj>(IOkFE{5)f#19Gc!E!2Qn>KzzKD;B`H^BBX>9WoO(igqR7kkOd4Ik`NSfpu zlIQxQ=R>raHrJBeY(;?e)70ZvgQ?aO>1O0l=8^zJ<BVe%=Xe>FAvQ3r_XkY>ps|WCoZ>zr0$7a5i-HH1^F;XT%(CPF z$P_{-bLnnbfA4^4SUQd|DeQ{!i*rJWTc840hnR!W5hbt?Z5yTBBN!7&eYkj#@;lh$ z9ZI3@lp%O8y=^>4W3n;o-Gsn}5{s_$!tG#~d17UX`@-aPYlmU`NhJx;yQae-@0L9np4ER;ihH@umK#7xPCWW4QZ)-*s6o z#y0NUOY^fUIv{JWGGhEffHnlS#u2C0GldK5y(l|jv`HBXwX!A+Q6KMrk2_f6x5oC^ z2dN)Wv0r-RaU_8sd+0-BYY%h#YFy$x76!T?bE+xnuBh8hZJ_^}l>_KPKPWO&m-94nnOFvIH_3SqRL(9{rafDd`7I{ z6>KvykdRLZD-oqala=L`#wkRSNSg)vzQ}B6Y9*R(Xm?z0KSQjp`cCRdxg2Ev02<^+ z00OQx@(#;VctriUg zV9zn2gkqf)%TCuB!0CsjaxjvePo`Vq3NIXbxs>}04s)ruTkmdO(Ii^wQ zi!nH@(XWPGEN`tZ$c$BVWB&Q4Oz@`^aYFE8tpIcp<%6K}*{fudN`SK~a!C(b@e^Z! z1x%G_SX)@~+Y=W_YyIPMi70Uu2OdabUU)3WfCr$=CF{k^%IZpNiA`^bl_=@R zhk{h^2|VeTx*6RpbyE9;Pdnw!KawwSaQwQ@qEpq92P98x%IY;YEBG8xvm>Fwqboz1 zucI8`AuqtpES>+cHb(U2G6#vSnn?LnXS*H>_}Zv_%>8*|n=%Rj^rABaRK%;>8IMD& zFcvN&+3|;K-UJ3%jo26!0KZbmdkq<1X&!D4l8|p>&&V2me-qJ?hwxQHs=~bd6LA`)MP$kEMBvRR zYdi%I*+1PIX+-lCNND7CFT#>U9GsbBI*)_n({5jq{se`*qx8+^F|E@@#CLT#bOWhK zQp#s^4QpH|96#{geI_*(WM%?$L02&sV!4?0^pUD~f-8oxj?wiCHI+LXabQAPnEOlA+sj?JRR}eJW4yxXcw$DQ>`2lPDLw$jj|ITVi`i)i zG?-HVfeBPC9Jw7GC7i%sEGYK2QE5_v=NwT#Z3$pdccW;3vZXT+~g0I^$mC3>V)jvnVOUeTuNWLb$jth7WQ*FK~d&S5gnOlaVa13 zBMo@{+D${#cWa}Bm2$*~SKi~6P#B}e&Zb}H#%La{gm+UnO8&ASf&=ylFi5#!ExVH^)8{ zzAX1^rt%G2w8D4;KF}W_J5s1L3RHKc37v=2<6)e>CzNxWX)smId>1LzBKXy<9WX$l zD?_U-7bX(JEznD8$Pc@G?a$nJ?eSOZqjY>^Z)MK-wiBH@neznMlS(1$5%WPjw_;#k z|9SK?ADmFhI6}DleKn!y$FQ-}I59!txWQ>z zvXy-orvb(H@caeXnO_*M`Mfv#p>=m5(roqnivI#KoM!k1j}N+viYrk@F>D9(e?Brv zya>dxV^MVj7USIZr(Tq*%_-s;#c^S}(7Kn(G|V)KjsVn!5M*bley#-UXQyG8Z`;`a zGv?Cx28@|E(;4bb{@hgdDR9ygS}J10QIUca-FLIUTyPynppLfFKh zN+a|SHFoL}uM2CqsQ5Z9*6#uvvTqA0(37jl2H z%PXjRk#&-m640!wwb3nVIcM*WlLnR4hFk`|fL3_}{ zn0?k>QN}j;kQ|U)4BI`FfN53!DWis!sYE2oMU@a8Zbf;5ypZ{|o7ptAJ#9-c&00TA zj-k1*4*}3~VIIo~;=O3zQE&8gF2OnD2*9pu%EwFo?hb3$ao!tI?`wW_0M+G7)! zrn;4j6^A`gZ4kbhIUyAoVf#@SxWff42p^cx z)LY?pxFKK}(L-?(>S$#)44MI(2XH?8rd8d&89xchk>*oLBdU-O!Cj zxX+KqT^Hzx@z{woS(rkve{Gz5(JLkk%48}Fy}fViU`lSj>3GO)9ULa|Vgs;-uq-a+ zvVclV}yOM<#W*cM;SR4w+`GQHG^Y98t-Qm?&<2vtB+iesgvN zdo|s~@1BEqX-D6eoY2(-X2G(!4h7N8wwBk^W3CPj1W^z?%COS#@=d9-QH+{+yY`B$ zp7_=&)kQLJeE7$1c=2rItB`{^yR;hPHtPu2?>=HTF8U-|uvQh5@}agrq#mpg*55_0 zpYD!<<*y7+ht_~*?VLO7Jp1|*E+pwb1)elA?oFa2H&G2bTEuz+YdG!^53XTjB?Ad? z*6xIn9no#LL4bf>Fqw%sDI~Z8Az3o3o+Dv%)c-=4UhmFiI#^3@_IZYRdi zKn`4rBSQ?Ab;L+{2Lu5sNkpWNu5R3aw4Q8tYLr`PJr6xxQi2pxeVw~9r#}b;&gZ@t zI{rKJBy`wg*lJ3C4*rJbn#=1rNw4|csnby(Gb*4LC6+C=)0q0Wc<;+l$*5^$zbTVs zPh0Q-?U6n78A$lS&m#>pz=D~kuswV+gX)F2m|M5Bt9^%XS6xW&@}AG};TP_sRhE1F zg%N4cKh8z*oJwIITX~T>jFJ@Hv<{V*_|-28BU9-4`;Bji{ysGZys~>bIgQ(d%d7|Q z45k!j5BlSW(l`BYywt~3MLxTyHy%+!>8BYgm%YQoVP@{v4zpN4H}(0ydjY^m4^{9{ zB>Oo#+CuK?i`^7)a?N@)=U9Lt1_w#2WQc3E^+_lDyJ$L`4$QnHki3SWtzLhfb$50g z?ykP>#$CQ`rJbvPYIHj|T2af_GQd_; zbIUK+ySH+wnIJE^ow%gBkMZqjwQL7g%`)oM<^XD~Kmcjk#b8*})XW z6N#Z(EM7Z}*y_ZpWTRwzWlBJ*I!gX@8Q=6Y*ow~%RZ_y_v+VY1;XOL+$1g}dXHqx5t@`y2H&l*l!To0Zk&dBrNbJ@+O~-?t!H2V^!BS-J zCvy!{u_k-tN8EWIw%@?%n~#0^q^e z|Cv3Al1)wg`?B~lxqb=?@L^i=;JE;#B4_j+M(N`$+M!RxKFu_%O7x7w(U*(6~i%mJf z!^57-9^+z1vp<(==rjv7m~b!Pd%z9>S#enfg}v=<0O%LwV^1 zr6r|H=@vv%q(QoohCzlQrKD4kmJpN_0qHIQ2}$V~>F$R2^WMAed+V)r*Lv@tS?e&Y znK@^EXaDy8?*0ADm}7O;;~UU~-nF>oK93`uNQ^JH*9MOnsK8XZdlWfq&^(x_U_e{Pj_#fw0HbyOiysOo`tg2Bl28 zL4)Duvqvv7e-=I)NWr9Ljgj`1TzAPLg7j8QEi%i^DGSrB*J!|@W9s4L%C$B2+LVuT z!J=ZN_o$!FfJXj+nu@RBrbkMTB(X4oX zH@R)h#f&GLeY2d2D}&kX4~mp-R!4m}iqvQahy{PP;Kp0KgM=MI^=c*XFrEK2l>6uZ zGnDH9^ZOxsVD9I42VyJB(wIHoi4~T$oh1w7yeU}Uc*}V^Kj(uful0ujx^4R2Xd&2R zm0+(R^V|kS#U>k_m~ii@raqyJy5HRM-8O1n{9hxYY8V3=(n1T29}*tY;XKG=PGo$l zAQN}A#ausWzgu>F^PA8-^`maf`BkcOHhK7dVhbzE28K+R`cUyos-H8edgI}x{027;;nToNwvGw@w6N189$6xjuEq}V} zv^>(dK1d9Uyc{(=BHBNAToWR3_a6Frrvf8Uavugn6Vr{fO=qmO`Sq||_m!bxqh%jy z{VXryq!A^d`^!he?)T^c6Chsyt%J^b`}l)b;SFr*AvkM=B{PiQ-F4CC119 zY_R!RItuOXml^^uye^fPRMvhjL-!}femforUk}fLRed4QIkyB5FH<}$o;O6 zjEe$6wiI>wh$D=qH4E)xR7h-r*-*YbyM^{w-`F<&%x?CRSe%e9FSS#*qf~jL_0*>Bf)ORP5j3puq-RxF66A7;@HHasJa?vOh8Zi{$^B^> zX?pY!mN|1`^`%s?1zmlTX_0>5`s5&u&@M78H#@JMH!oj7nFxxRrNdiHI%@Z8yS+T<3dE1A>HxUuo7(LUVD zmqcwD6sSO#Cd?BDYamS=;Q^do9w+4+8(o7}Drq;LCN`~qevq*G`JuS@_OaUSxPjBy z7zGO5W0&eT2&8`j;SyNBox|b_!51c~k9JU)*#nP8)`#nRnXN_9SwPE&s)nwUqYNiT&wp^Cnvhv3Za<~b7 z7w^gCuyD3=#-*b|E55OXar^yUQG^)B7h&28ga|v%y@~I5t`xQ7A`2;9xw~L5!RpmR z7+`i3Z4R>LbZD)*XNh4z^IV*c8TsG75kcvyt6;$GzQ;SA$BRw%PJq9)bw7T*>4L3Z zF8v+_1qBh&%a^Xp15dtp;!qUIS(sqg^x>}TmRz?UrwrFfbK~dVHf|n{;46?H{x~q8 zVTx6J=ig3ggBR#%j?D%qgFPC4Uf87BgWrc50N^sqwA-h6C!Uy|@Pm5pCHGhU(YQjH z&Jcut$G?wYDQ(Q8Ey@u??;<-LzRToszdIKS z%C zc>7E8dRb4Y&$f`!p#n@VW;l0=Vb3lN=`b`qA@2NvS)yAq_4FRgpEGxwVU+f-2M4Z4 zt)X;3$_5slsl>f1b8?nyS8qnWqvhxb>E3yid5I0ezCM$G{=8>n%1NCv(THLvx#eLrJqUDCm{*?;un2rR=rXKrj%4kJaw}wALUy z?YEZv^-!hZ0oS&{C`|DsmzK}R6^nGi$xWqwuS>X(k9Wh@Note;vNl}r#RVmx4%#R? z%W~8(GZrlqHWL&jLY-{Q=QZ>WkDQCY@$i#-d_~0|Frli*WC@;Mv!-e#Ne93Jm3pe!$I+PeE_u-Z1~}4+X>OnVT{bo+S=L|-V#yr$m0t~c8jpcNK`2M#c!`>_0)V$Qe0?HY}Z}n?QK$@ zWwov+m{%PHQ{~;1mz+h)v8mi=5M*<`9J3KpmLaIJRzWSiH->mDAk^fujobMR`~J6} zpy`(tm$J6Oef7s7`xYYrSRr>@*MGc27;*I)u;S3!Afe1 zpICq%tkEFZv#PT1rO|N1D0%;;aXnV7^Ah2CB`yYO`#-{Ki7E)-Yw*XA$Yrz4e5Tlv zjRwQEZsmm*gfl-jlz$289$umj^Jm{$h%by3PYUoO)>&Z-Kbd-IC0ZX-K*Ad|uiD2@ z6{_QkYTI9FC?>tmmqk3`ySqbC5?w}lDyaQ&Z{q^RzgU10V$`zU_8IAyP4YCmb6)wp zB<=Z`y>3f8Yi^Xe(J$}w_!jS3+FwO>D@MI9Cq;Ne7R3fNh~?t*k`GebqIMP?nZxlr zez_-0X(ji{s$~$XTMY;bmuHx}H1M)Y zfW6Git8QZR@dFjbPs8?4>R*)tqk1UK1M2(t+g*ygkq%AYX`~7NtX>-_s)MoYo#9XX zpq$8c0SRw)=ILfxjO69k?OobTkBg%e5Ey4C!{y}Uz}%JS+*|^DLLt7P7MXu}wwjf7 zmUC``XU*2Q=e-_G%k|FTcS@C$^+-%7HRE!4^j6x4Ja%-W-sQ>M)w;=^UuNOsU9Bp; z-m*jcWZK1NV$;EQt;J4pOL8yK>+0d#BrlR$OT>jp-Yj_r#^)m3ZqS{(36ls-Yk37O z8M0h8uNSHlF+v558|`1}j1!jGHpO(j!(}aAdN<+1=;Y>&1YYN^F>zlYGJ z=6mz_7mw5+WfR`kSTs-UVU~mK9;%ZY5#ufqk>+`-ka~$UG{RWueD?g?jS+U)hq#=5KP>^gbRX zew3kOC3&%o+Ilx&uaNK!?1&|AWZnJ=Wr*qZMyczBy|^lDAkCY+f(WKl?dA8Z;gHWCi9ieZRG!7Q_IHp?2^4QhyXdC$L%CDn!ulLsUdv?rBR$`q)t1(@sz;qX49qh6dwR*wB-+{^ z13Oco;FxD7QYh0>FWNltbq*m&RR5f=bJ3jF7<{)_a9R?=Z|4zMhNQt0J1^hp?X|kh z^uxu)MBrF&>9AaN?$DyP&hB>{<}Ufy<@VuHWEohcc5B?n#zUHZjd063<@!jbs< z!hetV*-bF`^hx(|8`SOX!DwhBf`C}<>POhmNXEqOso&&L-Oe)*`G$~yj zRn}as49Gv1(IMZISX~SrnrykevXYee>Rbgj0sM{wX@X=vZ1h;JgZ0VPI;+@Av!ao#b6K9Z<|iIanmk{r@DP54lBURW^)6+|w_NX~Ubbxgr))=}eP z4yI%0y&5GrIF#vX66Rf=$2U|=o^DT{_NC{))tnXa7~*M#Q<7V4-zJ_MYKesyXjlpQ_9O+N`LkGkbU8An zs3kSO8ZP8toGgpY3|R@DkhmhyIdwV6xt_}P+qd;f4J|ve^@``p71@=Q+xMkmup7SZ zQ)oByP-8L7HzCd7sw*t4`}h$8E?jdBb!=>G3JU(5+}vZY_VE&fzP>(#XPhw-B1T^{ zNy(D!=Nf=J4v+xsw*b_GgqC*Kwf2d_1sTLj9RBmCAr$-meU;PvP5u_YwG|$%1XcT2 zz_V#Mox3EBSl0gLH2wWJO7Nz1%#KCX+wA5Fqcz9K@7n2E3{C%l#7Q8`ia2ihHn~51 z%*-cqWeqp6VmwLUlkZVP;h{mBYO`gdWcyVM8*HaOyY`lkz}R$`U+!|!^}K2@Ex83} z`Iz9Qa|}kTikPNy%VD+K82u86Szt!)u`#+1>``u1f+kY8k2LZNHR(ZQ06zNLn^Od7 zgyl$n6tFE`Uu>44n6&ucR9N+A3OdaJMoVvRFG#(Cp?Ll;Q3mTSbaj|@%fZG*BjUc6 z_$Wb(Z4AtdOI|q_wSr8sCxL~4@`+~l3ume~E6M}W)S@=2<2C{jWZXD+?~;T)U0z-$ z<0i$Yd?N7hVNSk$v+am{E3P-SuP#q_C0+m6d{qay8obP4FvmJ+ z!XtJ%<2GB*g4zP;Cuvz4=+d$EQ;pu!onw}a&}VLYe0ds(?yC-_)19yJFCan+oD6Jp zij*!;ugg<#4ukU9xebNJIe{zpYRa@%Yjxw~Mf;Fkzmg-lz{HqOdLAFkQW2SLinb&? zO)ZU)U2*`Iv5R+8ybeW->A=>DC!AIPW){tc%ZNi+S^3A055S#}W~9mXeo(TRPw;eW zsT0_v!hxqJ2stnM=x@~~%x?~4nZD#Q!my`c6+u#5$z_K1`JX>~0(axzp-wqD3`mG7 zI)&f5KV5ipM2$dzd$EtZS-;7<6TnssO>)WLG31>h;o$b9y1{XK?E#@X3 zB&LeJQHIO$Df4$L%S z>!18;)>b=4-|gXATE}3uyrtX+@$iPR~(IRp-C zL#~MryaYabtt*y&Nd_Eu`K<@G7Ot2X8G-Ye7I3(10BQ#;u<(e8yV@&P=eVsE&f8N} z&uGpAU$E-dxlaQ44ahVCB}zazXze!ie_x35R|ME+FUK*zD!jUdq$e+xt7avsPp4#Y z-k?DLRsgIz;vWA(WTHUL`PLdnZ?*{g7T^zMP5%T0lXw5#Ray<=)0!LK+k&NX1L4^^ zCUoCl)avx;v-n{6Yuq$GQZlkKgKE{Hv8L-21EnO6Up8$hbex=kk_BvrzZac>{Wo)O z@2hHtS*i|f>o+febv1a`{;;c}5%c6>V#0u4YG49CTyZf+!k4DHx~Xjs%=;q(DkDez z)N4-o!=vN+CE5u+?!cyCvRIutyXgF?`Nly}kq^qt%L5j@cE{>llZ?M-D!1#$wUYZN zud#~^W_(DurR^Lv^qz;5phk2%l?Y}M@Oj6zFFFDV(&QUpj0Ig`Ev>Phgo3y4(V^yf zr*d83IbUqgVqs=Rl`=A#^Eo|c0^W9z>gJ}x zJOXrm5S(vsx@^H}?X#*dZ1xow6cp5TjqNn!P3xbWoRrDlyExtio)94Gd3$?zuTB7x z7RPvc`b>Cuc>b_wCT=DMwCCBt_Fj=Id3yWg;==35Hkj^*IMS$TTjq=kl46IIaM`0~ z65ZoUIFf&2J24&4FBG5&Gi6_Yf&#I;g#3#R(eAbUm?W>oKWoT~WAYvYSBa3})@X^MWy@VdLGhrLrV zW%r}^^w4`1Jxw;P-MPkR(cU~~3?Zhd0pL~;Xm%Mv!E0w$Nli?80zd*7s3`TbG*mP- zom-GIFr|V9NGQI~6Xym0h6bSUw~F|k?ub2`v?Ko%9rv0yl0bVc3H6ztkO}#sz*1#( zKe}1DE(a;M?pM0A8gsmM{rQXXX$RL@DhPOLgrYZR>#Mtw_rjhsF)>j$RLS4>MRrxI zsPL!txAK$=r}dN4(oVSM^)EYm=>~KoNh3O|J&Wz1q$x8y872%$T!Mk-QoTd6z-$ko zLA0WVjIBP(t=uWNXU_^L9S5CHCN~~@zZM_c^ zc%r%iZ!vkI^#&7UwzEG4&1YvFnI4*1>JW?+>gp^BMO5(#STn4D#(>~G1>re9{ed)D z`7A8jifnEMIzR2Ic7B(;wTHX`z6y&cX<#dyDAt=cVt?@90T8Piz-1>*F1p;goGVP1 zq8nOq@ASQX2^vA?2Yr5z$?*sz&K3Y$%8^|ZN*8vs0?KeuP!Nr{7g%bS&|VSi6wChA>~T@hrs)9g{r z=T}(^98s--8saogs;c{N|+5g@SegD1Wa7QrFf#htkrl zo?fajYdAWVsum!&%CR3rF^h?bJ$Z7nqGPS*?JX8!`WF)T*zS)%3fib0%)-KAukJ%a z!u+$*E%myBe83Ux*pKXuC0xo+@Z{ChoGvM zrvA8xoy+24kBU?GCEFRCE@kV#t9mbW^nmH9?u703beiF{4`GtNrL*~itd8EBH0LW2%o{j#SIs36Nk5LTYo_=9zFaw#iBs+pioMn$(x-PQ6z!8F$heE0S+6AmKY)2!?MQKJXEkBHCpFQ+K z3(-j8%Op0dR5PjT>TOf7Hq_v%(!T}_hNn-Tf)A>tb=^hjM^I{@*L*Vu_H6)F{Iz?U zCFyq)Nbm%$rOD^AKsm)5?45_J-0wQ$|90C1G`HPFPPZn_1s-scZUVc~K&JTSVkqs2 zS0g~qi2*|y$h~^_2gPIwJAmUGG)~?+r6wmQCng@X;l5@f3Y*@>pL3}>-jW9DFf}mb z0TK%B74L^eSVkItZVfXx;nd&!XR#vmj}t-vBs!EgohM#7D&}1)Dsh*f2IF`FeT9-! zRqywDb<{(WlIZs9(miC^J&AgDm*V<9G|v_$KH?<_#9;@ZKmING!M4jt^juaJnByr8 zxpWX2*+8PHtW0F=8GmD~Ujx{ONu0C*Kv%h7m#ky#)4zLqyQcbkzuayS2-BdbMw~Av zgPzn%zd@bHHlNi`a$pq_crfpGivgrR=y(uXQutN}b^xxkIkp5?-_urM>e>i46 zllo`n_pj&w`?#AsnB<3zUPqY$CJlq<8879UE9xVb*zbnS(%A_S;C(+XAO*X}9NZ_b z+{UH-E|^sDqLH4I*3WLw5Q3yD74bs`k2HhznId#DQiEX^ujfu=*!ZTH*xa-Up*Wx$lBJ z-o|9vbiBKV?1}>X4ZqFfi?3gK0zS@?qqct)<=gwnF~ccfg#Bdi`wQYa+`xZc!IS@M zDTnFC8}AJ5b>Im^->@@Gm_-`v!7T*5tYhCSq=RKD)H}WS22i?AC75ep-iH40da7ioH2I2uzfRAGcy_aE<6zBW*359 zo?jiZySWW=88v`()bm%4oQeiOzup}FOsN3H>G8MLLn!$jIh0vj= zT{$0$Q|>(*f4U3516}>A$Hx)48ip4fhe>KiW!}u4alcm+ZqQyaVcX<=4@wuO=|bE2 zFgucaBF0|IY2T~+>Q#f|tO$U`fXNCx*u`&HCD+MYhy#Y2Vw0*ya1<}^tE&>a; zr3y49PtDg$axlF8ffkW-D#6Yz+=89AGtlmI`a=kz3XBGU5jpr=FO6=Dr=P`G+N4^M z-+@4cPfHcSg4{(iG}$=W*zohelnDw72&4llD5&xxX>S#}`@uO&$9_bdf5%;PgP@Yp zD$fiC^#5~14J+*%f3FQhmr+H&jRDD*V*IP4)`fn+3M$_S1D*AavDY9m*7%~SCjQtO zR90XaY7}XSWH@$5Z%4t9LZA4amI=-%qG61Ocj1g0q52yb`}O@0fTZ-;9C>|IRd+yD zz`($8d93t^jV<4{P7bxPiCHLp#L5j~`(^w9=xGP_SQ4Nw+EC{^?pwh`VvT;n2AKro zMDAmfy;<-j>vHRLl5kWoz@aMQ_=y)nT`bj#M&4b#`aJt&=w;jPklMvpc=@-YP+P5H zc9--{eTvkIIQLOh|As#ra=)6u?+K`lB;03bdS6?@ZdIlKX6tvYX}f5K2#hbSA1DZ* z8S0P;b-P3(eVxY(1P>(srj9e#n2zmlrRmh(u7?KjPqmawvK9JC}^+>Zt3y?Z| zQ?1J(EG$eQE+E3oyWbKJSTYhC9Guc`1=&;xgIf^m0D&zbgCpsBl-j}yd+&y?eqy&E zq)$TW;$HIkgc54eqlH)_BwUWXl>aUZpeSt^X)-bJ`s&lAIkgxZ;R&s zPazX2zYx>cc6O}cRFCZv=XV8Dl(ma20Y?`=r|4N&l2_qjPhaZk^|++>SSYGcTU1ZW z%E$m!Mt`(b=%TDxV6<#oW$O6bYvYATwHJPzgqgbh$IU`WhfC$@yU-Ai1-<1LtlC7q z0;N*K8SMGkq?CgFW(UZ&dU|?59ZrCa{fL{}TJHpqV>Tzs02~^`N0pwP`Z6ckKw$xa zzvU_b&7%1O;?;P+w4W8YQa?^hL1!TQjXDhM<8YwfMkAj-bmEdoa!FcvuPfv(p z1eJ;CLBuC5VR9wW3*~J4vEC&gAtb>$vxc?@6(sc1LMbH}^A-KP1y272nyI09#>>WE z*9vNlc`I*=k2a-r1$EkFADWjh^-8yyyS(ukBAe9l@vW#lATHV2idmBj?I1ELs=Q)c z7pOx%GieF_ay^1YySjq(YV$yzq;U+oxy?F4V8&js9E&No8T~))wM~ZrPg4reUsR?JYvE;+AK4eUz zqoaBG`Kp;>j~+c*pQ$|r;J?B7b!rSq7!Ewly#%>zKsjWSoK zU*m)2=-Lezqq$<<%CFB^(XDpGexvid^&3a~kbp{P(B~I}ml#;+sCex}M0Eg`=Xbmz zX}}RBD-C2PA7oUsajh!`^+OP5jDsg%sl_w?4LLK0t(a3Xl;&{e)!sX9F5s7)pyzU` KPfKM?-u@SXJwG@A diff --git a/docs/res/build_progress.png b/docs/res/build_progress.png deleted file mode 100644 index a0e951834f4f1d8efe310a848aab4d20a818fe2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21442 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 T~XSnCNC}r6( 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

aX!`XbGHi-jU!-bM@O%Gya_ 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≤-hcLck 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 diff --git a/docs/res/kits_json.png b/docs/res/kits_json.png deleted file mode 100644 index 69f203ee7c639f1244682cbcca3dbef4d644954e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77342 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 KMNUMnLSTYYSBpph diff --git a/docs/res/no_kits.png b/docs/res/no_kits.png deleted file mode 100644 index 45f53a2fcb22a733f5d8a85536efe26258bcf3be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18155 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 diff --git a/docs/res/no_variant.png b/docs/res/no_variant.png deleted file mode 100644 index d1599d6b7a22b6555529b2fd40eab90fa806f207..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4447 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 b@{(fFlWInK+Un6YMFOZOYATe;S%mxxf@_&6 diff --git a/docs/res/quickstart.png b/docs/res/quickstart.png deleted file mode 100644 index fc5ed26d0af57ba62cb41edb5a9861c056a4a672..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19276 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 diff --git a/docs/res/variant_selector.png b/docs/res/variant_selector.png deleted file mode 100644 index 5c5883bec4b0e97fecc34a70451bb18f56d0134c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24971 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 COVv*R diff --git a/docs/res/variants_yaml.png b/docs/res/variants_yaml.png deleted file mode 100644 index e18ca60c30b67c179895bac0cb7a3dbbf4edfc4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60292 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. - -.. _conf-cmake.mingwSearchDirs: - -``cmake.mingwSearchDirs`` -************************* - -List of paths to search for a MinGW installation. This means that GCC does not -need to be on your ``$PATH`` for it to be found via Kit scanning. - -- Default: ``["C:\\MinGW"]`` (Search in C:\\MinGW for a MinGW installation) - -.. _conf-cmake.parallelJobs: - -``cmake.parallelJobs`` -********************** - -By specifying a number, you can define how many jobs are run in parallel during the build. - -.. _conf-cmake.preferredGenerators: - -``cmake.preferredGenerators`` -***************************** - -A list of strings of generator names to try in order when configuring a CMake -project for the first time. - -``cmake.saveBeforeBuild`` -************************* - -If ``true`` (the default), saves open text documents when build or configure is -invoked before running CMake. - -- Default: ``true`` - -``cmake.sourceDirectory`` -************************* - -Directory where the root ``CMakeLists.txt`` will be found. - -- Default: ``${workspaceFolder}`` -- *Supports substitution* - -.. _var-subs: - -Variable Substitution -===================== - -Some options support the replacement of special values in their string value -using ``${variable}`` syntax. The following built-in variables are expanded: - -``${workspaceRoot}`` - **DEPRECATED**. The full path to the workspace root directory - -``${workspaceFolder}`` - The full path to the workspace root directory - -``${workspaceRootFolderName}`` - The name of the leaf directory in the workspace directory path - -``${buildType}`` - The current CMake build type, eg. ``Debug``, ``Release``, ``MinSizeRel`` - -``${buildKit}`` - The current CMake kit name, eg. ``GCC 7.3.0`` - -``${generator}`` - The name of the CMake generator, eg. ``Ninja`` - -``${projectName}`` - **DEPRECATED**. Expands to the constant string "``ProjectName``" - - .. note:: - This was deprecated as CMake does not consider there to be *one* - project name to use. The concept of a single project does not work in - CMake, and this made this feature problematic and buggy. Alternatives - include ``${workspaceRootFolderName}``. - -``${userHome}`` - The full path to the current user's home directory - -Environment Variables -********************* - -Additionally, environment variables may be substituted with ``${env:VARNAME}`` -and ``${env.VARNAME}`` syntax, where the string for the ``VARNAME`` environment -variable will be replaced. If the named environment variable is undefined, an empty -string will be expanded instead. - -.. _variant-sub: - -Variant Substitution -******************** - -Variant options may also be substituted with the ``${variant:VARIANTNAME}`` syntax, -where the name of the currently active choice of the provided ``VARIANTNAME`` variant -option will be replaced. If the variant option is undefined, an empty string will be -expanded instead. - -Command Substitution -******************** - -CMake Tools also supports expanding of VSCode commands, similar to -``launch.json``. Running a command ``${command:foo.bar}`` will execute the -``foo.bar`` VSCode command and replace the string value. Beware of long-running -commands! It is unspecified when and how many times CMake Tools will execute a -command for a given expansion. diff --git a/docs/troubleshoot.md b/docs/troubleshoot.md new file mode 100644 index 000000000..7ecb8d850 --- /dev/null +++ b/docs/troubleshoot.md @@ -0,0 +1,45 @@ +# Troubleshoot CMake Tools + +## Common Issues and Resolutions + +### Error: CMake Tools is unable to provide IntelliSense configuration + +If you see a message that CMake Tools can't provide IntelliSense configuration, or see that #include directives are not resolving in the editor (the #include directive has a green underline), this means that the relevant source file is not attached to a CMake target. + +If the file that receives this message is outside of your project, it is safe to ignore it. + +If you are receiving this message for files within your project, you probably need to add the source file to a target. + +This issue is most common with header files in a project. Header files should be included in the source list of a target. Even though CMake will not try to compile or process these headers in any special way, CMake Tools uses this information to provide a better user experience. + +### Green squiggles beneath #include directives + +See above. + +### Debugging ignores launch.json + +If the **Debug** button and Debug target features are ignoring your `launch.json` file, refer to [Debug using a launch.json file](debug-launch.md#debug-using-a-launchjson-file). + +> **Important:** The target debugging feature is restricted to launching target executables with a default configuration in the `ms-vscode.cpptools` debugging engine. + +### Reset CMake Tools extension state + +CMake Tools persists workspace settings for things like the active target and variant. If this state is corrupted or inconsistent, open the VS Code command pallette and reset it by running the **CMake: Reset CMake Tools extension state** command. + +Resetting the state will automatically reload the current workspace. + +### Increase the logging level + +CMake Tools provides optional logging that isn't enabled by default. Use the [cmake.loggingLevel](cmake-settings.md) setting to increase the amount of output written to the _CMake/Build_ output channel. + +### Check the log file + +Regardless of the user-visible log level, CMake Tools writes all log entries, for all levels, to a user-local log file. Open the VS Code command pallette and run the *CMake: Open the CMake Tools log file* command to view this log file. + +This file is user-local, not workspace-local. This file includes all log entries since the extension was installed and may be very large. + +## Get help + +Check the [CMake Tools issue tracker](https://github.com/vector-of-bool/vscode-cmake-tools/issues) and [What's New](https://github.com/microsoft/vscode-cmake-tools/blob/develop/CHANGELOG.md) to see if your issue is already known/solved before submitting a question or bug report. Feel free to open an issue if your problem hasn't been reported. + +Please visit [the support chat](https://gitter.im/vscode-cmake-tools/support). This is a community chat. Microsoft does not monitor it. \ No newline at end of file diff --git a/docs/troubleshooting.rst b/docs/troubleshooting.rst deleted file mode 100644 index b35fe6605..000000000 --- a/docs/troubleshooting.rst +++ /dev/null @@ -1,76 +0,0 @@ -.. _troubleshooting: - -Troubleshooting CMake Tools -########################### - -CMake Tools, like any piece of software, may misbehave. There are several things -to do to check what is going wrong. - -.. note:: - Should any of the below actions be necessary for any reason **be aware that - you have encountered a bug**. - - If CMake Tools hasn't given you a useful help or error message, or has - behaved in a counter-intuitive way without being otherwise documented, then - the behavior can *and should* be considered a bug. - - Please visit - `the support chat `_, and/or - check for or open a relevant - `GitHub issue `_. - - -Reset the Extension State -************************* - -CMake Tools persists certain workspace settings in an internal *memento* that is -opaque to the user. This includes things like the active target and variant. -If this state were to somehow be corrupted or inconsistent, this state can be -reset via the *CMake: Reset CMake Tools extension state* command. - -.. warning:: - Resetting the state will automatically reload the current workspace! - -Increasing the Log Level -************************ - -CMake Tools exposes a lot of optional logging that isn't enabled by default. -The :ref:`conf-cmake.loggingLevel` setting can be used to increase the amount of -output written to the *CMake/Build* output channel. - -Checking the Log File -********************* - -Regardless of the user-visible log level, CMake Tools writes all log entries for -all levels to a user-local log file. This file can be opened with the -*CMake: Open the CMake Tools log file* command. - -.. note:: - This file is user-local, *not* workspace-local. This file includes all log - entries since the extension was installed. It may be very large. - -Check for a GitHub Issue -************************ - -It is possible that other users have encountered the same problem before. -`Check the GitHub issues list for others encountering the same problem that -you have `_. - -Ask Around the Support Chat -*************************** - -CMake Tools has `a Gitter chat room for end-user support `_. - -.. note:: - People in this chat are volunteers and may not be available at all times of - the day. Please be patient. - -Open a GitHub Issue -******************* - -Issue reports are very welcome! CMake Tools is developed and maintained entirely -by volunteer work, so there is no rigorous QA process. End-user issue reports -are all we have to go on! - -**And remember:** If your question isn't answered in this documentation, -**that's a documentation bug**! diff --git a/docs/variants.md b/docs/variants.md new file mode 100644 index 000000000..6b6166cc6 --- /dev/null +++ b/docs/variants.md @@ -0,0 +1,178 @@ +# CMake variants + +CMake Tools introduces the concept of _CMake variants_, which are a way to group together and combine a common set of build options and give them a name. + +The main way to create a variant is via a `cmake-variants.json` or `cmake-variants.yaml` file. + +Variants are a different concept than toolchains or toolsets. Those are handled by [CMake kits](kits.md). + +By default, if a variants file isn't present, CMake Tools loads four variants that correspond to default CMake build types: **Release**, **Debug**, **MinRelSize**, and **RelWithDebInfo**. These variants do the following: + +|Option | Description | +|---------|---------| +|`Debug` | Disables optimizations and includes debug info.| +|`Release`| Includes optimizations but no debug info.| +|`MinRelSize`| Optimizes for size. No debug info.| +|`RelWithDebInfo` | Optimizes for speed but also includes debug info. | + +Selecting one of these variants configures and builds using the corresponding build type. + +> **Important:** +> CMake Tools does not respect `CMAKE_CONFIGURATION_TYPES`. Only the default configuration types listed above are present. A custom variant file is required to load other build types. + +For smaller projects, you don't need to provide a custom `cmake-variants.yaml` file. The default CMake build types work fine. + +Large projects with more complex configuration options can specify additional build variants. + +The variants file can be placed either in the root of the project directory, or in the project's `.vscode` subdirectory. + +> **Note:** +> CMake Tools provides a YAML validation schema, but it is only checked in the editor when using the **YAML Support by Red Hat** extension. + +You can use either `cmake-variants.json` or `cmake-variants.yaml` with the same result. The examples here use the YAML format, but can also be defined in JSON. + +## Example YAML variants file + +A simple two-setting `cmake-variants.yaml` might look like this: + +![Example cmake-variants.yaml file](images/variants_yaml.png) + +This file defines two variant settings: `buildType` and `useOpenGL`. Each has two options defined by `choices`. A combination of options, from a set of settings, forms a variant. + +In total, the number of possible variants is defined by the cartesian product of possible choices. For example, two settings, each with two options, creates four variants. When you change the build type, CMake Tools will present the possible combinations in a quick pick list: + +![Example variant quick pick list](images/custom_variant_selector.png) + +When a `cmake-variants.json` or `cmake-variants.yaml` file is present, the options they define replace the default set of variants. This allows a project owner to define their own set of common build configurations, which can be distributed to others. + +## Variant schema + +The root of the variants must be an object, where each key represents a variant option. In the example above, a `buildType` option is defined for the kind of `CMAKE_BUILD_TYPE` we want. It also exposes `useOpenGL` which controls the `ENABLE_OPENGL` CMake option. + +### Variant settings + +Each setting in the variant is an object that may have the following keys: + +|Key | Description | +|---------|---------| +|`default` | A string to set as the default choice for the variant option. The string here must correspond to an option from `choices`. | +|`description`| An optional string that describes what the option controls. CMake Tools ignores this string.| +|`choices` | A mapping of possible options for the setting. A variant setting can have an arbitrary number of options. The next section describes options. | + +### Variant options + +Variant options appear under the `choices`key for a variant setting. Each is required to have an unique name, but the name itself is unimportant to CMake Tools. + +A choice may specify any of the following options, but must include the `short` option: + +|Option |Description | +|---------|---------| +|`short`| A short human-readable string describing the option. | +|`long (Optional)` | A lengthier human-readable string describing the option. | +|`buildType (Optional)` | An optional string to set for `CMAKE_BUILD_TYPE` when the option is active. | +|`linkage (Optional)` | Either `static` or `shared`. Sets the value of `CMAKE_BUILD_SHARED_LIBS`. | +|`settings (Optional)` | A map of arbitrary CMake cache options to pass via the CMake command line with `-D`. Similar to the `cmake.configureSettings` in `settings.json`. | +|`env (Optional)` | A map of key-value string pairs specifying additional environment variables to set during CMake _configure_ (not build). These environment variables take precedence over environment variables from `settings.json`, the current [CMake kit](kits.md), and environment variables set by the system. | + +The options above are only valid under entries in the `choices` map. + +## How variants are applied + +A variant is a specific combination of one option from each setting. When CMake Tools executes the configure step, it uses the values from the currently active variant to determine the values to pass to the CMake process, as follows: + +1. Properties from all active options are merged. For `env` and `settings`, the objects themselves are merged. The merge order isn't specified, so conflicting properties in options will result in unspecified behavior. + +1. All `settings` from the chosen options are passed as `-D` arguments to the CMake process. + +1. The `buildType` is used for `CMAKE_BUILD_TYPE`, the `--config` flag for the build (for multi-configuration generators), and for the CTest `--config` flag. + +1. If `linkage` is `true`, `BUILD_SHARED_LIBS` is set to `ON`. If `linkage` is `false`, `BUILD_SHARED_LIBS` is set to `OFF`. If not specified, `BUILD_SHARED_LIBS` isn't set on the CMake command line. + +1. The environment variables from `env` are set for the CMake process. + +## Large variant file example + +Given the following variants file: + +```yaml + buildType: + default: debug + choices: + debug: + short: Debug + long: Emit debug information + buildType: Debug + release: + short: Release + long: Optimize generated code + buildType: Release + asan: + short: Asan + long: Instrument with Address Sanitizer + buildType: Asan + tsan: + short: Tsan + long: Instrument with Thread Sanitizer + buildType: Tsan + + linkage: + default: static + choices: + static: + short: Static + long: Create static libraries + linkage: static + shared: + short: Shared + long: Create shared libraries/DLLs + linkage: shared + + engine: + default: ogl + choices: + ogl: + short: OpenGL + long: OpenGL rendering + settings: + ENGINE: OpenGL + d3d: + short: Direct3D + long: Direct3D rendering + settings: + ENGINE: Direct3D + vulkan: + short: Vulkan + long: Vulkan rendering + setting: + ENGINE: Vulkan + software: + short: Software + long: Software rendering + setting: + ENGINE: Software + + network: + default: boost + choices: + boost: + short: Boost.Asio + long: Use Boost.Asio for networking + setting: + NETWORK: Boost + asio: + short: Asio + long: Use standalone-Asio for networking + setting: + NETWORK: Asio + net-ts: + short: NetTS + long: Use the C++ Networking TS for networking + setting: + NETWORK: net-ts +``` + +CMake Tools will present the cartesian product of all options. For the example above, it will produce 4 × 2 × 4 × 3 = 96 different variants: + +![Example of many variants](images/many_variants_example.png) + +This example creates many possible variants, but may not be unreasonable if you are building complex software. CMake Tools shows all of the possible combinations, and persists your selection between sessions. diff --git a/docs/variants.rst b/docs/variants.rst deleted file mode 100644 index e9449531b..000000000 --- a/docs/variants.rst +++ /dev/null @@ -1,244 +0,0 @@ -.. _variants: - -CMake Variants -############## - -CMake Tools introduces the concept of *CMake Variants*, a way to group together -and combine a common set of build options and give them a useful name. The main -interface for creating and building variants is ``cmake-variants.json``, or -``cmake-variants.yaml``. - -The idea of "variants" are separate from the concept of toolchains/toolsets, -which are handled via :ref:`Kits `. - -By default, if no variants file is present, CMake Tools will load four variants, -each corresponding to a default CMake build type: *Release*, *Debug*, -*MinSizeRel*, and *RelWithDebInfo*. Selecting one of these variants will -configure and build with that build type. - -.. note:: - CMake Tools does not presently respect ``CMAKE_CONFIGURATION_TYPES``. Only - the default four will be present. A custom variant file is required to load - these build types. - -For smaller or simple projects, providing a custom ``cmake-variants.yaml`` is -unnecessary, and the default CMake build types will work just fine. Large -projects with more complex configuration options may want to specify -additional build variants. - -The variants file can be placed in the root of the project directory, or in the -``.vscode`` subdirectory for the project. - -.. note:: - - CMake Tools provides a YAML validation schema, which is only checked in the - editor when using the *YAML Support by Red Hat* extension. - - You can use either ``cmake-variants.json`` or ``cmake-variants.yaml``. Both - will have the same end result. - - The examples in this page will use the YAML format, but everything can be - done in the JSON format as well. - -What does it look like? -======================= - -A simple two-setting ``cmake-variants.yaml`` might look like this: - -.. image:: res/variants_yaml.png - :align: center - -This file defines two variant **settings**: *buildType* and *useOpenGL*. They -each have two **options** defined by the ``choices`` key. A combination of the -**options** from a set of **settings** forms a **variant**. - -In total, the number of possible **variants** is defined by the cartesian -product of the possible choices. Two **settings** each with two **options** -creates *four* variants. When we ask to change the build type, CMake Tools will -present each possible combination in a quickpick: - -.. image:: res/custom_variant_selector.png - :align: center - -When a ``cmake-variants.json`` or ``cmake-variants.yaml`` file is present, the -options defined therein will replace the default set of variants CMake Tools -would otherwise present. This allows a project owner to define their own set of -common build configurations that can be distributed downstream. - -The Variant Schema -================== - -The root of the variants must be an object, where each key represents a -tweakable variant option. In the example above, we expose a ``buildType`` option -for what kind of ``CMAKE_BUILD_TYPE`` we want. We also expose a ``useOpenGL`` -that controls the ``ENABLE_OPENGL`` CMake option. - -Variant Settings -**************** - -Each *setting* in the variant is an object with only the following keys: - -``default`` - A string to set as the default *choice* for the variant option. The string - here must correspond to an option from ``choices``. - -``description`` - An optional string to describe what the option controls. CMake Tools ignores - this string. - -``choices`` - A mapping of possible options for the setting. A variant setting can have an - arbitrary number of possible options. See the section below on options. - -.. _variants.opts: - -Variant Options -*************** - -Variant options appear under the ``choices`` key for a variant setting. Each is -required to have an unique name, but the name itself is unimportant to CMake -Tools. - -A choice may specify any of the following options (the only requirement is the -``short``): - -``short`` - A short human-readable string to describe the option. - -``long`` (Optional) - A lengthier human-readable string to describe the option. - -``buildType`` (Optional) - An optional string to set for ``CMAKE_BUILD_TYPE`` when the option is - active. - -``linkage`` (Optional) - Either ``static`` or ``shared``. Sets the value of - ``CMAKE_BUILD_SHARED_LIBS``. This value is optional. - -``settings`` (Optional) - A map of arbitrary CMake cache options to pass via the CMake command line - with ``-D``. Similar to the ``cmake.configureSettings`` in - ``settings.json``. - -``env`` (Optional) - A map of key-value string pairs specifying additional environment variables - to set during CMake *configure* (not build). These environment variables - take precedence over environment variables from ``settings.json``, the - currently set :ref:`kit `, and environment variables set by the - system. - -The above options are only valid under entries in the ``choices`` map. - -How Variants Are Applied -======================== - -A variant is a specific combination of one *option* from each of the defined -*settings*. When CMake Tools executes the configure step, it will use the -values from the currently active variant to determine the values to pass to the -CMake process: - -#. Properties from all active options are merged. For ``env`` and ``settings``, - the objects themselves are merged. The merge order is unspecified, so - conflicting properties in options will result in unspecified behavior. -#. All ``settings`` from the chosen options are passed as ``-D`` arguments to - the CMake process. -#. The ``buildType`` is used for ``CMAKE_BUILD_TYPE``, the ``--config`` - flag for the build (For multi-conf generators), and for the CTest - ``--config`` flag. -#. If ``linkage`` is ``true``, ``BUILD_SHARED_LIBS`` is set to ``ON``. If - ``linkage`` is ``false``, ``BUILD_SHARED_LIBS`` is set to ``OFF``. If not - specified, ``BUILD_SHARED_LIBS`` will not be set on the CMake command line. -#. The environment variables from ``env`` are set for the CMake process. - -A Big Example -============= - -Suppose the following variants file: - -.. code-block:: yaml - - buildType: - default: debug - choices: - debug: - short: Debug - long: Emit debug information - buildType: Debug - release: - short: Release - long: Optimize generated code - buildType: Release - asan: - short: Asan - long: Instrument with Address Sanitizer - buildType: Asan - tsan: - short: Tsan - long: Instrument with Thread Sanitizer - buildType: Tsan - - linkage: - default: static - choices: - static: - short: Static - long: Create static libraries - linkage: static - shared: - short: Shared - long: Create shared libraries/DLLs - linkage: shared - - engine: - default: ogl - choices: - ogl: - short: OpenGL - long: OpenGL rendering - settings: - ENGINE: OpenGL - d3d: - short: Direct3D - long: Direct3D rendering - settings: - ENGINE: Direct3D - vulkan: - short: Vulkan - long: Vulkan rendering - setting: - ENGINE: Vulkan - software: - short: Software - long: Software rendering - setting: - ENGINE: Software - - network: - default: boost - choices: - boost: - short: Boost.Asio - long: Use Boost.Asio for networking - setting: - NETWORK: Boost - asio: - short: Asio - long: Use standalone-Asio for networking - setting: - NETWORK: Asio - net-ts: - short: NetTS - long: Use the C++ Networking TS for networking - setting: - NETWORK: net-ts - -CMake Tools will present the cartesian product of all options, meaning the -above will produce 4 × 2 × 4 × 3 = *ninety-six* different variants: - -.. image:: res/many_variants.png - :align: center - -Of course this is quite a lot of possible variants, but such is the way with -some complex software. CMake Tools will readily any helpfully show all -combinations, and persist the selection between sessions. \ No newline at end of file From 2572e470c1d987f996baa1d10ae1377b2d498d58 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 29 Jun 2020 11:54:52 -0700 Subject: [PATCH 04/26] Add note about doc consolidation (#1335) --- README.md | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 1b89010bf..fb7ae8083 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,18 @@ # CMake Tools -[CMake Tools](https://marketplace.visualstudio.com/items?itemName=vector-of-bool.cmake-tools) provides the native developer a full-featured, convenient, and -powerful workflow for CMake-based projects in Visual Studio Code. - -## Maintainer Changes (7/12/19) - -**vector-of-bool** has moved on to other things and Microsoft is now maintaining this extension. Thank you **vector-of-bool** for all of your hard work getting -this extension to where it is today! - -# Important Links: - -- [Getting started](https://vector-of-bool.github.io/docs/vscode-cmake-tools/getting_started.html) -- [Configuring a project](https://vector-of-bool.github.io/docs/vscode-cmake-tools/configuring.html) -- [Building a project](https://vector-of-bool.github.io/docs/vscode-cmake-tools/building.html) -- [Configuring CMake Tools](https://vector-of-bool.github.io/docs/vscode-cmake-tools/settings.html) -- [How do I...?](https://vector-of-bool.github.io/docs/vscode-cmake-tools/how_do_i.html) -- [FAQ](https://vector-of-bool.github.io/docs/vscode-cmake-tools/faq.html) -- [Read the online documentation](https://vector-of-bool.github.io/docs/vscode-cmake-tools/index.html) -- [Contributing](https://vector-of-bool.github.io/docs/vscode-cmake-tools/development.html) -- [Read the changelog](https://vector-of-bool.github.io/docs/vscode-cmake-tools/changelog.html) +[CMake Tools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) provides the native developer a full-featured, convenient, and powerful workflow for CMake-based projects in Visual Studio Code. + +## Important doc links + +- [CMake Tools quick start](https://code.visualstudio.com/docs/cpp/CMake-linux) +- [Configure a project](docs/how-to.md#configure-a-project) +- [Build a project](docs/how-to.md#build-a-project) +- [Debug a project](docs/how-to.md#debug-a-project) +- [Configure CMake Tools settings](docs/cmake-settings.md) +- [How to](docs/how-to.md) +- [FAQ](docs/faq.md) +- [Read the online documentation](docs/readme.md) +- [Contribute](docs/contribute.md) ## Issues? Questions? Feature requests? From f72b009cec173eb54cc337edd4a6c145323cbe3d Mon Sep 17 00:00:00 2001 From: "Bob Brown (DEVDIV)" Date: Mon, 29 Jun 2020 11:58:36 -0700 Subject: [PATCH 05/26] Add 'credits' section --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index fb7ae8083..bf48fd936 100644 --- a/README.md +++ b/README.md @@ -29,3 +29,7 @@ This project has adopted the [Microsoft Open Source Code of Conduct](https://ope ### Data/Telemetry This extension collects usage data and sends it to Microsoft to help improve our products and services. Collection of telemetry is controlled via the same setting provided by Visual Studio Code: `"telemetry.enableTelemetry"`. Read our [privacy statement](https://privacy.microsoft.com/en-us/privacystatement) to learn more. + +### Credits + +This project was started by @vector-of-bool and is now currently maintained by Microsoft. \ No newline at end of file From 82f741464123e70c6d1d6f2a4102b24c8aa9685e Mon Sep 17 00:00:00 2001 From: "Bob Brown (DEVDIV)" Date: Mon, 29 Jun 2020 12:00:31 -0700 Subject: [PATCH 06/26] Fix the credits link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bf48fd936..ac807529b 100644 --- a/README.md +++ b/README.md @@ -32,4 +32,4 @@ This extension collects usage data and sends it to Microsoft to help improve our ### Credits -This project was started by @vector-of-bool and is now currently maintained by Microsoft. \ No newline at end of file +This project was started by [@vector-of-bool](https://github.com/vector-of-bool) and is now currently maintained by Microsoft. \ No newline at end of file From b6884ea561c9e5030e760e2cc17962e295d912a3 Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Wed, 1 Jul 2020 12:18:03 -0400 Subject: [PATCH 07/26] Allow minor version of File API protocol to be greater than expected (#1343) Minor versions of the File API protocol are backwards compatible - they only add new fields, and don't remove or change the meaning of existing fields. Therefore, it is safe for the minor version to be greater than what we expect. --- src/drivers/cmakefileapi/api_helpers.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/drivers/cmakefileapi/api_helpers.ts b/src/drivers/cmakefileapi/api_helpers.ts index 491b58060..49fe7b094 100644 --- a/src/drivers/cmakefileapi/api_helpers.ts +++ b/src/drivers/cmakefileapi/api_helpers.ts @@ -58,7 +58,7 @@ export async function loadCacheContent(filename: string): Promise loadConfig(codeModelContent.paths, reply_path, config_element))); return {configurations} as CodeModelContent; -} \ No newline at end of file +} From dbe6ec16cd912a1d69090cb6c0665f3355ca14a5 Mon Sep 17 00:00:00 2001 From: csigs Date: Wed, 1 Jul 2020 09:23:51 -0700 Subject: [PATCH 08/26] Localization - Translated Strings (#1344) Co-authored-by: DevDiv Build Lab - Dev14 --- i18n/chs/package.i18n.json | 8 +++++++- i18n/chs/schemas/kits-schema.json.i18n.json | 1 + i18n/chs/src/cmake-tools.i18n.json | 13 ++++++++++--- i18n/chs/src/cpptools.i18n.json | 1 - .../drivers/cmakefileapi/api_helpers.i18n.json | 1 + .../chs/src/drivers/cmfileapi-driver.i18n.json | 9 +++++++++ i18n/chs/src/drivers/cms-driver.i18n.json | 3 ++- i18n/chs/src/drivers/driver.i18n.json | 1 + i18n/chs/src/extension.i18n.json | 8 ++++++-- i18n/chs/src/kit.i18n.json | 1 + i18n/chs/src/kitsController.i18n.json | 6 ++---- i18n/chs/src/status.i18n.json | 18 +++++++++--------- i18n/chs/src/tree.i18n.json | 4 +++- i18n/cht/package.i18n.json | 8 +++++++- i18n/cht/schemas/kits-schema.json.i18n.json | 1 + i18n/cht/src/cmake-tools.i18n.json | 13 ++++++++++--- i18n/cht/src/cpptools.i18n.json | 1 - .../drivers/cmakefileapi/api_helpers.i18n.json | 1 + .../cht/src/drivers/cmfileapi-driver.i18n.json | 9 +++++++++ i18n/cht/src/drivers/cms-driver.i18n.json | 3 ++- i18n/cht/src/drivers/driver.i18n.json | 1 + i18n/cht/src/extension.i18n.json | 8 ++++++-- i18n/cht/src/kit.i18n.json | 1 + i18n/cht/src/kitsController.i18n.json | 6 ++---- i18n/cht/src/status.i18n.json | 18 +++++++++--------- i18n/cht/src/tree.i18n.json | 4 +++- i18n/csy/package.i18n.json | 8 +++++++- i18n/csy/schemas/kits-schema.json.i18n.json | 1 + i18n/csy/src/cmake-tools.i18n.json | 13 ++++++++++--- i18n/csy/src/cpptools.i18n.json | 1 - .../drivers/cmakefileapi/api_helpers.i18n.json | 1 + .../csy/src/drivers/cmfileapi-driver.i18n.json | 9 +++++++++ i18n/csy/src/drivers/cms-driver.i18n.json | 3 ++- i18n/csy/src/drivers/driver.i18n.json | 1 + i18n/csy/src/extension.i18n.json | 8 ++++++-- i18n/csy/src/kit.i18n.json | 1 + i18n/csy/src/kitsController.i18n.json | 6 ++---- i18n/csy/src/status.i18n.json | 18 +++++++++--------- i18n/csy/src/tree.i18n.json | 4 +++- i18n/deu/package.i18n.json | 8 +++++++- i18n/deu/schemas/kits-schema.json.i18n.json | 1 + i18n/deu/src/cmake-tools.i18n.json | 13 ++++++++++--- i18n/deu/src/cpptools.i18n.json | 1 - .../drivers/cmakefileapi/api_helpers.i18n.json | 1 + .../deu/src/drivers/cmfileapi-driver.i18n.json | 9 +++++++++ i18n/deu/src/drivers/cms-driver.i18n.json | 3 ++- i18n/deu/src/drivers/driver.i18n.json | 1 + i18n/deu/src/extension.i18n.json | 8 ++++++-- i18n/deu/src/kit.i18n.json | 1 + i18n/deu/src/kitsController.i18n.json | 6 ++---- i18n/deu/src/status.i18n.json | 18 +++++++++--------- i18n/deu/src/tree.i18n.json | 4 +++- i18n/esn/package.i18n.json | 8 +++++++- i18n/esn/schemas/kits-schema.json.i18n.json | 1 + i18n/esn/src/cmake-tools.i18n.json | 13 ++++++++++--- i18n/esn/src/cpptools.i18n.json | 1 - .../drivers/cmakefileapi/api_helpers.i18n.json | 1 + .../esn/src/drivers/cmfileapi-driver.i18n.json | 9 +++++++++ i18n/esn/src/drivers/cms-driver.i18n.json | 3 ++- i18n/esn/src/drivers/driver.i18n.json | 1 + i18n/esn/src/extension.i18n.json | 8 ++++++-- i18n/esn/src/kit.i18n.json | 1 + i18n/esn/src/kitsController.i18n.json | 6 ++---- i18n/esn/src/status.i18n.json | 18 +++++++++--------- i18n/esn/src/tree.i18n.json | 4 +++- i18n/fra/package.i18n.json | 8 +++++++- i18n/fra/schemas/kits-schema.json.i18n.json | 1 + i18n/fra/src/cmake-tools.i18n.json | 13 ++++++++++--- i18n/fra/src/cpptools.i18n.json | 1 - .../drivers/cmakefileapi/api_helpers.i18n.json | 1 + .../fra/src/drivers/cmfileapi-driver.i18n.json | 9 +++++++++ i18n/fra/src/drivers/cms-driver.i18n.json | 3 ++- i18n/fra/src/drivers/driver.i18n.json | 1 + i18n/fra/src/extension.i18n.json | 8 ++++++-- i18n/fra/src/kit.i18n.json | 1 + i18n/fra/src/kitsController.i18n.json | 6 ++---- i18n/fra/src/status.i18n.json | 18 +++++++++--------- i18n/fra/src/tree.i18n.json | 4 +++- i18n/ita/package.i18n.json | 8 +++++++- i18n/ita/schemas/kits-schema.json.i18n.json | 1 + i18n/ita/src/cmake-tools.i18n.json | 13 ++++++++++--- i18n/ita/src/cpptools.i18n.json | 1 - .../drivers/cmakefileapi/api_helpers.i18n.json | 1 + .../ita/src/drivers/cmfileapi-driver.i18n.json | 9 +++++++++ i18n/ita/src/drivers/cms-driver.i18n.json | 3 ++- i18n/ita/src/drivers/driver.i18n.json | 1 + i18n/ita/src/extension.i18n.json | 8 ++++++-- i18n/ita/src/kit.i18n.json | 1 + i18n/ita/src/kitsController.i18n.json | 6 ++---- i18n/ita/src/status.i18n.json | 18 +++++++++--------- i18n/ita/src/tree.i18n.json | 4 +++- i18n/jpn/package.i18n.json | 8 +++++++- i18n/jpn/schemas/kits-schema.json.i18n.json | 1 + i18n/jpn/src/cmake-tools.i18n.json | 13 ++++++++++--- i18n/jpn/src/cpptools.i18n.json | 1 - .../drivers/cmakefileapi/api_helpers.i18n.json | 1 + .../jpn/src/drivers/cmfileapi-driver.i18n.json | 9 +++++++++ i18n/jpn/src/drivers/cms-driver.i18n.json | 3 ++- i18n/jpn/src/drivers/driver.i18n.json | 1 + i18n/jpn/src/extension.i18n.json | 8 ++++++-- i18n/jpn/src/kit.i18n.json | 1 + i18n/jpn/src/kitsController.i18n.json | 6 ++---- i18n/jpn/src/status.i18n.json | 18 +++++++++--------- i18n/jpn/src/tree.i18n.json | 4 +++- i18n/kor/package.i18n.json | 8 +++++++- i18n/kor/schemas/kits-schema.json.i18n.json | 1 + i18n/kor/src/cmake-tools.i18n.json | 13 ++++++++++--- i18n/kor/src/cpptools.i18n.json | 1 - .../drivers/cmakefileapi/api_helpers.i18n.json | 1 + .../kor/src/drivers/cmfileapi-driver.i18n.json | 9 +++++++++ i18n/kor/src/drivers/cms-driver.i18n.json | 3 ++- i18n/kor/src/drivers/driver.i18n.json | 1 + i18n/kor/src/extension.i18n.json | 8 ++++++-- i18n/kor/src/kit.i18n.json | 1 + i18n/kor/src/kitsController.i18n.json | 6 ++---- i18n/kor/src/status.i18n.json | 18 +++++++++--------- i18n/kor/src/tree.i18n.json | 4 +++- i18n/plk/package.i18n.json | 8 +++++++- i18n/plk/schemas/kits-schema.json.i18n.json | 1 + i18n/plk/src/cmake-tools.i18n.json | 13 ++++++++++--- i18n/plk/src/cpptools.i18n.json | 1 - .../drivers/cmakefileapi/api_helpers.i18n.json | 1 + .../plk/src/drivers/cmfileapi-driver.i18n.json | 9 +++++++++ i18n/plk/src/drivers/cms-driver.i18n.json | 3 ++- i18n/plk/src/drivers/driver.i18n.json | 1 + i18n/plk/src/extension.i18n.json | 8 ++++++-- i18n/plk/src/kit.i18n.json | 1 + i18n/plk/src/kitsController.i18n.json | 6 ++---- i18n/plk/src/status.i18n.json | 18 +++++++++--------- i18n/plk/src/tree.i18n.json | 4 +++- i18n/ptb/package.i18n.json | 8 +++++++- i18n/ptb/schemas/kits-schema.json.i18n.json | 1 + i18n/ptb/src/cmake-tools.i18n.json | 13 ++++++++++--- i18n/ptb/src/cpptools.i18n.json | 1 - .../drivers/cmakefileapi/api_helpers.i18n.json | 1 + .../ptb/src/drivers/cmfileapi-driver.i18n.json | 9 +++++++++ i18n/ptb/src/drivers/cms-driver.i18n.json | 3 ++- i18n/ptb/src/drivers/driver.i18n.json | 1 + i18n/ptb/src/extension.i18n.json | 8 ++++++-- i18n/ptb/src/kit.i18n.json | 1 + i18n/ptb/src/kitsController.i18n.json | 6 ++---- i18n/ptb/src/status.i18n.json | 18 +++++++++--------- i18n/ptb/src/tree.i18n.json | 4 +++- i18n/rus/package.i18n.json | 8 +++++++- i18n/rus/schemas/kits-schema.json.i18n.json | 1 + i18n/rus/src/cmake-tools.i18n.json | 13 ++++++++++--- i18n/rus/src/cpptools.i18n.json | 1 - .../drivers/cmakefileapi/api_helpers.i18n.json | 1 + .../rus/src/drivers/cmfileapi-driver.i18n.json | 9 +++++++++ i18n/rus/src/drivers/cms-driver.i18n.json | 3 ++- i18n/rus/src/drivers/driver.i18n.json | 1 + i18n/rus/src/extension.i18n.json | 8 ++++++-- i18n/rus/src/kit.i18n.json | 1 + i18n/rus/src/kitsController.i18n.json | 6 ++---- i18n/rus/src/status.i18n.json | 18 +++++++++--------- i18n/rus/src/tree.i18n.json | 4 +++- i18n/trk/package.i18n.json | 8 +++++++- i18n/trk/schemas/kits-schema.json.i18n.json | 1 + i18n/trk/src/cmake-tools.i18n.json | 13 ++++++++++--- i18n/trk/src/cpptools.i18n.json | 1 - .../drivers/cmakefileapi/api_helpers.i18n.json | 1 + .../trk/src/drivers/cmfileapi-driver.i18n.json | 9 +++++++++ i18n/trk/src/drivers/cms-driver.i18n.json | 3 ++- i18n/trk/src/drivers/driver.i18n.json | 1 + i18n/trk/src/extension.i18n.json | 8 ++++++-- i18n/trk/src/kit.i18n.json | 1 + i18n/trk/src/kitsController.i18n.json | 6 ++---- i18n/trk/src/status.i18n.json | 18 +++++++++--------- i18n/trk/src/tree.i18n.json | 4 +++- 169 files changed, 676 insertions(+), 286 deletions(-) create mode 100644 i18n/chs/src/drivers/cmfileapi-driver.i18n.json create mode 100644 i18n/cht/src/drivers/cmfileapi-driver.i18n.json create mode 100644 i18n/csy/src/drivers/cmfileapi-driver.i18n.json create mode 100644 i18n/deu/src/drivers/cmfileapi-driver.i18n.json create mode 100644 i18n/esn/src/drivers/cmfileapi-driver.i18n.json create mode 100644 i18n/fra/src/drivers/cmfileapi-driver.i18n.json create mode 100644 i18n/ita/src/drivers/cmfileapi-driver.i18n.json create mode 100644 i18n/jpn/src/drivers/cmfileapi-driver.i18n.json create mode 100644 i18n/kor/src/drivers/cmfileapi-driver.i18n.json create mode 100644 i18n/plk/src/drivers/cmfileapi-driver.i18n.json create mode 100644 i18n/ptb/src/drivers/cmfileapi-driver.i18n.json create mode 100644 i18n/rus/src/drivers/cmfileapi-driver.i18n.json create mode 100644 i18n/trk/src/drivers/cmfileapi-driver.i18n.json diff --git a/i18n/chs/package.i18n.json b/i18n/chs/package.i18n.json index eccd9a7a4..a2bb06652 100644 --- a/i18n/chs/package.i18n.json +++ b/i18n/chs/package.i18n.json @@ -104,13 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "可在其中安装 Emscripten 的目录。", "cmake-tools.configuration.cmake.copyCompileCommands.description": "成功配置后将 compile_commands.json 复制到此位置。", "cmake-tools.configuration.cmake.configureOnOpen.description": "在 CMake 项目目录打开时自动对其进行配置。", - "cmake-tools.configuration.cmake.useCMakeServer.description": "启用 CMake 服务器。", + "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "用于在扩展和 CMake 之间进行通信的协议", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "运行 CMake 命令时,请勿使用工具包环境变量。", "cmake-tools.configuration.cmake.buildTask.description": "使用 tasks.json 生成,而非使用内部进程。", "cmake-tools.configuration.cmake.outputLogEncoding.description": "来自外部命令的输出的编码(例如 cmake -- build)。", "cmake-tools.configuration.cmake.enableTraceLogging.description": "对文件和控制台启用跟踪日志记录(噪音很大)。", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "自动选择活动文件夹", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", "cmake-tools.configuration.views.cmake.folders.description": "文件夹", "cmake-tools.configuration.views.cmake.outline.description": "项目大纲" } \ No newline at end of file diff --git a/i18n/chs/schemas/kits-schema.json.i18n.json b/i18n/chs/schemas/kits-schema.json.i18n.json index 5c53fbb08..0ee85e991 100644 --- a/i18n/chs/schemas/kits-schema.json.i18n.json +++ b/i18n/chs/schemas/kits-schema.json.i18n.json @@ -12,6 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "工具链文件的路径", "schemas/kits-schema.json.items.properties.visualStudio": "Visual Studio 产品的名称", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "体系结构到目标", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "环境变量的值", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "CMake 设置的值", "schemas/kits-schema.json.items.properties.preferredGenerator": "为此工具包设置首选的 CMake 生成器", diff --git a/i18n/chs/src/cmake-tools.i18n.json b/i18n/chs/src/cmake-tools.i18n.json index 2717bd5fd..bd88e31c0 100644 --- a/i18n/chs/src/cmake-tools.i18n.json +++ b/i18n/chs/src/cmake-tools.i18n.json @@ -12,9 +12,12 @@ "configuration.already.in.progress": "配置已在进行中。", "task.already.running": "CMake 任务已在运行。请先停止该任务然后再尝试运行新的 CMake 任务。", "no.source.directory.found": "没有打开的源目录", - "quickstart.cmake.project": "快速启动新的 CMake 项目", - "edit.setting": "编辑 \"cmake.sourceDirectory\" 设置", - "missing.cmakelists": "在文件夹“{0}”的根中找不到 CMakeLists.txt", + "quickstart.cmake.project": "Create", + "edit.setting": "Locate", + "ignore.activation": "Don't show again", + "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", + "reload.window": "Reload Window", + "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", "starting.cmake.driver": "正在启动 CMake 驱动程序", "bad.cmake.executable": "CMake 可执行文件“{0}”不正确。", "switch.to.serverapi": "在低于 {0} 的版本中不支持 CMake 文件与 API (file-api)通信模式。正在切换到 CMake 服务器通信模式。", @@ -26,6 +29,9 @@ "second.phase.init": "正在启动 CMakeTools 第二阶段初始化", "active.build.variant.changed": "活动的生成变量已更改", "changing.build.variant": "正在更改生成变量", + "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", + "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", + "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", "injecting.new.kit": "将新的工具包注入 CMake 驱动程序", "reloading.status": "正在重新加载...", "unable.to.set.kit": "无法设置工具包“{0}”。", @@ -58,6 +64,7 @@ "cannot.configure.no.kit": "无法配置: 没有为此 CMake 工具激活任何工具包", "waiting.on.variant": "正在等待变量选择", "no.variant.abort": "未选择任何变量。中止配置", + "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", "cmake.drive.died.during.tasksbuildcommend": "CMake 驱动程序在 tasksBuildCommand 期间终止", "run.build": "正在生成文件夹: {0}", "unable.to.configure": "生成失败: 无法配置项目", diff --git a/i18n/chs/src/cpptools.i18n.json b/i18n/chs/src/cpptools.i18n.json index 55e9da4d1..b9f09710d 100644 --- a/i18n/chs/src/cpptools.i18n.json +++ b/i18n/chs/src/cpptools.i18n.json @@ -9,6 +9,5 @@ "unknown.control.gflag.c": "C 标准控件标志未知: {0}", "unknown.control.gflag": "未知标准控制标志: {0}", "unknown language": "未知语言: {0}", - "method.not.implemented": "方法未实现。", "path.not.found.in.cmake.cache": "在 CMake 缓存中找不到适用于一个或多个源文件的编译器的路径。如果使用工具链文件,这可能意味着在设置 C 和/或 C++ 编译器路径时需要指定缓存选项" } \ No newline at end of file diff --git a/i18n/chs/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/chs/src/drivers/cmakefileapi/api_helpers.i18n.json index 87221d0bc..4a98e0282 100644 --- a/i18n/chs/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/chs/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "failed.writing.to.file": "Failed writing to file {0}", "cache.object.version": "cmake-file-api 的缓存对象版本({0}.{1})不是预期版本。应为 ({2}.{3})。IntelliSense 配置可能不正确。", "cache.entry.unknowntype": "未知的缓存条目类型: {0}。", "code.model.version": "cmake-file-api 的代码模型版本({0}.{1})不是预期版本。应为 ({2}.{3})。IntelliSense 配置可能不正确。" diff --git a/i18n/chs/src/drivers/cmfileapi-driver.i18n.json b/i18n/chs/src/drivers/cmfileapi-driver.i18n.json new file mode 100644 index 000000000..2ecf56655 --- /dev/null +++ b/i18n/chs/src/drivers/cmfileapi-driver.i18n.json @@ -0,0 +1,9 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "removing": "Removing {0}", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." +} \ No newline at end of file diff --git a/i18n/chs/src/drivers/cms-driver.i18n.json b/i18n/chs/src/drivers/cms-driver.i18n.json index c6d7b22b6..8b3754722 100644 --- a/i18n/chs/src/drivers/cms-driver.i18n.json +++ b/i18n/chs/src/drivers/cms-driver.i18n.json @@ -10,5 +10,6 @@ "found.no.matching.code.model": "找不到适用于当前生成类型的匹配代码模型。这不应该发生", "build.all.target": "用于生成所有可用目标的特殊目标", "install.all.target": "用于安装所有可用目标的特殊目标", - "utility.target": "实用工具目标" + "utility.target": "实用工具目标", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." } \ No newline at end of file diff --git a/i18n/chs/src/drivers/driver.i18n.json b/i18n/chs/src/drivers/driver.i18n.json index 364392266..99c89c8ef 100644 --- a/i18n/chs/src/drivers/driver.i18n.json +++ b/i18n/chs/src/drivers/driver.i18n.json @@ -17,6 +17,7 @@ "trying.to.detect.generator": "正在尝试检测系统支持的生成器", "start.configure": "开始配置", "cmake.flags.are": "CMake 标志为 {0}", + "configure.failed": "Failed to configure project", "no.kit.is.set": "未设置任何工具包!", "using.compilers.in.for.configure": "正在使用 {0} 中的编译器进行配置", "using.cmake.toolchain.for.configure": "正在使用 CMake 工具链 {0} 进行配置", diff --git a/i18n/chs/src/extension.i18n.json b/i18n/chs/src/extension.i18n.json index a5645bcf8..1f26e8254 100644 --- a/i18n/chs/src/extension.i18n.json +++ b/i18n/chs/src/extension.i18n.json @@ -10,10 +10,14 @@ "yes.button": "是", "not.now.button": "暂不处理", "always.configure.on.open": "始终在打开时配置项目?", - "never.configure.on.open": "是否在打开时永不配置项目?", - "for.this.workspace.button": "对于此工作区", + "never.configure.on.open": "Configure projects on opening?", + "no.button": "否", + "never.button": "Never", + "never.for.this.workspace.button": "Not this workspace", "persist.config.on.open.setting": "保留“打开即配置”设置", "configuring.workspace.on.open": "正在打开的 {0} 上配置工作区", + "configure.now.button": "Configure Now", + "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", "update.code.model.for.cpptools": "更新 cpptools 的代码模型", "filed.to.open.cache.file.on.code.model.update": "未能在代码模型更新时打开 CMake 缓存文件", "opening.text.editor.for": "正在打开适用于 {0} 的文本编辑器", diff --git a/i18n/chs/src/kit.i18n.json b/i18n/chs/src/kit.i18n.json index b3e62ec7a..dd23246b1 100644 --- a/i18n/chs/src/kit.i18n.json +++ b/i18n/chs/src/kit.i18n.json @@ -34,6 +34,7 @@ "scanning.for.kits": "正在扫描工具包", "scanning.for.cmake.kits": "正在扫描 CMake 工具包...", "found.kit": "已找到工具包: {0}", + "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", "kit.for.toolchain.file": "适用于工具链文件 {0} 的工具包", "using.compilers.for": "将编译器用于 {0} ({1} 体系结构)", "using.compilers": "使用编译器: {0}", diff --git a/i18n/chs/src/kitsController.i18n.json b/i18n/chs/src/kitsController.i18n.json index 29f80225a..e8a8dd708 100644 --- a/i18n/chs/src/kitsController.i18n.json +++ b/i18n/chs/src/kitsController.i18n.json @@ -11,12 +11,10 @@ "unsetting.kit": "正在取消设置工具包", "loading.kit": "正在加载工具包 {0}", "invalid.only.kit": "唯一的工具包无效。应找到“{0}”", - "scan.for.kits.button": "扫描工具包", - "do.not.use.kit.button": "请勿使用工具包", - "close.button": "关闭", - "no.kits.available": "没有可用的 CMake 工具包。你要执行什么操作?", + "already.checking.kits": "Already checking kits. Please try again later.", "start.selection.of.kits": "开始选择工具包。已找到 {0} 个工具包。", "opening.kit.selection": "正在打开工具包选项快速选择", + "scan.for.kits.button": "扫描工具包", "unspecified.kit.name": "未指定", "select.a.kit.placeholder": "为 {0} 选择工具包", "user.cancelled.kit.selection": "用户已取消工具包选择", diff --git a/i18n/chs/src/status.i18n.json b/i18n/chs/src/status.i18n.json index d3c4dbde1..6c32d02f3 100644 --- a/i18n/chs/src/status.i18n.json +++ b/i18n/chs/src/status.i18n.json @@ -4,22 +4,22 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "active.folder.auto.select.tooltip": "活动文件夹", - "active.folder.tooltip": "选择活动文件夹", + "click.to.select.workspace.tooltip": "Click to select the active folder", "unconfigured": "未配置", - "loading.status": "正在加载...", "click.to.select.variant.tooltip": "单击可选择当前的生成变量", + "loading.status": "正在加载...", "click.to.change.kit.tooltip": "单击可更改活动的工具包", + "no.active.kit": "无活动工具包", + "no.kit.selected": "未选择任何工具包", "set.active.target.tooltip": "设置要生成的活动目标", - "run.ctest.tests.tooltip": "运行 CTest 测试", - "launch.debugger.tooltip": "启动所选目标的调试程序", "select.target.tooltip": "选择要启动的目标", - "debug": "调试", + "launch.debugger.tooltip": "启动所选目标的调试程序", + "launch.tooltip": "Launch the selected target in the terminal window", + "run.ctest.tests.tooltip": "运行 CTest 测试", "run.ctest": "运行 CTest", "test.passing": "{0} 项测试通过/共 {1} 项", "tests.passing": "{0} 项测试通过/共 {1} 项", - "stop": "停止", + "build.tooltip": "Build the selected target", "build": "生成", - "no.kit.selected": "未选择任何工具包", - "no.active.kit": "无活动工具包" + "stop": "停止" } \ No newline at end of file diff --git a/i18n/chs/src/tree.i18n.json b/i18n/chs/src/tree.i18n.json index 1c34ba378..8c079ae6b 100644 --- a/i18n/chs/src/tree.i18n.json +++ b/i18n/chs/src/tree.i18n.json @@ -14,6 +14,8 @@ "item.render.issue": "呈现此项目时出现问题。这是 bug", "empty.project": "空项目", "update.project.with.mismatch": "更新具有不匹配的名称属性的项目", - "error.update.code.model.on.nonexist.folder": "正在对尚未加载的文件夹更新代码模型", + "workspace.active": "Active Workspace", + "workspace": "Workspace", + "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", "error.rendering.children.nodes": "呈现子节点时出错" } \ No newline at end of file diff --git a/i18n/cht/package.i18n.json b/i18n/cht/package.i18n.json index 5146d4538..7f29109b4 100644 --- a/i18n/cht/package.i18n.json +++ b/i18n/cht/package.i18n.json @@ -104,13 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "安裝 Emscripten 的目錄。", "cmake-tools.configuration.cmake.copyCompileCommands.description": "組態成功之後,將 compile_commands.json 複製到此位置。", "cmake-tools.configuration.cmake.configureOnOpen.description": "開啟 CMake 專案目錄時自動進行組態。", - "cmake-tools.configuration.cmake.useCMakeServer.description": "啟用 CMake 伺服器。", + "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "用於在延伸模組與 CMake 之間通訊的通訊協定", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "執行 CMake 命令時,不使用套件環境變數。", "cmake-tools.configuration.cmake.buildTask.description": "使用 tasks.json 而非內部處理序的組建。", "cmake-tools.configuration.cmake.outputLogEncoding.description": "外部命令輸出的編譯 (例如 cmake -- build)。", "cmake-tools.configuration.cmake.enableTraceLogging.description": "為檔案及主控台啟用追蹤記錄 (雜訊非常多)。", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "自動選取作用中的資料夾", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", "cmake-tools.configuration.views.cmake.folders.description": "資料夾", "cmake-tools.configuration.views.cmake.outline.description": "專案大綱" } \ No newline at end of file diff --git a/i18n/cht/schemas/kits-schema.json.i18n.json b/i18n/cht/schemas/kits-schema.json.i18n.json index bea2b76bb..4953d3497 100644 --- a/i18n/cht/schemas/kits-schema.json.i18n.json +++ b/i18n/cht/schemas/kits-schema.json.i18n.json @@ -12,6 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "工具鏈檔案路徑", "schemas/kits-schema.json.items.properties.visualStudio": "Visual Studio 產品名稱", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "要設為目標的架構", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "環境變數的值", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "CMake 設定的值", "schemas/kits-schema.json.items.properties.preferredGenerator": "設定此套件的慣用 CMake 產生器", diff --git a/i18n/cht/src/cmake-tools.i18n.json b/i18n/cht/src/cmake-tools.i18n.json index de8a103b3..24d3cd57d 100644 --- a/i18n/cht/src/cmake-tools.i18n.json +++ b/i18n/cht/src/cmake-tools.i18n.json @@ -12,9 +12,12 @@ "configuration.already.in.progress": "已在設定。", "task.already.running": "CMake 工作已在執行。請先停止,再嘗試執行新的 CMake 工作。", "no.source.directory.found": "您未開啟任何來源目錄", - "quickstart.cmake.project": "快速上手新的 CMake 專案", - "edit.setting": "編輯 'cmake.sourceDirectory' 設定", - "missing.cmakelists": "在資料夾 '{0}' 的根中,找不到 CMakeLists.txt", + "quickstart.cmake.project": "Create", + "edit.setting": "Locate", + "ignore.activation": "Don't show again", + "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", + "reload.window": "Reload Window", + "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", "starting.cmake.driver": "正在啟動 CMake 驅動程式", "bad.cmake.executable": "錯誤的 CMake 可執行檔 \"{0}\"。", "switch.to.serverapi": "{0} 之前的版本,不支援 CMake 的檔案對 api 通訊模式。正在切換到 CMake 伺服器通訊模式。", @@ -26,6 +29,9 @@ "second.phase.init": "正在啟動 CMakeTools 第二階段初始化", "active.build.variant.changed": "已變更使用中的建置變化", "changing.build.variant": "正在變更建置變化", + "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", + "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", + "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", "injecting.new.kit": "正在將新套件插入 CMake 驅動程式", "reloading.status": "正在重新載入...", "unable.to.set.kit": "無法設定套件 \"{0}\"。", @@ -58,6 +64,7 @@ "cannot.configure.no.kit": "無法設定: 此 CMake 工具沒有任何使用中的套件", "waiting.on.variant": "正在等候變化選取項目", "no.variant.abort": "未選取任何變化。中止設定", + "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", "cmake.drive.died.during.tasksbuildcommend": "CMake 驅動程式在 tasksBuildCommand 期間已終止", "run.build": "正在建置資料夾: {0}", "unable.to.configure": "建置失敗: 無法設定專案", diff --git a/i18n/cht/src/cpptools.i18n.json b/i18n/cht/src/cpptools.i18n.json index a006441f1..6828563c6 100644 --- a/i18n/cht/src/cpptools.i18n.json +++ b/i18n/cht/src/cpptools.i18n.json @@ -9,6 +9,5 @@ "unknown.control.gflag.c": "未知的 C 標準控制旗標: {0}", "unknown.control.gflag": "未知的標準控制旗標: {0}", "unknown language": "未知的語言: {0}", - "method.not.implemented": "方法未實作。", "path.not.found.in.cmake.cache": "在 CMake 快取中找不到一或多個來源檔案的編譯器路徑。如果您目前使用工具鏈檔案,這可能意味著您必須在設定 C 和 (或) C++ 編譯器路徑時指定 CACHE 選項" } \ No newline at end of file diff --git a/i18n/cht/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/cht/src/drivers/cmakefileapi/api_helpers.i18n.json index d3bd47c89..a60e4860c 100644 --- a/i18n/cht/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/cht/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "failed.writing.to.file": "Failed writing to file {0}", "cache.object.version": "cmake-file-api 的快取物件版本 ({0}.{1}) 不符預期,其應為 ({2}.{3})。IntelliSense 組態可能不正確。", "cache.entry.unknowntype": "未知的快取項目類型: {0}。", "code.model.version": "cmake-file-api 的程式碼模型版本 ({0}.{1}) 不符預期,其應為 ({2}.{3})。IntelliSense 組態可能不正確。" diff --git a/i18n/cht/src/drivers/cmfileapi-driver.i18n.json b/i18n/cht/src/drivers/cmfileapi-driver.i18n.json new file mode 100644 index 000000000..2ecf56655 --- /dev/null +++ b/i18n/cht/src/drivers/cmfileapi-driver.i18n.json @@ -0,0 +1,9 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "removing": "Removing {0}", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." +} \ No newline at end of file diff --git a/i18n/cht/src/drivers/cms-driver.i18n.json b/i18n/cht/src/drivers/cms-driver.i18n.json index 7898f28cf..b79d02359 100644 --- a/i18n/cht/src/drivers/cms-driver.i18n.json +++ b/i18n/cht/src/drivers/cms-driver.i18n.json @@ -10,5 +10,6 @@ "found.no.matching.code.model": "找不到與目前組建類型相符的程式碼模型。不可能發生這種情況", "build.all.target": "用來建置所有可用目標的特殊目標", "install.all.target": "用來安裝所有可用目標的特殊目標", - "utility.target": "公用程式目標" + "utility.target": "公用程式目標", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." } \ No newline at end of file diff --git a/i18n/cht/src/drivers/driver.i18n.json b/i18n/cht/src/drivers/driver.i18n.json index b2b835dd3..e30d4a8dc 100644 --- a/i18n/cht/src/drivers/driver.i18n.json +++ b/i18n/cht/src/drivers/driver.i18n.json @@ -17,6 +17,7 @@ "trying.to.detect.generator": "正在嘗試偵測系統支援的產生器", "start.configure": "啟動設定", "cmake.flags.are": "CMake 旗標為 {0}", + "configure.failed": "Failed to configure project", "no.kit.is.set": "未設定套件!", "using.compilers.in.for.configure": "正在使用 {0} 中的編譯器進行設定", "using.cmake.toolchain.for.configure": "正在使用 CMake 工具鏈 {0} 進行設定", diff --git a/i18n/cht/src/extension.i18n.json b/i18n/cht/src/extension.i18n.json index cef4df3a0..e58fd683a 100644 --- a/i18n/cht/src/extension.i18n.json +++ b/i18n/cht/src/extension.i18n.json @@ -10,10 +10,14 @@ "yes.button": "是", "not.now.button": "現在不要", "always.configure.on.open": "永遠在開啟時設定專案嗎?", - "never.configure.on.open": "永不在開啟時設定專案嗎?", - "for.this.workspace.button": "適用於此工作區", + "never.configure.on.open": "Configure projects on opening?", + "no.button": "否", + "never.button": "Never", + "never.for.this.workspace.button": "Not this workspace", "persist.config.on.open.setting": "保存 config-on-open 設定", "configuring.workspace.on.open": "正在於開啟的 {0} 上設定工作區", + "configure.now.button": "Configure Now", + "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", "update.code.model.for.cpptools": "更新 cpptools 的程式碼模型", "filed.to.open.cache.file.on.code.model.update": "無法在程式碼模型更新時開啟 CMake 快取檔案", "opening.text.editor.for": "正在開啟 {0} 的文字編輯器", diff --git a/i18n/cht/src/kit.i18n.json b/i18n/cht/src/kit.i18n.json index 6a24e2383..aa548856c 100644 --- a/i18n/cht/src/kit.i18n.json +++ b/i18n/cht/src/kit.i18n.json @@ -34,6 +34,7 @@ "scanning.for.kits": "正在掃描套件", "scanning.for.cmake.kits": "正在掃描 CMake 套件...", "found.kit": "找到套件: {0}", + "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", "kit.for.toolchain.file": "工具鏈檔案 {0} 的套件", "using.compilers.for": "使用 {0} 的編譯器({1} 架構)", "using.compilers": "正在使用編譯器: {0}", diff --git a/i18n/cht/src/kitsController.i18n.json b/i18n/cht/src/kitsController.i18n.json index b3353d9b2..cb8079c49 100644 --- a/i18n/cht/src/kitsController.i18n.json +++ b/i18n/cht/src/kitsController.i18n.json @@ -11,12 +11,10 @@ "unsetting.kit": "正在取消設定套件", "loading.kit": "正在載入套件 {0}", "invalid.only.kit": "僅套件無效。應找到 '{0}'", - "scan.for.kits.button": "掃描套件", - "do.not.use.kit.button": "不要使用套件", - "close.button": "關閉", - "no.kits.available": "沒有可用的 CMake 套件。要執行什麼作業?", + "already.checking.kits": "Already checking kits. Please try again later.", "start.selection.of.kits": "開始選取套件。找到 {0} 個套件。", "opening.kit.selection": "正在開啟套件選取 QuickPick", + "scan.for.kits.button": "掃描套件", "unspecified.kit.name": "未指定", "select.a.kit.placeholder": "選取 {0} 的套件", "user.cancelled.kit.selection": "使用者已取消套件選取", diff --git a/i18n/cht/src/status.i18n.json b/i18n/cht/src/status.i18n.json index 953bf0bf6..5704ff946 100644 --- a/i18n/cht/src/status.i18n.json +++ b/i18n/cht/src/status.i18n.json @@ -4,22 +4,22 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "active.folder.auto.select.tooltip": "作用中的資料夾", - "active.folder.tooltip": "選取作用中的資料夾", + "click.to.select.workspace.tooltip": "Click to select the active folder", "unconfigured": "未設定", - "loading.status": "正在載入...", "click.to.select.variant.tooltip": "按一下以選取目前的建置變化", + "loading.status": "正在載入...", "click.to.change.kit.tooltip": "按一下以變更使用中的套件", + "no.active.kit": "沒有使用中的套件", + "no.kit.selected": "未選取任何套件", "set.active.target.tooltip": "設定要建置的使用中目標", - "run.ctest.tests.tooltip": "執行 CTest 測試", - "launch.debugger.tooltip": "為選取的目標啟動偵錯工具", "select.target.tooltip": "選取要啟動的目標", - "debug": "偵錯", + "launch.debugger.tooltip": "為選取的目標啟動偵錯工具", + "launch.tooltip": "Launch the selected target in the terminal window", + "run.ctest.tests.tooltip": "執行 CTest 測試", "run.ctest": "執行 CTest", "test.passing": "{0}/{1} 個測試通過", "tests.passing": "{0}/{1} 個測試通過", - "stop": "停止", + "build.tooltip": "Build the selected target", "build": "建置", - "no.kit.selected": "未選取任何套件", - "no.active.kit": "沒有使用中的套件" + "stop": "停止" } \ No newline at end of file diff --git a/i18n/cht/src/tree.i18n.json b/i18n/cht/src/tree.i18n.json index b82abc067..7c4b24267 100644 --- a/i18n/cht/src/tree.i18n.json +++ b/i18n/cht/src/tree.i18n.json @@ -14,6 +14,8 @@ "item.render.issue": "轉譯此項目時發生問題。這是 Bug", "empty.project": "空白專案", "update.project.with.mismatch": "更新具有不符名稱屬性的專案", - "error.update.code.model.on.nonexist.folder": "更新尚未載入之資料夾上的程式碼模型", + "workspace.active": "Active Workspace", + "workspace": "Workspace", + "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", "error.rendering.children.nodes": "轉譯子節點時發生錯誤" } \ No newline at end of file diff --git a/i18n/csy/package.i18n.json b/i18n/csy/package.i18n.json index 28f7df009..72a3adcd2 100644 --- a/i18n/csy/package.i18n.json +++ b/i18n/csy/package.i18n.json @@ -104,13 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Adresáře, ve kterých může být nainstalovaný Emscripten", "cmake-tools.configuration.cmake.copyCompileCommands.description": "Po úspěšné konfiguraci zkopírovat soubor compile_commands.json do tohoto umístění", "cmake-tools.configuration.cmake.configureOnOpen.description": "Automaticky konfigurovat adresáře projektu CMake při jejich otevření", - "cmake-tools.configuration.cmake.useCMakeServer.description": "Povolit server CMake", + "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "Protokol, pomocí kterého se komunikuje mezi rozšířením a nástrojem CMake", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "Při spouštění příkazů CMake nepoužívat proměnné prostředí sady", "cmake-tools.configuration.cmake.buildTask.description": "Sestavit pomocí souboru tasks.json místo interního procesu", "cmake-tools.configuration.cmake.outputLogEncoding.description": "Kódování výstupu z externích příkazů (např. cmake -- build)", "cmake-tools.configuration.cmake.enableTraceLogging.description": "Povolit protokolování trasování do souboru a konzoly (velmi vysoké objemy dat)", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "Vybrat aktivní složku automaticky", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", "cmake-tools.configuration.views.cmake.folders.description": "Složky", "cmake-tools.configuration.views.cmake.outline.description": "Osnova projektu" } \ No newline at end of file diff --git a/i18n/csy/schemas/kits-schema.json.i18n.json b/i18n/csy/schemas/kits-schema.json.i18n.json index 00fc4b504..233cfdd52 100644 --- a/i18n/csy/schemas/kits-schema.json.i18n.json +++ b/i18n/csy/schemas/kits-schema.json.i18n.json @@ -12,6 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Cesta k souboru sady nástrojů", "schemas/kits-schema.json.items.properties.visualStudio": "Název produktu Visual Studio", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Cílená architektura", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Hodnota pro proměnnou prostředí", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Hodnota pro nastavení CMake", "schemas/kits-schema.json.items.properties.preferredGenerator": "Nastavit preferovaný generátor CMake pro tuto sadu", diff --git a/i18n/csy/src/cmake-tools.i18n.json b/i18n/csy/src/cmake-tools.i18n.json index 15b7c07d4..13fd395ce 100644 --- a/i18n/csy/src/cmake-tools.i18n.json +++ b/i18n/csy/src/cmake-tools.i18n.json @@ -12,9 +12,12 @@ "configuration.already.in.progress": "Konfigurace už probíhá.", "task.already.running": "Úloha CMake je už spuštěná. Před pokusem o spuštění nové úlohy CMake ji zastavte.", "no.source.directory.found": "Nemáte otevřený zdrojový adresář.", - "quickstart.cmake.project": "Rychlý start nového projektu CMake", - "edit.setting": "Upravte nastavení cmake.sourceDirectory.", - "missing.cmakelists": "V kořenu složky {0} se nenašel soubor CMakeLists.txt.", + "quickstart.cmake.project": "Create", + "edit.setting": "Locate", + "ignore.activation": "Don't show again", + "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", + "reload.window": "Reload Window", + "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", "starting.cmake.driver": "Spouští se ovladač CMake.", "bad.cmake.executable": "Nesprávný spustitelný soubor nástrojů CMake {0}", "switch.to.serverapi": "Režim komunikace pomocí rozhraní API souborů CMake se ve verzích starších než {0} nepodporuje. Přepíná se na režim komunikace pomocí serveru CMake.", @@ -26,6 +29,9 @@ "second.phase.init": "Spouští se inicializace druhé fáze CMakeTools.", "active.build.variant.changed": "Změnila se aktivní varianta sestavení.", "changing.build.variant": "Mění se varianta sestavení.", + "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", + "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", + "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", "injecting.new.kit": "Vkládá se nová sada do ovladače CMake.", "reloading.status": "Opětovné načítání...", "unable.to.set.kit": "Nejde nastavit sadu {0}.", @@ -58,6 +64,7 @@ "cannot.configure.no.kit": "Nejde nakonfigurovat: Pro tyto nástroje CMake Tools není aktivní žádná sada.", "waiting.on.variant": "Čeká se na výběr varianty.", "no.variant.abort": "Není vybraná žádná varianta. Přerušte příkaz configure.", + "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", "cmake.drive.died.during.tasksbuildcommend": "Během operace tasksBuildCommand se ukončil ovladač CMake.", "run.build": "Sestavuje se složka: {0}", "unable.to.configure": "Sestavení se nepovedlo: projekt nejde nakonfigurovat", diff --git a/i18n/csy/src/cpptools.i18n.json b/i18n/csy/src/cpptools.i18n.json index e61247640..abe553960 100644 --- a/i18n/csy/src/cpptools.i18n.json +++ b/i18n/csy/src/cpptools.i18n.json @@ -9,6 +9,5 @@ "unknown.control.gflag.c": "Neznámý standardní řídicí příznak jazyka C: {0}", "unknown.control.gflag": "Neznámý standardní řídicí příznak: {0}", "unknown language": "Neznámý jazyk: {0}", - "method.not.implemented": "Metoda není implementovaná.", "path.not.found.in.cmake.cache": "Cesta ke kompilátoru pro jeden nebo více zdrojových souborů nebyla v mezipaměti CMake nalezena. Pokud používáte soubor sady nástrojů, pravděpodobně to znamená, že musíte zadat parametr CACHE, když nastavíte cestu kompilátoru jazyka C nebo C++." } \ No newline at end of file diff --git a/i18n/csy/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/csy/src/drivers/cmakefileapi/api_helpers.i18n.json index 984630a0a..b64b7d90b 100644 --- a/i18n/csy/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/csy/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "failed.writing.to.file": "Failed writing to file {0}", "cache.object.version": "Verze objektu mezipaměti ({0}.{1}) pro cmake-file-api se neočekává. Očekává se ({2}.{3}). Je možné, že konfigurace IntelliSense není správná.", "cache.entry.unknowntype": "Neznámý typ položky mezipaměti: {0}", "code.model.version": "Verze modelu kódu ({0}.{1}) pro cmake-file-api se neočekává. Očekává se ({2}.{3}). Je možné, že konfigurace IntelliSense není správná." diff --git a/i18n/csy/src/drivers/cmfileapi-driver.i18n.json b/i18n/csy/src/drivers/cmfileapi-driver.i18n.json new file mode 100644 index 000000000..2ecf56655 --- /dev/null +++ b/i18n/csy/src/drivers/cmfileapi-driver.i18n.json @@ -0,0 +1,9 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "removing": "Removing {0}", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." +} \ No newline at end of file diff --git a/i18n/csy/src/drivers/cms-driver.i18n.json b/i18n/csy/src/drivers/cms-driver.i18n.json index ff95312fa..3f528f88d 100644 --- a/i18n/csy/src/drivers/cms-driver.i18n.json +++ b/i18n/csy/src/drivers/cms-driver.i18n.json @@ -10,5 +10,6 @@ "found.no.matching.code.model": "Nenašel se žádný odpovídající model kódu pro aktuální typ sestavení. Nemělo by to být možné.", "build.all.target": "Speciální cíl umožňující sestavení všech dostupných cílů", "install.all.target": "Speciální cíl umožňující instalaci všech dostupných cílů", - "utility.target": "Cíl nástroje" + "utility.target": "Cíl nástroje", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." } \ No newline at end of file diff --git a/i18n/csy/src/drivers/driver.i18n.json b/i18n/csy/src/drivers/driver.i18n.json index bede9da1c..9feab73b1 100644 --- a/i18n/csy/src/drivers/driver.i18n.json +++ b/i18n/csy/src/drivers/driver.i18n.json @@ -17,6 +17,7 @@ "trying.to.detect.generator": "Probíhá pokus o zjištění generátoru podporovaného systémem.", "start.configure": "Spustit konfiguraci", "cmake.flags.are": "Příznaky CMake jsou {0}.", + "configure.failed": "Failed to configure project", "no.kit.is.set": "Není nastavená žádná sada!", "using.compilers.in.for.configure": "Používají se kompilátory v místě {0} pro konfiguraci.", "using.cmake.toolchain.for.configure": "Používá se sada nástrojů CMake {0} pro konfiguraci.", diff --git a/i18n/csy/src/extension.i18n.json b/i18n/csy/src/extension.i18n.json index f1e2b7648..ad0b137b1 100644 --- a/i18n/csy/src/extension.i18n.json +++ b/i18n/csy/src/extension.i18n.json @@ -10,10 +10,14 @@ "yes.button": "Ano", "not.now.button": "Teď ne", "always.configure.on.open": "Chcete vždycky konfigurovat projekty při otevření?", - "never.configure.on.open": "Nechcete nikdy konfigurovat projekty při otevření?", - "for.this.workspace.button": "Pro tento pracovní prostor", + "never.configure.on.open": "Configure projects on opening?", + "no.button": "Ne", + "never.button": "Never", + "never.for.this.workspace.button": "Not this workspace", "persist.config.on.open.setting": "Zachovat nastavení konfigurace při otevření", "configuring.workspace.on.open": "Konfiguruje se pracovní prostor při otvírání elementu {0}.", + "configure.now.button": "Configure Now", + "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", "update.code.model.for.cpptools": "Aktualizovat model kódu pro cpptools", "filed.to.open.cache.file.on.code.model.update": "Nepovedlo se otevřít soubor mezipaměti CMake při aktualizaci kódu modelu.", "opening.text.editor.for": "Spouští se textový editor pro {0}.", diff --git a/i18n/csy/src/kit.i18n.json b/i18n/csy/src/kit.i18n.json index 08e34c144..590b7596c 100644 --- a/i18n/csy/src/kit.i18n.json +++ b/i18n/csy/src/kit.i18n.json @@ -34,6 +34,7 @@ "scanning.for.kits": "Hledají se sady.", "scanning.for.cmake.kits": "Hledají se sady CMake...", "found.kit": "Nalezena sada: {0}", + "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", "kit.for.toolchain.file": "Sada pro soubor sady nástrojů {0}", "using.compilers.for": "Používají se kompilátory pro {0} (architektura {1}).", "using.compilers": "Používají se kompilátory: {0}", diff --git a/i18n/csy/src/kitsController.i18n.json b/i18n/csy/src/kitsController.i18n.json index 8ea5c9e41..61a24f815 100644 --- a/i18n/csy/src/kitsController.i18n.json +++ b/i18n/csy/src/kitsController.i18n.json @@ -11,12 +11,10 @@ "unsetting.kit": "Ruší se nastavení sady.", "loading.kit": "Načítá se sada {0}.", "invalid.only.kit": "Jediná neplatná sada. Očekávalo se nalezení elementu {0}.", - "scan.for.kits.button": "Vyhledat sady", - "do.not.use.kit.button": "Nepoužívat sadu", - "close.button": "Zavřít", - "no.kits.available": "Nejsou k dispozici žádné sady CMake. Co byste chtěli udělat?", + "already.checking.kits": "Already checking kits. Please try again later.", "start.selection.of.kits": "Začněte vybírat sady. Nalezené sady: {0}", "opening.kit.selection": "Otevírá se element QuickPick výběru sady.", + "scan.for.kits.button": "Vyhledat sady", "unspecified.kit.name": "Neurčeno", "select.a.kit.placeholder": "Vyberte sadu pro {0}.", "user.cancelled.kit.selection": "Uživatel zrušil výběr sady.", diff --git a/i18n/csy/src/status.i18n.json b/i18n/csy/src/status.i18n.json index e0fba5e52..0ff4da7ba 100644 --- a/i18n/csy/src/status.i18n.json +++ b/i18n/csy/src/status.i18n.json @@ -4,22 +4,22 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "active.folder.auto.select.tooltip": "Aktivní složka", - "active.folder.tooltip": "Vyberte aktivní složku.", + "click.to.select.workspace.tooltip": "Click to select the active folder", "unconfigured": "Nenakonfigurováno", - "loading.status": "Načítání...", "click.to.select.variant.tooltip": "Kliknutím vyberete variantu aktuálního sestavení.", + "loading.status": "Načítání...", "click.to.change.kit.tooltip": "Kliknutím změníte aktivní sadu.", + "no.active.kit": "Žádná aktivní sada", + "no.kit.selected": "Není vybraná žádná sada.", "set.active.target.tooltip": "Umožní nastavit aktivní cíl k sestavení.", - "run.ctest.tests.tooltip": "Spustí testy CTest.", - "launch.debugger.tooltip": "Spustí ladicí program pro vybraný cíl.", "select.target.tooltip": "Umožní vybrat cíl, který se má spustit.", - "debug": "Ladit", + "launch.debugger.tooltip": "Spustí ladicí program pro vybraný cíl.", + "launch.tooltip": "Launch the selected target in the terminal window", + "run.ctest.tests.tooltip": "Spustí testy CTest.", "run.ctest": "Spustit CTest", "test.passing": "Počet testů, které prošly: {0}/{1}", "tests.passing": "Počet testů, které prošly: {0}/{1}", - "stop": "Zastavit", + "build.tooltip": "Build the selected target", "build": "Build", - "no.kit.selected": "Není vybraná žádná sada.", - "no.active.kit": "Žádná aktivní sada" + "stop": "Zastavit" } \ No newline at end of file diff --git a/i18n/csy/src/tree.i18n.json b/i18n/csy/src/tree.i18n.json index 241b53484..5383d0eac 100644 --- a/i18n/csy/src/tree.i18n.json +++ b/i18n/csy/src/tree.i18n.json @@ -14,6 +14,8 @@ "item.render.issue": "Při vykreslování této položky došlo k problému. Toto je chyba.", "empty.project": "Prázdný projekt", "update.project.with.mismatch": "Aktualizovat projekt s neshodnou vlastností názvu", - "error.update.code.model.on.nonexist.folder": "Aktualizuje se model kódu ve složce, která ještě neexistuje?", + "workspace.active": "Active Workspace", + "workspace": "Workspace", + "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", "error.rendering.children.nodes": "Chyba při vykreslování podřízených uzlů" } \ No newline at end of file diff --git a/i18n/deu/package.i18n.json b/i18n/deu/package.i18n.json index 49b5fa4a5..f06490787 100644 --- a/i18n/deu/package.i18n.json +++ b/i18n/deu/package.i18n.json @@ -104,13 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Verzeichnisse, in denen Emscripten möglicherweise installiert ist.", "cmake-tools.configuration.cmake.copyCompileCommands.description": "Hiermit wird \"compile_commands.json\" nach erfolgreicher Konfiguration an diesen Speicherort kopiert.", "cmake-tools.configuration.cmake.configureOnOpen.description": "Hiermit werden CMake-Projektverzeichnisse beim Öffnen automatisch konfiguriert.", - "cmake-tools.configuration.cmake.useCMakeServer.description": "Hiermit wird CMake-Server aktiviert.", + "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "Das für die Kommunikation zwischen der Erweiterung und CMake verwendete Protokoll", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "Hiermit werden die Umgebungsvariablen des Kits beim Ausführen von CMake-Befehlen nicht verwendet.", "cmake-tools.configuration.cmake.buildTask.description": "Über \"tasks.json\" statt über internen Prozess erstellen", "cmake-tools.configuration.cmake.outputLogEncoding.description": "Codierung der Ausgabe von externen Befehlen (z. B.: cmake --build).", "cmake-tools.configuration.cmake.enableTraceLogging.description": "Hiermit wird die Ablaufverfolgungsprotokollierung in Datei und Konsole aktiviert (große Datenmenge).", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "Aktiven Ordner automatisch auswählen", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", "cmake-tools.configuration.views.cmake.folders.description": "Ordner", "cmake-tools.configuration.views.cmake.outline.description": "Projektgliederung" } \ No newline at end of file diff --git a/i18n/deu/schemas/kits-schema.json.i18n.json b/i18n/deu/schemas/kits-schema.json.i18n.json index aadaf31fe..c666d2a20 100644 --- a/i18n/deu/schemas/kits-schema.json.i18n.json +++ b/i18n/deu/schemas/kits-schema.json.i18n.json @@ -12,6 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Pfad zu einer Toolkettendatei", "schemas/kits-schema.json.items.properties.visualStudio": "Name des Visual Studio-Produkts", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Als Ziel zu verwendende Architektur", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Wert für die Umgebungsvariable", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Wert für die CMake-Einstellung", "schemas/kits-schema.json.items.properties.preferredGenerator": "Bevorzugten CMake-Generator für dieses Kit festlegen", diff --git a/i18n/deu/src/cmake-tools.i18n.json b/i18n/deu/src/cmake-tools.i18n.json index 765999bfe..4789c0c86 100644 --- a/i18n/deu/src/cmake-tools.i18n.json +++ b/i18n/deu/src/cmake-tools.i18n.json @@ -12,9 +12,12 @@ "configuration.already.in.progress": "Die Konfiguration wird bereits ausgeführt.", "task.already.running": "Ein CMake-Task wird bereits ausgeführt. Beenden Sie den Vorgang, bevor Sie einen neuen CMake-Task ausführen.", "no.source.directory.found": "Es ist kein Quellverzeichnis geöffnet.", - "quickstart.cmake.project": "Schnellstart für ein neues CMake-Projekt", - "edit.setting": "Einstellung \"cmake.sourceDirectory\" bearbeiten", - "missing.cmakelists": "\"CMakeLists.txt\" wurde im Stamm des Ordners \"{0}\" nicht gefunden.", + "quickstart.cmake.project": "Create", + "edit.setting": "Locate", + "ignore.activation": "Don't show again", + "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", + "reload.window": "Reload Window", + "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", "starting.cmake.driver": "CMake-Treiber wird gestartet.", "bad.cmake.executable": "Ungültige ausführbare CMake-Datei \"{0}\".", "switch.to.serverapi": "Der CMake-Kommunikationsmodus \"file-api\" wird in Versionen vor {0} nicht unterstützt. Es wird zum CMake-Serverkommunikationsmodus gewechselt.", @@ -26,6 +29,9 @@ "second.phase.init": "Die CMakeTools-Initialisierung der zweiten Phase wird gestartet.", "active.build.variant.changed": "Aktive Buildvariante geändert", "changing.build.variant": "Die Buildvariante wird geändert.", + "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", + "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", + "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", "injecting.new.kit": "Das neue Kit wird in den CMake-Treiber eingefügt.", "reloading.status": "Wird neu geladen...", "unable.to.set.kit": "Das Kit \"{0}\" kann nicht festgelegt werden.", @@ -58,6 +64,7 @@ "cannot.configure.no.kit": "Konfigurieren nicht möglich: Für diese CMake Tools-Instanz ist kein Kit aktiv.", "waiting.on.variant": "Warten auf Variantenauswahl", "no.variant.abort": "Keine Variante ausgewählt. Konfiguration abbrechen", + "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", "cmake.drive.died.during.tasksbuildcommend": "Der CMake-Treiber wurde während tasksBuildCommand beendet.", "run.build": "Ordner wird erstellt: {0}", "unable.to.configure": "Buildfehler: Das Projekt konnte nicht konfiguriert werden.", diff --git a/i18n/deu/src/cpptools.i18n.json b/i18n/deu/src/cpptools.i18n.json index 1953860d3..70b913e17 100644 --- a/i18n/deu/src/cpptools.i18n.json +++ b/i18n/deu/src/cpptools.i18n.json @@ -9,6 +9,5 @@ "unknown.control.gflag.c": "Unbekanntes C-Standardsteuerungsflag: {0}", "unknown.control.gflag": "Unbekanntes Standardsteuerungsflag: {0}", "unknown language": "Unbekannte Sprache: {0}", - "method.not.implemented": "Die Methode ist nicht implementiert.", "path.not.found.in.cmake.cache": "Für mindestens eine Quelldatei wurde der Pfad zum Compiler nicht im CMake-Cache gefunden. Wenn Sie eine Toolkettendatei verwenden, müssen Sie beim Festlegen des C- und/oder C++-Compilerpfads wahrscheinlich die CACHE-Option angeben." } \ No newline at end of file diff --git a/i18n/deu/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/deu/src/drivers/cmakefileapi/api_helpers.i18n.json index ec1104d2b..3de9f17ca 100644 --- a/i18n/deu/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/deu/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "failed.writing.to.file": "Failed writing to file {0}", "cache.object.version": "Unerwartete Cacheobjektversion ({0}.{1}) von cmake-file-api. Erwartet: ({2}.{3}). Möglicherweise ist die IntelliSense-Konfiguration falsch.", "cache.entry.unknowntype": "Unbekannter Cacheeintragstyp: \"{0}\".", "code.model.version": "Unerwartete Codemodellversion ({0}.{1}) von cmake-file-api. Erwartet: ({2}.{3}). Möglicherweise ist die IntelliSense-Konfiguration falsch." diff --git a/i18n/deu/src/drivers/cmfileapi-driver.i18n.json b/i18n/deu/src/drivers/cmfileapi-driver.i18n.json new file mode 100644 index 000000000..2ecf56655 --- /dev/null +++ b/i18n/deu/src/drivers/cmfileapi-driver.i18n.json @@ -0,0 +1,9 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "removing": "Removing {0}", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." +} \ No newline at end of file diff --git a/i18n/deu/src/drivers/cms-driver.i18n.json b/i18n/deu/src/drivers/cms-driver.i18n.json index e8856013e..8ff6341ad 100644 --- a/i18n/deu/src/drivers/cms-driver.i18n.json +++ b/i18n/deu/src/drivers/cms-driver.i18n.json @@ -10,5 +10,6 @@ "found.no.matching.code.model": "Es wurde kein übereinstimmendes Codemodell für den aktuellen Buildtyp gefunden. Dies ist eigentlich nicht möglich.", "build.all.target": "Ein spezielles Ziel zum Erstellen aller verfügbaren Ziele", "install.all.target": "Ein spezielles Ziel zum Installieren aller verfügbaren Ziele", - "utility.target": "Hilfsprogrammziel" + "utility.target": "Hilfsprogrammziel", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." } \ No newline at end of file diff --git a/i18n/deu/src/drivers/driver.i18n.json b/i18n/deu/src/drivers/driver.i18n.json index 31114378e..07ddd8f5a 100644 --- a/i18n/deu/src/drivers/driver.i18n.json +++ b/i18n/deu/src/drivers/driver.i18n.json @@ -17,6 +17,7 @@ "trying.to.detect.generator": "Es wird versucht, einen vom System unterstützten Generator zu ermitteln.", "start.configure": "Konfiguration starten", "cmake.flags.are": "CMake-Flags: {0}", + "configure.failed": "Failed to configure project", "no.kit.is.set": "Es wurde kein Kit festgelegt.", "using.compilers.in.for.configure": "Compiler in \"{0}\" werden für die Konfiguration verwendet.", "using.cmake.toolchain.for.configure": "CMake-Toolkette \"{0}\" wird zum Konfigurieren verwendet.", diff --git a/i18n/deu/src/extension.i18n.json b/i18n/deu/src/extension.i18n.json index aaa115152..40e08bc77 100644 --- a/i18n/deu/src/extension.i18n.json +++ b/i18n/deu/src/extension.i18n.json @@ -10,10 +10,14 @@ "yes.button": "Ja", "not.now.button": "Nicht jetzt", "always.configure.on.open": "Projekte beim Öffnen immer konfigurieren?", - "never.configure.on.open": "Projekte beim Öffnen nie konfigurieren?", - "for.this.workspace.button": "Für diesen Arbeitsbereich", + "never.configure.on.open": "Configure projects on opening?", + "no.button": "Nein", + "never.button": "Never", + "never.for.this.workspace.button": "Not this workspace", "persist.config.on.open.setting": "Einstellung \"config-on-open\" beibehalten", "configuring.workspace.on.open": "Arbeitsbereich wird beim Öffnen von {0} konfiguriert.", + "configure.now.button": "Configure Now", + "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", "update.code.model.for.cpptools": "Codemodell für cpptools aktualisieren", "filed.to.open.cache.file.on.code.model.update": "Fehler beim Öffnen der CMake-Cachedatei für das Codemodellupdate.", "opening.text.editor.for": "Der Text-Editor für \"{0}\" wird geöffnet.", diff --git a/i18n/deu/src/kit.i18n.json b/i18n/deu/src/kit.i18n.json index 9a22eb434..bcc8f9063 100644 --- a/i18n/deu/src/kit.i18n.json +++ b/i18n/deu/src/kit.i18n.json @@ -34,6 +34,7 @@ "scanning.for.kits": "Es wird nach Kits gesucht.", "scanning.for.cmake.kits": "Es wird nach CMake-Kits gesucht...", "found.kit": "Kit gefunden: {0}", + "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", "kit.for.toolchain.file": "Kit für Toolkettendatei \"{0}\"", "using.compilers.for": "Compiler für {0} werden verwendet ({1}-Architektur).", "using.compilers": "Compiler werden verwendet: {0}", diff --git a/i18n/deu/src/kitsController.i18n.json b/i18n/deu/src/kitsController.i18n.json index 73703e3a0..9f0600aaa 100644 --- a/i18n/deu/src/kitsController.i18n.json +++ b/i18n/deu/src/kitsController.i18n.json @@ -11,12 +11,10 @@ "unsetting.kit": "Die Einstellung des Kits wird aufgehoben.", "loading.kit": "Kit \"{0}\" wird geladen.", "invalid.only.kit": "Nur ungültiges Kit. Erwartet: {0}", - "scan.for.kits.button": "Nach Kits suchen", - "do.not.use.kit.button": "Kein Kit verwenden", - "close.button": "Schließen", - "no.kits.available": "Es sind keine CMake-Kits verfügbar. Wie möchten Sie vorgehen?", + "already.checking.kits": "Already checking kits. Please try again later.", "start.selection.of.kits": "Starten Sie die Auswahl der Kits. {0} Kits gefunden.", "opening.kit.selection": "QuickPick zur Kitauswahl wird geöffnet.", + "scan.for.kits.button": "Nach Kits suchen", "unspecified.kit.name": "Keine Angabe", "select.a.kit.placeholder": "Kit für \"{0}\" auswählen", "user.cancelled.kit.selection": "Vom Benutzer abgebrochene Kitauswahl", diff --git a/i18n/deu/src/status.i18n.json b/i18n/deu/src/status.i18n.json index d7cbe7150..7855ff942 100644 --- a/i18n/deu/src/status.i18n.json +++ b/i18n/deu/src/status.i18n.json @@ -4,22 +4,22 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "active.folder.auto.select.tooltip": "Aktiver Ordner", - "active.folder.tooltip": "Aktiven Ordner auswählen", + "click.to.select.workspace.tooltip": "Click to select the active folder", "unconfigured": "Nicht konfiguriert", - "loading.status": "Wird geladen...", "click.to.select.variant.tooltip": "Klicken Sie, um die aktuelle Buildvariante auszuwählen.", + "loading.status": "Wird geladen...", "click.to.change.kit.tooltip": "Klicken Sie, um das aktive Kit zu ändern.", + "no.active.kit": "Kein aktives Kit.", + "no.kit.selected": "Kein Kit ausgewählt.", "set.active.target.tooltip": "Aktives Ziel auf Build festlegen", - "run.ctest.tests.tooltip": "CTest-Tests ausführen", - "launch.debugger.tooltip": "Debugger für das ausgewählte Ziel starten", "select.target.tooltip": "Zu startendes Ziel auswählen", - "debug": "Debuggen", + "launch.debugger.tooltip": "Debugger für das ausgewählte Ziel starten", + "launch.tooltip": "Launch the selected target in the terminal window", + "run.ctest.tests.tooltip": "CTest-Tests ausführen", "run.ctest": "CTest ausführen", "test.passing": "{0}/{1} Test erfolgreich", "tests.passing": "{0}/{1} Tests erfolgreich", - "stop": "Beenden", + "build.tooltip": "Build the selected target", "build": "Build", - "no.kit.selected": "Kein Kit ausgewählt.", - "no.active.kit": "Kein aktives Kit." + "stop": "Beenden" } \ No newline at end of file diff --git a/i18n/deu/src/tree.i18n.json b/i18n/deu/src/tree.i18n.json index e285494e6..53564ace7 100644 --- a/i18n/deu/src/tree.i18n.json +++ b/i18n/deu/src/tree.i18n.json @@ -14,6 +14,8 @@ "item.render.issue": "Problem beim Rendern dieses Elements. Dies ist ein Fehler.", "empty.project": "Leeres Projekt", "update.project.with.mismatch": "Projekt mit nicht übereinstimmender name-Eigenschaft aktualisieren", - "error.update.code.model.on.nonexist.folder": "Das Codemodell wird für einen Ordner aktualisiert, der noch nicht vorhanden ist.", + "workspace.active": "Active Workspace", + "workspace": "Workspace", + "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", "error.rendering.children.nodes": "Fehler beim Rendern untergeordneter Knoten." } \ No newline at end of file diff --git a/i18n/esn/package.i18n.json b/i18n/esn/package.i18n.json index 5c6bd2def..97d6a2040 100644 --- a/i18n/esn/package.i18n.json +++ b/i18n/esn/package.i18n.json @@ -104,13 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Directorios en los que se puede instalar Emscripten.", "cmake-tools.configuration.cmake.copyCompileCommands.description": "Copia compile_commands.json en esta ubicación después de una configuración correcta.", "cmake-tools.configuration.cmake.configureOnOpen.description": "Configura automáticamente los directorios del proyecto de CMake al abrirlos.", - "cmake-tools.configuration.cmake.useCMakeServer.description": "Habilita el servidor de CMake.", + "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "El protocolo que se usa para la comunicación entre la extensión y CMake.", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "No use las variables de entorno del kit al ejecutar comandos de CMake.", "cmake-tools.configuration.cmake.buildTask.description": "Use tasks.json para compilar en lugar del proceso interno.", "cmake-tools.configuration.cmake.outputLogEncoding.description": "Codificación de la salida de los comandos externos (por ejemplo, cmake -- build).", "cmake-tools.configuration.cmake.enableTraceLogging.description": "Habilita el registro de seguimiento para el archivo y la consola (con mucho ruido).", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "Selecciona la carpeta activa de forma automática.", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", "cmake-tools.configuration.views.cmake.folders.description": "Carpetas", "cmake-tools.configuration.views.cmake.outline.description": "Esquema del proyecto" } \ No newline at end of file diff --git a/i18n/esn/schemas/kits-schema.json.i18n.json b/i18n/esn/schemas/kits-schema.json.i18n.json index 9cbe9fb02..c6c4f2870 100644 --- a/i18n/esn/schemas/kits-schema.json.i18n.json +++ b/i18n/esn/schemas/kits-schema.json.i18n.json @@ -12,6 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Ruta de acceso a un archivo de cadena de herramientas", "schemas/kits-schema.json.items.properties.visualStudio": "Nombre del producto de Visual Studio", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Arquitectura de destino", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Valor de la variable de entorno", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Valor para la configuración de CMake", "schemas/kits-schema.json.items.properties.preferredGenerator": "Establecer un generador de CMake preferido para el kit", diff --git a/i18n/esn/src/cmake-tools.i18n.json b/i18n/esn/src/cmake-tools.i18n.json index 522469c9c..a1934e44b 100644 --- a/i18n/esn/src/cmake-tools.i18n.json +++ b/i18n/esn/src/cmake-tools.i18n.json @@ -12,9 +12,12 @@ "configuration.already.in.progress": "La configuración ya está en curso.", "task.already.running": "Ya se está ejecutando una tarea de CMake. Deténgala antes de intentar ejecutar otra.", "no.source.directory.found": "No tiene ningún directorio de origen abierto.", - "quickstart.cmake.project": "Inicio rápido de un nuevo proyecto de CMake", - "edit.setting": "Editar el valor \"cmake.sourceDirectory\"", - "missing.cmakelists": "No se encontró CMakeLists.txt en la raíz de la carpeta \"{0}\".", + "quickstart.cmake.project": "Create", + "edit.setting": "Locate", + "ignore.activation": "Don't show again", + "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", + "reload.window": "Reload Window", + "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", "starting.cmake.driver": "Iniciando el controlador de CMake", "bad.cmake.executable": "El ejecutable de CMake \"{0}\" es incorrecto.", "switch.to.serverapi": "No se admite el modo de comunicación file-api de CMake en las versiones anteriores a {0}. Cambiando al modo de comunicación del servidor de CMake.", @@ -26,6 +29,9 @@ "second.phase.init": "Empezando la inicialización de segunda fase de CMakeTools", "active.build.variant.changed": "Se ha cambiado la variante de la compilación activa.", "changing.build.variant": "Cambiando la variante de compilación", + "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", + "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", + "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", "injecting.new.kit": "Insertando el nuevo kit en el controlador de CMake", "reloading.status": "Recargando...", "unable.to.set.kit": "No se puede establecer el kit \"{0}\".", @@ -58,6 +64,7 @@ "cannot.configure.no.kit": "No se puede configurar: no hay ningún kit activo para estas herramientas de CMake.", "waiting.on.variant": "Esperando a la selección de la variante", "no.variant.abort": "No se ha seleccionado ninguna variante. Anular la configuración", + "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", "cmake.drive.died.during.tasksbuildcommend": "El controlador de CMake finalizó durante la aplicación de tasksBuildCommand.", "run.build": "Compilando la carpeta: {0}", "unable.to.configure": "Error de compilación: no se puede configurar el proyecto", diff --git a/i18n/esn/src/cpptools.i18n.json b/i18n/esn/src/cpptools.i18n.json index d243026de..08d0d17c3 100644 --- a/i18n/esn/src/cpptools.i18n.json +++ b/i18n/esn/src/cpptools.i18n.json @@ -9,6 +9,5 @@ "unknown.control.gflag.c": "Marca de control del estándar C desconocida: {0}", "unknown.control.gflag": "Marca de control del estándar desconocida: {0}", "unknown language": "Lenguaje desconocido: {0}", - "method.not.implemented": "El método no está implementado.", "path.not.found.in.cmake.cache": "No se encontró la ruta de acceso al compilador de uno o más archivos de código fuente en la memoria caché de CMake. Si usa un archivo de cadena de herramientas, probablemente deba especificar la opción CACHE al establecer la ruta de acceso del compilador de C o C++." } \ No newline at end of file diff --git a/i18n/esn/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/esn/src/drivers/cmakefileapi/api_helpers.i18n.json index 5f3c8a9d3..47562f0fc 100644 --- a/i18n/esn/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/esn/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "failed.writing.to.file": "Failed writing to file {0}", "cache.object.version": "La versión del objeto de caché ({0}.{1}) de cmake-file-api no es la esperada. Se esperaba ({2}.{3}). Puede que la configuración de IntelliSense no sea correcta.", "cache.entry.unknowntype": "Tipo de entrada de caché desconocido: {0}.", "code.model.version": "La versión del modelo de código ({0}.{1}) de cmake-file-api no es la esperada. Se esperaba ({2}.{3}). Puede que la configuración de IntelliSense no sea correcta." diff --git a/i18n/esn/src/drivers/cmfileapi-driver.i18n.json b/i18n/esn/src/drivers/cmfileapi-driver.i18n.json new file mode 100644 index 000000000..2ecf56655 --- /dev/null +++ b/i18n/esn/src/drivers/cmfileapi-driver.i18n.json @@ -0,0 +1,9 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "removing": "Removing {0}", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." +} \ No newline at end of file diff --git a/i18n/esn/src/drivers/cms-driver.i18n.json b/i18n/esn/src/drivers/cms-driver.i18n.json index b7641a162..75b439dea 100644 --- a/i18n/esn/src/drivers/cms-driver.i18n.json +++ b/i18n/esn/src/drivers/cms-driver.i18n.json @@ -10,5 +10,6 @@ "found.no.matching.code.model": "No se encontró ningún modelo de código coincidente para el tipo de compilación actual, lo cual no debería ser posible.", "build.all.target": "Un destino especial para compilar todos los destinos disponibles", "install.all.target": "Un destino especial para instalar todos los destinos disponibles", - "utility.target": "Destino de la utilidad" + "utility.target": "Destino de la utilidad", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." } \ No newline at end of file diff --git a/i18n/esn/src/drivers/driver.i18n.json b/i18n/esn/src/drivers/driver.i18n.json index 5b37694a0..3dc06dbb2 100644 --- a/i18n/esn/src/drivers/driver.i18n.json +++ b/i18n/esn/src/drivers/driver.i18n.json @@ -17,6 +17,7 @@ "trying.to.detect.generator": "Intentando detectar el generador que el sistema admite", "start.configure": "Iniciar la configuración", "cmake.flags.are": "Las marcas de CMake son {0}", + "configure.failed": "Failed to configure project", "no.kit.is.set": "No se ha establecido ningún kit.", "using.compilers.in.for.configure": "Usando los compiladores en {0} para configurar", "using.cmake.toolchain.for.configure": "Usando la cadena de herramientas de CMake {0} para configurar", diff --git a/i18n/esn/src/extension.i18n.json b/i18n/esn/src/extension.i18n.json index 96a1ca71d..e88640175 100644 --- a/i18n/esn/src/extension.i18n.json +++ b/i18n/esn/src/extension.i18n.json @@ -10,10 +10,14 @@ "yes.button": "Sí", "not.now.button": "Ahora no", "always.configure.on.open": "¿Configurar siempre los proyectos al abrirlos?", - "never.configure.on.open": "¿No configurar nunca los proyectos al abrirlos?", - "for.this.workspace.button": "Para esta área de trabajo", + "never.configure.on.open": "Configure projects on opening?", + "no.button": "No", + "never.button": "Never", + "never.for.this.workspace.button": "Not this workspace", "persist.config.on.open.setting": "Conservar los valores de configuración al abrir", "configuring.workspace.on.open": "Configuración del área de trabajo al abrir {0}", + "configure.now.button": "Configure Now", + "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", "update.code.model.for.cpptools": "Actualizar el modelo de código para cpptools", "filed.to.open.cache.file.on.code.model.update": "No se pudo abrir el archivo caché de CMake en la actualización del modelo de código.", "opening.text.editor.for": "Abriendo el editor de texto para {0}", diff --git a/i18n/esn/src/kit.i18n.json b/i18n/esn/src/kit.i18n.json index b18df1289..ad59ef66f 100644 --- a/i18n/esn/src/kit.i18n.json +++ b/i18n/esn/src/kit.i18n.json @@ -34,6 +34,7 @@ "scanning.for.kits": "Buscando kits", "scanning.for.cmake.kits": "Examinando los kits de CMake...", "found.kit": "Kit encontrado: {0}", + "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", "kit.for.toolchain.file": "Kit para el archivo de la cadena de herramientas {0}", "using.compilers.for": "Usando los compiladores para {0} (arquitectura {1})", "using.compilers": "Usando los compiladores: {0}", diff --git a/i18n/esn/src/kitsController.i18n.json b/i18n/esn/src/kitsController.i18n.json index 01dd00ed6..06c9525d7 100644 --- a/i18n/esn/src/kitsController.i18n.json +++ b/i18n/esn/src/kitsController.i18n.json @@ -11,12 +11,10 @@ "unsetting.kit": "Anulando el kit", "loading.kit": "Cargando el kit {0}", "invalid.only.kit": "Solo un kit no válido. Se esperaba encontrar \"{0}\".", - "scan.for.kits.button": "Buscar para kits", - "do.not.use.kit.button": "No usar ningún kit", - "close.button": "Cerrar", - "no.kits.available": "No hay ningún kit de CMake disponible. ¿Qué quiere hacer?", + "already.checking.kits": "Already checking kits. Please try again later.", "start.selection.of.kits": "Iniciar la selección de kits. Kits encontrados: {0}.", "opening.kit.selection": "Abriendo la selección de kit de QuickPick", + "scan.for.kits.button": "Buscar para kits", "unspecified.kit.name": "No especificado", "select.a.kit.placeholder": "Seleccionar un kit para {0}", "user.cancelled.kit.selection": "Selección de kit cancelada por el usuario", diff --git a/i18n/esn/src/status.i18n.json b/i18n/esn/src/status.i18n.json index 08dd24fc2..3a7d0ba49 100644 --- a/i18n/esn/src/status.i18n.json +++ b/i18n/esn/src/status.i18n.json @@ -4,22 +4,22 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "active.folder.auto.select.tooltip": "Carpeta activa", - "active.folder.tooltip": "Seleccionar la carpeta activa", + "click.to.select.workspace.tooltip": "Click to select the active folder", "unconfigured": "Sin configurar", - "loading.status": "Cargando...", "click.to.select.variant.tooltip": "Hacer clic para seleccionar la variante de compilación actual", + "loading.status": "Cargando...", "click.to.change.kit.tooltip": "Hacer clic para cambiar el kit activo", + "no.active.kit": "No hay ningún kit activo", + "no.kit.selected": "No se ha seleccionado ningún kit.", "set.active.target.tooltip": "Establecer el destino activo para compilar", - "run.ctest.tests.tooltip": "Ejecutar pruebas de CTest", - "launch.debugger.tooltip": "Iniciar el depurador para el destino seleccionado", "select.target.tooltip": "Seleccionar el destino para iniciar", - "debug": "Depurar", + "launch.debugger.tooltip": "Iniciar el depurador para el destino seleccionado", + "launch.tooltip": "Launch the selected target in the terminal window", + "run.ctest.tests.tooltip": "Ejecutar pruebas de CTest", "run.ctest": "Ejecutar CTest", "test.passing": "Pruebas aprobadas: {0}/{1}", "tests.passing": "Pruebas aprobadas: {0}/{1}", - "stop": "Detener", + "build.tooltip": "Build the selected target", "build": "Versión de compilación", - "no.kit.selected": "No se ha seleccionado ningún kit.", - "no.active.kit": "No hay ningún kit activo" + "stop": "Detener" } \ No newline at end of file diff --git a/i18n/esn/src/tree.i18n.json b/i18n/esn/src/tree.i18n.json index d8325b4cc..84a357a5a 100644 --- a/i18n/esn/src/tree.i18n.json +++ b/i18n/esn/src/tree.i18n.json @@ -14,6 +14,8 @@ "item.render.issue": "Hubo un problema al representar este elemento. Esto es un error.", "empty.project": "Proyecto vacío", "update.project.with.mismatch": "Actualizar el proyecto con la propiedad del nombre no coincidente", - "error.update.code.model.on.nonexist.folder": "Actualizando el modelo de código en una carpeta que no existe aún.", + "workspace.active": "Active Workspace", + "workspace": "Workspace", + "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", "error.rendering.children.nodes": "Error al representar los nodos secundarios." } \ No newline at end of file diff --git a/i18n/fra/package.i18n.json b/i18n/fra/package.i18n.json index 9f9bded57..73a0abd1e 100644 --- a/i18n/fra/package.i18n.json +++ b/i18n/fra/package.i18n.json @@ -104,13 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Répertoires où Emscripten peut être installé.", "cmake-tools.configuration.cmake.copyCompileCommands.description": "Copie compile_commands.json à cet emplacement après une configuration réussie.", "cmake-tools.configuration.cmake.configureOnOpen.description": "Configure automatiquement les répertoires de projet CMake quand ils s'ouvrent.", - "cmake-tools.configuration.cmake.useCMakeServer.description": "Active le serveur CMake.", + "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "Protocole de communication entre l'extension et CMake", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "N'utilise pas les variables d'environnement de kit au moment de l'exécution de commandes CMake.", "cmake-tools.configuration.cmake.buildTask.description": "Effectue une build à l'aide de tasks.json au lieu du processus interne.", "cmake-tools.configuration.cmake.outputLogEncoding.description": "Encodage de la sortie à partir de commandes externes (par exemple cmake -- build).", "cmake-tools.configuration.cmake.enableTraceLogging.description": "Active la journalisation des traces dans le fichier et la console (très bruyant).", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "Sélectionner le dossier actif automatiquement", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", "cmake-tools.configuration.views.cmake.folders.description": "Dossiers", "cmake-tools.configuration.views.cmake.outline.description": "Structure du projet" } \ No newline at end of file diff --git a/i18n/fra/schemas/kits-schema.json.i18n.json b/i18n/fra/schemas/kits-schema.json.i18n.json index 4c1736e0b..82bfca504 100644 --- a/i18n/fra/schemas/kits-schema.json.i18n.json +++ b/i18n/fra/schemas/kits-schema.json.i18n.json @@ -12,6 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Chemin d'un fichier de chaîne d'outils", "schemas/kits-schema.json.items.properties.visualStudio": "Nom du produit Visual Studio", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Architecture à cibler", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Valeur de la variable d'environnement", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Valeur du paramètre CMake", "schemas/kits-schema.json.items.properties.preferredGenerator": "Définir un générateur CMake par défaut pour ce kit", diff --git a/i18n/fra/src/cmake-tools.i18n.json b/i18n/fra/src/cmake-tools.i18n.json index 0fbbd8c79..78e823711 100644 --- a/i18n/fra/src/cmake-tools.i18n.json +++ b/i18n/fra/src/cmake-tools.i18n.json @@ -12,9 +12,12 @@ "configuration.already.in.progress": "La configuration est déjà en cours d'exécution.", "task.already.running": "Une tâche CMake est déjà en cours d'exécution. Arrêtez-la avant d'essayer d'exécuter une nouvelle tâche CMake.", "no.source.directory.found": "Vous n'avez pas de répertoire source ouvert", - "quickstart.cmake.project": "Commencer rapidement un nouveau projet CMake", - "edit.setting": "Modifier le paramètre ’cmake.sourceDirectory'", - "missing.cmakelists": "CMakeLists.txt est introuvable à la racine du dossier '{0}'", + "quickstart.cmake.project": "Create", + "edit.setting": "Locate", + "ignore.activation": "Don't show again", + "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", + "reload.window": "Reload Window", + "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", "starting.cmake.driver": "Démarrage du pilote CMake", "bad.cmake.executable": "Exécutable CMake incorrect \"{0}\".", "switch.to.serverapi": "Le mode de communication d'API de fichier CMake n'est pas pris en charge dans les versions antérieures à {0}. Passage au mode de communication de serveur CMake.", @@ -26,6 +29,9 @@ "second.phase.init": "Démarrage de l'initialisation de la deuxième phase de CMakeTools", "active.build.variant.changed": "Variante de build active changée", "changing.build.variant": "Changement de variante de build", + "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", + "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", + "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", "injecting.new.kit": "Injection d'un nouveau kit dans le pilote CMake", "reloading.status": "Rechargement...", "unable.to.set.kit": "Impossible de définir le kit \"{0}\".", @@ -58,6 +64,7 @@ "cannot.configure.no.kit": "Impossible d'effectuer la configuration : aucun kit n'est actif pour cette version de CMake Tools", "waiting.on.variant": "En attente de la sélection de variante", "no.variant.abort": "Aucune variante sélectionnée. Abandon de la configuration", + "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", "cmake.drive.died.during.tasksbuildcommend": "Le pilote CMake a cessé de fonctionner durant tasksBuildCommand", "run.build": "Génération du dossier : {0}", "unable.to.configure": "Échec de la build : impossible de configurer le projet", diff --git a/i18n/fra/src/cpptools.i18n.json b/i18n/fra/src/cpptools.i18n.json index e52ef5ed3..57273a1c7 100644 --- a/i18n/fra/src/cpptools.i18n.json +++ b/i18n/fra/src/cpptools.i18n.json @@ -9,6 +9,5 @@ "unknown.control.gflag.c": "Indicateur de contrôle de norme C inconnu : {0}", "unknown.control.gflag": "Indicateur de contrôle standard inconnu : {0}", "unknown language": "Langage inconnu : {0}", - "method.not.implemented": "Méthode non implémentée.", "path.not.found.in.cmake.cache": "Le chemin du compilateur pour un ou plusieurs fichiers sources est introuvable dans le cache CMake. Si vous utilisez un fichier de chaîne d'outils, cela signifie probablement que vous devez spécifier l'option CACHE au moment de définir le chemin de votre compilateur C et/ou C++" } \ No newline at end of file diff --git a/i18n/fra/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/fra/src/drivers/cmakefileapi/api_helpers.i18n.json index 5c2a87df2..16917c849 100644 --- a/i18n/fra/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/fra/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "failed.writing.to.file": "Failed writing to file {0}", "cache.object.version": "L'objet de cache version ({0}.{1}) de cmake-file-api est inattendu. En attente de ({2}.{3}). La configuration d'IntelliSense est peut-être incorrecte.", "cache.entry.unknowntype": "Type d'entrée de cache inconnu : {0}.", "code.model.version": "Le modèle de code version ({0}.{1}) de cmake-file-api est inattendu. En attente de ({2}.{3}). La configuration d'IntelliSense est peut-être incorrecte." diff --git a/i18n/fra/src/drivers/cmfileapi-driver.i18n.json b/i18n/fra/src/drivers/cmfileapi-driver.i18n.json new file mode 100644 index 000000000..2ecf56655 --- /dev/null +++ b/i18n/fra/src/drivers/cmfileapi-driver.i18n.json @@ -0,0 +1,9 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "removing": "Removing {0}", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." +} \ No newline at end of file diff --git a/i18n/fra/src/drivers/cms-driver.i18n.json b/i18n/fra/src/drivers/cms-driver.i18n.json index 3af9602e4..3c6b9035e 100644 --- a/i18n/fra/src/drivers/cms-driver.i18n.json +++ b/i18n/fra/src/drivers/cms-driver.i18n.json @@ -10,5 +10,6 @@ "found.no.matching.code.model": "Le modèle de code correspondant est introuvable pour le type de build actuel. Cela ne doit pas se produire", "build.all.target": "Cible spéciale pour générer toutes les cibles disponibles", "install.all.target": "Cible spéciale pour installer toutes les cibles disponibles", - "utility.target": "Cible de l'utilitaire" + "utility.target": "Cible de l'utilitaire", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." } \ No newline at end of file diff --git a/i18n/fra/src/drivers/driver.i18n.json b/i18n/fra/src/drivers/driver.i18n.json index aba195eb9..288c875af 100644 --- a/i18n/fra/src/drivers/driver.i18n.json +++ b/i18n/fra/src/drivers/driver.i18n.json @@ -17,6 +17,7 @@ "trying.to.detect.generator": "Tentative de détection du générateur pris en charge par le système", "start.configure": "Démarrer la configuration", "cmake.flags.are": "Indicateurs CMake : {0}", + "configure.failed": "Failed to configure project", "no.kit.is.set": "Aucun kit n'est défini !", "using.compilers.in.for.configure": "Utilisation de compilateurs dans {0} pour la configuration", "using.cmake.toolchain.for.configure": "Utilisation de la chaîne d'outils CMake {0} pour la configuration", diff --git a/i18n/fra/src/extension.i18n.json b/i18n/fra/src/extension.i18n.json index e40f3f542..afe6d9ec1 100644 --- a/i18n/fra/src/extension.i18n.json +++ b/i18n/fra/src/extension.i18n.json @@ -10,10 +10,14 @@ "yes.button": "Oui", "not.now.button": "Pas maintenant", "always.configure.on.open": "Toujours configurer les projets à l'ouverture ?", - "never.configure.on.open": "Ne jamais configurer les projets à l'ouverture ?", - "for.this.workspace.button": "Pour cet espace de travail", + "never.configure.on.open": "Configure projects on opening?", + "no.button": "Non", + "never.button": "Never", + "never.for.this.workspace.button": "Not this workspace", "persist.config.on.open.setting": "Paramètre de persistance de la configuration à l'ouverture", "configuring.workspace.on.open": "Configuration de l'espace de travail à l'ouverture {0}", + "configure.now.button": "Configure Now", + "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", "update.code.model.for.cpptools": "Mettre à jour le modèle de code pour cpptools", "filed.to.open.cache.file.on.code.model.update": "Échec de l'ouverture du fichier cache CMake au moment de la mise à jour du modèle de code", "opening.text.editor.for": "Ouverture de l'éditeur de texte pour {0}", diff --git a/i18n/fra/src/kit.i18n.json b/i18n/fra/src/kit.i18n.json index fd45dc58c..7cf2ff528 100644 --- a/i18n/fra/src/kit.i18n.json +++ b/i18n/fra/src/kit.i18n.json @@ -34,6 +34,7 @@ "scanning.for.kits": "Recherche de kits", "scanning.for.cmake.kits": "Recherche de kits CMake...", "found.kit": "Kit trouvé : {0}", + "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", "kit.for.toolchain.file": "Kit pour le fichier de chaîne d'outils {0}", "using.compilers.for": "Utilisation de compilateurs pour {0} (architecture {1})", "using.compilers": "Utilisation des compilateurs : {0}", diff --git a/i18n/fra/src/kitsController.i18n.json b/i18n/fra/src/kitsController.i18n.json index 297157944..0453c075f 100644 --- a/i18n/fra/src/kitsController.i18n.json +++ b/i18n/fra/src/kitsController.i18n.json @@ -11,12 +11,10 @@ "unsetting.kit": "Annulation du kit", "loading.kit": "Chargement du kit {0}", "invalid.only.kit": "Kit non valide uniquement. '{0}' attendu", - "scan.for.kits.button": "Rechercher des kits", - "do.not.use.kit.button": "Ne pas utiliser de kit", - "close.button": "Fermer", - "no.kits.available": "Aucun kit CMake n'est disponible. Que voulez-vous faire ?", + "already.checking.kits": "Already checking kits. Please try again later.", "start.selection.of.kits": "Démarrez la sélection des kits. {0} kits trouvés.", "opening.kit.selection": "Ouverture de la sélection rapide de kit", + "scan.for.kits.button": "Rechercher des kits", "unspecified.kit.name": "Non spécifié", "select.a.kit.placeholder": "Sélectionner un kit pour {0}", "user.cancelled.kit.selection": "L'utilisateur a annulé la sélection du kit", diff --git a/i18n/fra/src/status.i18n.json b/i18n/fra/src/status.i18n.json index 9c1b7d411..84a44de0d 100644 --- a/i18n/fra/src/status.i18n.json +++ b/i18n/fra/src/status.i18n.json @@ -4,22 +4,22 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "active.folder.auto.select.tooltip": "Dossier actif", - "active.folder.tooltip": "Sélectionner le dossier actif", + "click.to.select.workspace.tooltip": "Click to select the active folder", "unconfigured": "Non configuré", - "loading.status": "Chargement...", "click.to.select.variant.tooltip": "Cliquer pour sélectionner la variante de build actuelle", + "loading.status": "Chargement...", "click.to.change.kit.tooltip": "Cliquer pour changer le kit actif", + "no.active.kit": "Aucun kit actif", + "no.kit.selected": "Aucun kit sélectionné", "set.active.target.tooltip": "Définir la cible active à générer", - "run.ctest.tests.tooltip": "Exécuter les tests CTest", - "launch.debugger.tooltip": "Lancer le débogueur pour la cible sélectionnée", "select.target.tooltip": "Sélectionner la cible à lancer", - "debug": "Déboguer", + "launch.debugger.tooltip": "Lancer le débogueur pour la cible sélectionnée", + "launch.tooltip": "Launch the selected target in the terminal window", + "run.ctest.tests.tooltip": "Exécuter les tests CTest", "run.ctest": "Exécuter CTest", "test.passing": "Réussite du test : {0}/{1}", "tests.passing": "Réussite des tests : {0}/{1}", - "stop": "Arrêter", + "build.tooltip": "Build the selected target", "build": "Version", - "no.kit.selected": "Aucun kit sélectionné", - "no.active.kit": "Aucun kit actif" + "stop": "Arrêter" } \ No newline at end of file diff --git a/i18n/fra/src/tree.i18n.json b/i18n/fra/src/tree.i18n.json index 8985eefc1..9d2fb09fb 100644 --- a/i18n/fra/src/tree.i18n.json +++ b/i18n/fra/src/tree.i18n.json @@ -14,6 +14,8 @@ "item.render.issue": "Un problème s'est produit durant le rendu de cet élément. Il s'agit d'un bogue", "empty.project": "Projet vide", "update.project.with.mismatch": "Mettre à jour le projet avec une propriété name incompatible", - "error.update.code.model.on.nonexist.folder": "Mise à jour du modèle de code sur un dossier qui n'existe pas encore", + "workspace.active": "Active Workspace", + "workspace": "Workspace", + "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", "error.rendering.children.nodes": "Erreur durant le rendu des nœuds enfants" } \ No newline at end of file diff --git a/i18n/ita/package.i18n.json b/i18n/ita/package.i18n.json index d8353e2ce..219c5aa1b 100644 --- a/i18n/ita/package.i18n.json +++ b/i18n/ita/package.i18n.json @@ -104,13 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Directory in cui è possibile installare Emscripten.", "cmake-tools.configuration.cmake.copyCompileCommands.description": "Copia compile_commands.json in questa posizione dopo una configurazione riuscita.", "cmake-tools.configuration.cmake.configureOnOpen.description": "Configura automaticamente le directory di progetto di CMake quando vengono aperte.", - "cmake-tools.configuration.cmake.useCMakeServer.description": "Abilita il server CMake.", + "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "Protocollo usato per le comunicazioni tra l'estensione e CMake", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "Non usa le variabili di ambiente del kit durante l'esecuzione dei comandi di CMake.", "cmake-tools.configuration.cmake.buildTask.description": "Compila con tasks.json anziché il processo interno.", "cmake-tools.configuration.cmake.outputLogEncoding.description": "Codifica dell'output di comandi esterni (ad esempio cmake -- build).", "cmake-tools.configuration.cmake.enableTraceLogging.description": "Abilita la registrazione traccia in file e console (molto disturbata).", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "Seleziona automaticamente la cartella attiva", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", "cmake-tools.configuration.views.cmake.folders.description": "Cartelle", "cmake-tools.configuration.views.cmake.outline.description": "Struttura del progetto" } \ No newline at end of file diff --git a/i18n/ita/schemas/kits-schema.json.i18n.json b/i18n/ita/schemas/kits-schema.json.i18n.json index 8b845afc5..da4182959 100644 --- a/i18n/ita/schemas/kits-schema.json.i18n.json +++ b/i18n/ita/schemas/kits-schema.json.i18n.json @@ -12,6 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Percorso di un file della toolchain", "schemas/kits-schema.json.items.properties.visualStudio": "Nome del prodotto Visual Studio", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Architettura da usare come destinazione", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Valore della variabile di ambiente", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Valore dell'impostazione di CMake", "schemas/kits-schema.json.items.properties.preferredGenerator": "Imposta un generatore CMake preferito per questo kit", diff --git a/i18n/ita/src/cmake-tools.i18n.json b/i18n/ita/src/cmake-tools.i18n.json index 70d947571..c05c7ec60 100644 --- a/i18n/ita/src/cmake-tools.i18n.json +++ b/i18n/ita/src/cmake-tools.i18n.json @@ -12,9 +12,12 @@ "configuration.already.in.progress": "La configurazione è già in corso.", "task.already.running": "Un'attività CMake è già in esecuzione. Arrestarla prima di provare a eseguire una nuova attività di CMake.", "no.source.directory.found": "Non è presente alcuna directory di origine aperta", - "quickstart.cmake.project": "Avvio rapido per un nuovo progetto CMake", - "edit.setting": "Modifica l'impostazione 'cmake.sourceDirectory'", - "missing.cmakelists": "CMakeLists.txt non è stato trovato nella radice della cartella '{0}'", + "quickstart.cmake.project": "Create", + "edit.setting": "Locate", + "ignore.activation": "Don't show again", + "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", + "reload.window": "Reload Window", + "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", "starting.cmake.driver": "Avvio del driver di CMake", "bad.cmake.executable": "L'eseguibile di CMake \"{0}\" non è valido.", "switch.to.serverapi": "La modalità di comunicazione file-api di CMake non è supportata in versioni precedenti alla {0}. Verrà effettuato il passaggio alla modalità di comunicazione server di CMake.", @@ -26,6 +29,9 @@ "second.phase.init": "Avvio dell'inizializzazione della seconda fase di CMakeTools", "active.build.variant.changed": "La variante di compilazione attiva è stata modificata", "changing.build.variant": "Modifica della variante di compilazione", + "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", + "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", + "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", "injecting.new.kit": "Inserimento del nuovo kit nel driver di CMake", "reloading.status": "Ricaricamento...", "unable.to.set.kit": "Non è possibile impostare il kit \"{0}\".", @@ -58,6 +64,7 @@ "cannot.configure.no.kit": "Non è possibile eseguire la configurazione: non ci sono kit attivi per questa istanza di CMake Tools", "waiting.on.variant": "In attesa della selezione della variante", "no.variant.abort": "Non è stata selezionata alcuna variante. Interrompere la configurazione", + "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", "cmake.drive.died.during.tasksbuildcommend": "Il driver di CMake è stato arrestato durante tasksBuildCommand", "run.build": "Compilazione della cartella: {0}", "unable.to.configure": "Compilazione non riuscita: non è possibile configurare il progetto", diff --git a/i18n/ita/src/cpptools.i18n.json b/i18n/ita/src/cpptools.i18n.json index 9f719ffd9..f3cc289d9 100644 --- a/i18n/ita/src/cpptools.i18n.json +++ b/i18n/ita/src/cpptools.i18n.json @@ -9,6 +9,5 @@ "unknown.control.gflag.c": "Flag di controllo standard C sconosciuto: {0}", "unknown.control.gflag": "Flag di controllo standard sconosciuto: {0}", "unknown language": "Linguaggio sconosciuto: {0}", - "method.not.implemented": "Metodo non implementato.", "path.not.found.in.cmake.cache": "Il percorso del compilatore per uno o più file di origine non è stato trovato nella cache di CMake. Se si usa un file di toolchain, è necessario specificare l'opzione CACHE quando si imposta il percorso del compilatore C e/o C++" } \ No newline at end of file diff --git a/i18n/ita/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/ita/src/drivers/cmakefileapi/api_helpers.i18n.json index f8b22f098..b21bd4876 100644 --- a/i18n/ita/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/ita/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "failed.writing.to.file": "Failed writing to file {0}", "cache.object.version": "La versione dell'oggetto cache ({0}.{1}) di cmake-file-api è imprevista. È prevista ({2}.{3}). La configurazione IntelliSense potrebbe essere errata.", "cache.entry.unknowntype": "Tipo di voce della cache sconosciuto: {0}.", "code.model.version": "La versione del modello di codice ({0}.{1}) di cmake-file-api è imprevista. È prevista ({2}.{3}). La configurazione IntelliSense potrebbe essere errata." diff --git a/i18n/ita/src/drivers/cmfileapi-driver.i18n.json b/i18n/ita/src/drivers/cmfileapi-driver.i18n.json new file mode 100644 index 000000000..2ecf56655 --- /dev/null +++ b/i18n/ita/src/drivers/cmfileapi-driver.i18n.json @@ -0,0 +1,9 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "removing": "Removing {0}", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." +} \ No newline at end of file diff --git a/i18n/ita/src/drivers/cms-driver.i18n.json b/i18n/ita/src/drivers/cms-driver.i18n.json index d55939860..db9a6f783 100644 --- a/i18n/ita/src/drivers/cms-driver.i18n.json +++ b/i18n/ita/src/drivers/cms-driver.i18n.json @@ -10,5 +10,6 @@ "found.no.matching.code.model": "Non è stato trovato alcun modello di codice corrispondente per il tipo di compilazione corrente. Questo comportamento non è possibile", "build.all.target": "Destinazione speciale per la compilazione di tutte le destinazioni disponibili", "install.all.target": "Destinazione speciale per l'installazione di tutte le destinazioni disponibili", - "utility.target": "Destinazione dell'utilità" + "utility.target": "Destinazione dell'utilità", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." } \ No newline at end of file diff --git a/i18n/ita/src/drivers/driver.i18n.json b/i18n/ita/src/drivers/driver.i18n.json index f294204a3..09b65557f 100644 --- a/i18n/ita/src/drivers/driver.i18n.json +++ b/i18n/ita/src/drivers/driver.i18n.json @@ -17,6 +17,7 @@ "trying.to.detect.generator": "Tentativo di rilevare il generatore supportato dal sistema", "start.configure": "Avvia configurazione", "cmake.flags.are": "I flag di CMake sono: {0}", + "configure.failed": "Failed to configure project", "no.kit.is.set": "Non è stato impostato alcun kit.", "using.compilers.in.for.configure": "Utilizzo dei compilatori in {0} per la configurazione", "using.cmake.toolchain.for.configure": "Utilizzo della toolchain {0} di CMake per la configurazione", diff --git a/i18n/ita/src/extension.i18n.json b/i18n/ita/src/extension.i18n.json index 03fbab685..0709f08c2 100644 --- a/i18n/ita/src/extension.i18n.json +++ b/i18n/ita/src/extension.i18n.json @@ -10,10 +10,14 @@ "yes.button": "Sì", "not.now.button": "Non ora", "always.configure.on.open": "Configurare sempre i progetti all'apertura?", - "never.configure.on.open": "Non configurare mai i progetti all'apertura?", - "for.this.workspace.button": "Per questa area di lavoro", + "never.configure.on.open": "Configure projects on opening?", + "no.button": "No", + "never.button": "Never", + "never.for.this.workspace.button": "Not this workspace", "persist.config.on.open.setting": "Rendi permanente l'impostazione di configurazione all'apertura", "configuring.workspace.on.open": "Configurazione dell'area di lavoro all'apertura di {0}", + "configure.now.button": "Configure Now", + "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", "update.code.model.for.cpptools": "Aggiorna il modello di codice per cpptools", "filed.to.open.cache.file.on.code.model.update": "Non è stato possibile aprire il file di cache di CMake durante l'aggiornamento del modello di codice", "opening.text.editor.for": "Apertura dell'editor di testo per {0}", diff --git a/i18n/ita/src/kit.i18n.json b/i18n/ita/src/kit.i18n.json index c0e43ae62..9bdce78f5 100644 --- a/i18n/ita/src/kit.i18n.json +++ b/i18n/ita/src/kit.i18n.json @@ -34,6 +34,7 @@ "scanning.for.kits": "Ricerca dei kit", "scanning.for.cmake.kits": "Ricerca dei kit CMake...", "found.kit": "Kit trovato: {0}", + "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", "kit.for.toolchain.file": "Kit per il file di toolchain {0}", "using.compilers.for": "Uso dei compilatori per {0} (architettura {1})", "using.compilers": "Uso dei compilatori: {0}", diff --git a/i18n/ita/src/kitsController.i18n.json b/i18n/ita/src/kitsController.i18n.json index 7f1f0fcab..1196470bf 100644 --- a/i18n/ita/src/kitsController.i18n.json +++ b/i18n/ita/src/kitsController.i18n.json @@ -11,12 +11,10 @@ "unsetting.kit": "Annullamento dell'impostazione del kit", "loading.kit": "Caricamento del kit {0}", "invalid.only.kit": "Solo kit non valido. È previsto `{0}`", - "scan.for.kits.button": "Cerca kit", - "do.not.use.kit.button": "Non usare un kit", - "close.button": "Chiudi", - "no.kits.available": "Non sono disponibili kit CMake. Specificare l'operazione da eseguire.", + "already.checking.kits": "Already checking kits. Please try again later.", "start.selection.of.kits": "Avvia la selezione dei kit. Sono stati trovati {0} kit.", "opening.kit.selection": "Apertura della selezione rapida per la selezione del kit", + "scan.for.kits.button": "Cerca kit", "unspecified.kit.name": "Non specificata", "select.a.kit.placeholder": "Selezionare un kit per {0}", "user.cancelled.kit.selection": "Selezione del kit annullata dall'utente", diff --git a/i18n/ita/src/status.i18n.json b/i18n/ita/src/status.i18n.json index e50238328..c1dacb76d 100644 --- a/i18n/ita/src/status.i18n.json +++ b/i18n/ita/src/status.i18n.json @@ -4,22 +4,22 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "active.folder.auto.select.tooltip": "Cartella attiva", - "active.folder.tooltip": "Seleziona la cartella attiva", + "click.to.select.workspace.tooltip": "Click to select the active folder", "unconfigured": "Non configurato", - "loading.status": "Caricamento in corso...", "click.to.select.variant.tooltip": "Fare clic per selezionare la variante di compilazione corrente", + "loading.status": "Caricamento in corso...", "click.to.change.kit.tooltip": "Fare clic per cambiare il kit attivo", + "no.active.kit": "Non sono presenti kit attivi", + "no.kit.selected": "Kit non selezionato", "set.active.target.tooltip": "Imposta la destinazione attiva per la compilazione", - "run.ctest.tests.tooltip": "Esegui test di CTest", - "launch.debugger.tooltip": "Avvia il debugger per la destinazione selezionata", "select.target.tooltip": "Seleziona la destinazione per l'avvio", - "debug": "Debug", + "launch.debugger.tooltip": "Avvia il debugger per la destinazione selezionata", + "launch.tooltip": "Launch the selected target in the terminal window", + "run.ctest.tests.tooltip": "Esegui test di CTest", "run.ctest": "Esegui CTest", "test.passing": "{0}/{1} test superato", "tests.passing": "{0}/{1} test superati", - "stop": "Arresta", + "build.tooltip": "Build the selected target", "build": "Compila", - "no.kit.selected": "Kit non selezionato", - "no.active.kit": "Non sono presenti kit attivi" + "stop": "Arresta" } \ No newline at end of file diff --git a/i18n/ita/src/tree.i18n.json b/i18n/ita/src/tree.i18n.json index ccab08609..bd91449ac 100644 --- a/i18n/ita/src/tree.i18n.json +++ b/i18n/ita/src/tree.i18n.json @@ -14,6 +14,8 @@ "item.render.issue": "Si è verificato un errore durante il rendering di questo elemento. Questo è un bug", "empty.project": "Progetto vuoto", "update.project.with.mismatch": "Aggiorna il progetto con la proprietà name non corrispondente", - "error.update.code.model.on.nonexist.folder": "Aggiornamento del modello di codice nella cartella che non esiste ancora", + "workspace.active": "Active Workspace", + "workspace": "Workspace", + "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", "error.rendering.children.nodes": "Si è verificato un errore durante il rendering dei nodi figlio" } \ No newline at end of file diff --git a/i18n/jpn/package.i18n.json b/i18n/jpn/package.i18n.json index 3d67a6473..1a687fa92 100644 --- a/i18n/jpn/package.i18n.json +++ b/i18n/jpn/package.i18n.json @@ -104,13 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Emscripten がインストールされる可能性のあるディレクトリです。", "cmake-tools.configuration.cmake.copyCompileCommands.description": "構成が正常に完了したら、compile_commands.json をこの場所にコピーします。", "cmake-tools.configuration.cmake.configureOnOpen.description": "CMake プロジェクト ディレクトリを開いたときに自動的に構成します。", - "cmake-tools.configuration.cmake.useCMakeServer.description": "CMake サーバーを有効にします。", + "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "拡張機能と CMake の間の通信に使用されるプロトコル", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "CMake コマンドの実行時には、キットの環境変数を使用しないでください。", "cmake-tools.configuration.cmake.buildTask.description": "内部プロセスではなく tasks.json を使用してビルドします。", "cmake-tools.configuration.cmake.outputLogEncoding.description": "外部コマンドからの出力のエンコードです (例: cmake -- build)。", "cmake-tools.configuration.cmake.enableTraceLogging.description": "ファイルおよびコンソールへのトレース ログを有効にします (非常に煩雑になります)。", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "アクティブなフォルダーを自動的に選択します", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", "cmake-tools.configuration.views.cmake.folders.description": "フォルダー", "cmake-tools.configuration.views.cmake.outline.description": "プロジェクトの概要" } \ No newline at end of file diff --git a/i18n/jpn/schemas/kits-schema.json.i18n.json b/i18n/jpn/schemas/kits-schema.json.i18n.json index bbe7ae81b..cc365b680 100644 --- a/i18n/jpn/schemas/kits-schema.json.i18n.json +++ b/i18n/jpn/schemas/kits-schema.json.i18n.json @@ -12,6 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "ツールチェーン ファイルへのパス", "schemas/kits-schema.json.items.properties.visualStudio": "Visual Studio 製品の名前", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "ターゲットにするアーキテクチャ", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "環境変数の値", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "CMake 設定の値", "schemas/kits-schema.json.items.properties.preferredGenerator": "このキットの優先 CMake ジェネレーターを設定します", diff --git a/i18n/jpn/src/cmake-tools.i18n.json b/i18n/jpn/src/cmake-tools.i18n.json index d90206afa..1566af2bc 100644 --- a/i18n/jpn/src/cmake-tools.i18n.json +++ b/i18n/jpn/src/cmake-tools.i18n.json @@ -12,9 +12,12 @@ "configuration.already.in.progress": "構成は既に進行中です。", "task.already.running": "CMake タスクは既に実行されています。これを停止してから、新しい CMake タスクを実行してください。", "no.source.directory.found": "ソース ディレクトリが開かれていません", - "quickstart.cmake.project": "新しい CMake プロジェクトのクイックスタート", - "edit.setting": "'cmake.sourceDirectory' 設定を編集する", - "missing.cmakelists": "フォルダー '{0}' のルートに CMakeLists.txt が見つかりませんでした", + "quickstart.cmake.project": "Create", + "edit.setting": "Locate", + "ignore.activation": "Don't show again", + "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", + "reload.window": "Reload Window", + "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", "starting.cmake.driver": "CMake ドライバーを開始しています", "bad.cmake.executable": "CMake 実行可能ファイル \"{0}\" が正しくありません。", "switch.to.serverapi": "CMake file-api 通信モードは {0} より前のバージョンではサポートされていません。CMake サーバー通信モードに切り替えています。", @@ -26,6 +29,9 @@ "second.phase.init": "CMakeTools の第 2 フェーズの初期化を開始しています", "active.build.variant.changed": "アクティブなビルドのバリアントが変更されました", "changing.build.variant": "ビルドのバリアントを変更しています", + "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", + "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", + "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", "injecting.new.kit": "CMake ドライバーに新しいキットを挿入しています", "reloading.status": "再度読み込んでいます...", "unable.to.set.kit": "キット \"{0}\" を設定できません。", @@ -58,6 +64,7 @@ "cannot.configure.no.kit": "構成できません: この CMake Tools ではどのキットもアクティブではありません", "waiting.on.variant": "バリアントの選択を待機しています", "no.variant.abort": "バリアントが選択されていません。構成を中止します", + "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", "cmake.drive.died.during.tasksbuildcommend": "tasksBuildCommand の実行中に CMake ドライバーが停止しました", "run.build": "フォルダーのビルド中: {0}", "unable.to.configure": "ビルドに失敗しました。プロジェクトを構成できません", diff --git a/i18n/jpn/src/cpptools.i18n.json b/i18n/jpn/src/cpptools.i18n.json index 3995fadb8..723ba1e23 100644 --- a/i18n/jpn/src/cpptools.i18n.json +++ b/i18n/jpn/src/cpptools.i18n.json @@ -9,6 +9,5 @@ "unknown.control.gflag.c": "不明な C 標準コントロール フラグ: {0}", "unknown.control.gflag": "不明な標準コントロール フラグ: {0}", "unknown language": "不明な言語: {0}", - "method.not.implemented": "メソッドは実装されていません。", "path.not.found.in.cmake.cache": "1 つ以上のソース ファイルについてコンパイラへのパスが CMake キャッシュ内に見つかりませんでした。ツールチェーン ファイルを使用している場合は、おそらく、C または C++ コンパイラ パスを設定するときに CACHE オプションを指定する必要があることを意味しています" } \ No newline at end of file diff --git a/i18n/jpn/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/jpn/src/drivers/cmakefileapi/api_helpers.i18n.json index 924580b46..a3c73411c 100644 --- a/i18n/jpn/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/jpn/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "failed.writing.to.file": "Failed writing to file {0}", "cache.object.version": "cmake-file-api のキャッシュ オブジェクト バージョン ({0}.{1}) が予期されていません。({2}.{3}) が必要です。IntelliSense の構成が正しくない可能性があります。", "cache.entry.unknowntype": "不明なキャッシュ エントリの種類: {0}。", "code.model.version": "cmake-file-api のコード モデル バージョン ({1}.{0}) は予期されていません。({2}.{3}) が必要です。IntelliSense の構成が正しくない可能性があります。" diff --git a/i18n/jpn/src/drivers/cmfileapi-driver.i18n.json b/i18n/jpn/src/drivers/cmfileapi-driver.i18n.json new file mode 100644 index 000000000..2ecf56655 --- /dev/null +++ b/i18n/jpn/src/drivers/cmfileapi-driver.i18n.json @@ -0,0 +1,9 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "removing": "Removing {0}", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." +} \ No newline at end of file diff --git a/i18n/jpn/src/drivers/cms-driver.i18n.json b/i18n/jpn/src/drivers/cms-driver.i18n.json index ccedd4636..511ed27bb 100644 --- a/i18n/jpn/src/drivers/cms-driver.i18n.json +++ b/i18n/jpn/src/drivers/cms-driver.i18n.json @@ -10,5 +10,6 @@ "found.no.matching.code.model": "現在のビルドの種類に一致するコード モデルが見つかりませんでした。これは無効です", "build.all.target": "すべての使用可能なターゲットをビルドする特別なターゲット", "install.all.target": "すべての使用可能なターゲットをインストールする特別なターゲット", - "utility.target": "ユーティリティのターゲット" + "utility.target": "ユーティリティのターゲット", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." } \ No newline at end of file diff --git a/i18n/jpn/src/drivers/driver.i18n.json b/i18n/jpn/src/drivers/driver.i18n.json index 38c367d9b..b7f5285b8 100644 --- a/i18n/jpn/src/drivers/driver.i18n.json +++ b/i18n/jpn/src/drivers/driver.i18n.json @@ -17,6 +17,7 @@ "trying.to.detect.generator": "システムでサポートされているジェネレーターを検出しようとしています", "start.configure": "構成の開始", "cmake.flags.are": "CMake フラグ: {0}", + "configure.failed": "Failed to configure project", "no.kit.is.set": "キットが設定されていません。", "using.compilers.in.for.configure": "{0} 内のコンパイラを使用して構成しています", "using.cmake.toolchain.for.configure": "CMake ツールチェーン {0} を使用して構成しています", diff --git a/i18n/jpn/src/extension.i18n.json b/i18n/jpn/src/extension.i18n.json index 56ea6ca42..cd496e6bc 100644 --- a/i18n/jpn/src/extension.i18n.json +++ b/i18n/jpn/src/extension.i18n.json @@ -10,10 +10,14 @@ "yes.button": "はい", "not.now.button": "今はしない", "always.configure.on.open": "プロジェクトを開いたときに常に構成しますか?", - "never.configure.on.open": "次回からはプロジェクトを開くときに構成しないようにしますか?", - "for.this.workspace.button": "このワークスペース用", + "never.configure.on.open": "Configure projects on opening?", + "no.button": "いいえ", + "never.button": "Never", + "never.for.this.workspace.button": "Not this workspace", "persist.config.on.open.setting": "開いたときに構成する設定を保持する", "configuring.workspace.on.open": "開いている {0} 上でワークスペースを構成しています", + "configure.now.button": "Configure Now", + "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", "update.code.model.for.cpptools": "cpptools のコード モデルの更新", "filed.to.open.cache.file.on.code.model.update": "コード モデルの更新時に CMake キャッシュ ファイルを開くことができませんでした", "opening.text.editor.for": "{0} 用にテキスト エディターを開いています", diff --git a/i18n/jpn/src/kit.i18n.json b/i18n/jpn/src/kit.i18n.json index 10477997a..c148c7c03 100644 --- a/i18n/jpn/src/kit.i18n.json +++ b/i18n/jpn/src/kit.i18n.json @@ -34,6 +34,7 @@ "scanning.for.kits": "キットをスキャンしています", "scanning.for.cmake.kits": "CMake キットをスキャンしています...", "found.kit": "見つかったキット: {0}", + "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", "kit.for.toolchain.file": "ツールチェーン ファイル {0} 用のキット", "using.compilers.for": "{0} 用のコンパイラ ({1} アーキテクチャ) を使用しています", "using.compilers": "コンパイラ {0} を使用しています", diff --git a/i18n/jpn/src/kitsController.i18n.json b/i18n/jpn/src/kitsController.i18n.json index c5c172725..a53f7f758 100644 --- a/i18n/jpn/src/kitsController.i18n.json +++ b/i18n/jpn/src/kitsController.i18n.json @@ -11,12 +11,10 @@ "unsetting.kit": "キットの設定を解除しています", "loading.kit": "キット {0} を読み込んでいます", "invalid.only.kit": "キットのみ無効です。`{0}` が必要です", - "scan.for.kits.button": "キットのスキャン", - "do.not.use.kit.button": "キットを使用しない", - "close.button": "閉じる", - "no.kits.available": "使用可能な CMake キットがありません。どうしますか?", + "already.checking.kits": "Already checking kits. Please try again later.", "start.selection.of.kits": "キットの選択を開始します。{0} 個のキットが見つかりました。", "opening.kit.selection": "キット選択 QuickPick を開いています", + "scan.for.kits.button": "キットのスキャン", "unspecified.kit.name": "未指定", "select.a.kit.placeholder": "{0} のキットを選択してください", "user.cancelled.kit.selection": "ユーザーがキットの選択をキャンセルしました", diff --git a/i18n/jpn/src/status.i18n.json b/i18n/jpn/src/status.i18n.json index 2e9d1cb78..19b60901c 100644 --- a/i18n/jpn/src/status.i18n.json +++ b/i18n/jpn/src/status.i18n.json @@ -4,22 +4,22 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "active.folder.auto.select.tooltip": "アクティブなフォルダー", - "active.folder.tooltip": "アクティブなフォルダーを選択します", + "click.to.select.workspace.tooltip": "Click to select the active folder", "unconfigured": "未構成", - "loading.status": "読み込み中...", "click.to.select.variant.tooltip": "現在のビルド バリアントを選択するには、クリックします", + "loading.status": "読み込み中...", "click.to.change.kit.tooltip": "アクティブなキットを変更するには、クリックします", + "no.active.kit": "アクティブなキットがありません", + "no.kit.selected": "キットが選択されていません", "set.active.target.tooltip": "ビルドするアクティブ ターゲットを設定します", - "run.ctest.tests.tooltip": "CTest テストを実行します", - "launch.debugger.tooltip": "選択したターゲットのデバッガーを起動します", "select.target.tooltip": "起動するターゲットを選択します", - "debug": "デバッグ", + "launch.debugger.tooltip": "選択したターゲットのデバッガーを起動します", + "launch.tooltip": "Launch the selected target in the terminal window", + "run.ctest.tests.tooltip": "CTest テストを実行します", "run.ctest": "CTest の実行", "test.passing": "{0}/{1} 件のテストが成功", "tests.passing": "{0}/{1} 件のテストが成功", - "stop": "停止", + "build.tooltip": "Build the selected target", "build": "ビルド", - "no.kit.selected": "キットが選択されていません", - "no.active.kit": "アクティブなキットがありません" + "stop": "停止" } \ No newline at end of file diff --git a/i18n/jpn/src/tree.i18n.json b/i18n/jpn/src/tree.i18n.json index 484023d5b..1c6dfd0bb 100644 --- a/i18n/jpn/src/tree.i18n.json +++ b/i18n/jpn/src/tree.i18n.json @@ -14,6 +14,8 @@ "item.render.issue": "このアイテムのレンダリングで問題が発生しました。これはバグです", "empty.project": "空のプロジェクト", "update.project.with.mismatch": "一致しない名前プロパティを持つプロジェクトを更新する", - "error.update.code.model.on.nonexist.folder": "存在していないフォルダーでコード モデルを更新しています", + "workspace.active": "Active Workspace", + "workspace": "Workspace", + "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", "error.rendering.children.nodes": "子ノードのレンダリング中にエラーが発生しました" } \ No newline at end of file diff --git a/i18n/kor/package.i18n.json b/i18n/kor/package.i18n.json index 381f7affa..c1c546180 100644 --- a/i18n/kor/package.i18n.json +++ b/i18n/kor/package.i18n.json @@ -104,13 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Emscripten을 설치할 수 있는 디렉터리입니다.", "cmake-tools.configuration.cmake.copyCompileCommands.description": "구성에 성공한 후 compile_commands.json을 이 위치로 복사합니다.", "cmake-tools.configuration.cmake.configureOnOpen.description": "CMake 프로젝트 디렉터리를 열 때 자동으로 구성합니다.", - "cmake-tools.configuration.cmake.useCMakeServer.description": "CMake 서버를 사용합니다.", + "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "확장과 CMake 간 통신에 사용되는 프로토콜입니다.", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "CMake 명령을 실행할 때 키트 환경 변수를 사용하지 않습니다.", "cmake-tools.configuration.cmake.buildTask.description": "내부 프로세스 대신 tasks.json을 사용하여 빌드합니다.", "cmake-tools.configuration.cmake.outputLogEncoding.description": "외부 명령의 출력 인코딩입니다(예: cmake -- build).", "cmake-tools.configuration.cmake.enableTraceLogging.description": "파일 및 콘솔에 대한 추적 로깅을 사용합니다(매우 불안정함).", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "자동으로 활성 폴더 선택", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", "cmake-tools.configuration.views.cmake.folders.description": "폴더", "cmake-tools.configuration.views.cmake.outline.description": "프로젝트 개요" } \ No newline at end of file diff --git a/i18n/kor/schemas/kits-schema.json.i18n.json b/i18n/kor/schemas/kits-schema.json.i18n.json index 0444e6c54..e20a92d1e 100644 --- a/i18n/kor/schemas/kits-schema.json.i18n.json +++ b/i18n/kor/schemas/kits-schema.json.i18n.json @@ -12,6 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "도구 체인 파일 경로", "schemas/kits-schema.json.items.properties.visualStudio": "Visual Studio 제품 이름", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "대상에 대한 아키텍처", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "환경 변수 값", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "CMake 설정 값", "schemas/kits-schema.json.items.properties.preferredGenerator": "이 키트의 기본 설정 CMake 생성기 설정", diff --git a/i18n/kor/src/cmake-tools.i18n.json b/i18n/kor/src/cmake-tools.i18n.json index fb8f5cef3..076686888 100644 --- a/i18n/kor/src/cmake-tools.i18n.json +++ b/i18n/kor/src/cmake-tools.i18n.json @@ -12,9 +12,12 @@ "configuration.already.in.progress": "구성이 이미 진행 중입니다.", "task.already.running": "CMake 작업이 이미 실행 중입니다. 새 CMake 작업을 실행하려면 먼저 이전 작업을 중지합니다.", "no.source.directory.found": "열려 있는 소스 디렉터리가 없습니다.", - "quickstart.cmake.project": "새 CMake 프로젝트의 빠른 시작", - "edit.setting": "'cmake.sourceDirectory' 설정 편집", - "missing.cmakelists": "CMakeLists.txt가 '{0}' 폴더의 루트에 없음", + "quickstart.cmake.project": "Create", + "edit.setting": "Locate", + "ignore.activation": "Don't show again", + "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", + "reload.window": "Reload Window", + "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", "starting.cmake.driver": "CMake 드라이버를 시작하는 중", "bad.cmake.executable": "잘못된 CMake 실행 파일 \"{0}\".", "switch.to.serverapi": "{0} 이전 버전에서는 CMake file-api 통신 모드가 지원되지 않습니다. CMake 서버 통신 모드로 전환하는 중입니다.", @@ -26,6 +29,9 @@ "second.phase.init": "CMakeTools 2단계 초기화를 시작하는 중", "active.build.variant.changed": "활성 빌드 variant가 변경됨", "changing.build.variant": "빌드 variant를 변경하는 중", + "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", + "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", + "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", "injecting.new.kit": "CMake 드라이버에 새 키트를 삽입하는 중", "reloading.status": "다시 로드하는 중...", "unable.to.set.kit": "\"{0}\" 키트를 설정할 수 없습니다.", @@ -58,6 +64,7 @@ "cannot.configure.no.kit": "구성할 수 없음: 이 CMake 도구에 대해 활성 상태인 키트가 없음", "waiting.on.variant": "variant 선택을 기다리는 중", "no.variant.abort": "선택한 variant가 없으므로 구성을 중단합니다.", + "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", "cmake.drive.died.during.tasksbuildcommend": "tasksBuildCommand 중에 CMake 드라이버가 종료됨", "run.build": "폴더를 빌드하는 중: {0}", "unable.to.configure": "빌드 실패: 프로젝트를 구성할 수 없음", diff --git a/i18n/kor/src/cpptools.i18n.json b/i18n/kor/src/cpptools.i18n.json index d61559786..55ecdaae5 100644 --- a/i18n/kor/src/cpptools.i18n.json +++ b/i18n/kor/src/cpptools.i18n.json @@ -9,6 +9,5 @@ "unknown.control.gflag.c": "알 수 없는 C 표준 제어 플래그: {0}", "unknown.control.gflag": "알 수 없는 표준 제어 플래그: {0}", "unknown language": "알 수 없는 언어: {0}", - "method.not.implemented": "메서드가 구현되지 않았습니다.", "path.not.found.in.cmake.cache": "CMake 캐시에서 하나 이상의 소스 파일에 대한 컴파일러 경로를 찾을 수 없습니다. 도구 체인 파일을 사용하는 경우에는 C 및/또는 C++ 컴파일러 경로를 설정할 때 캐시 옵션을 지정해야 합니다." } \ No newline at end of file diff --git a/i18n/kor/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/kor/src/drivers/cmakefileapi/api_helpers.i18n.json index 47de95f89..35ebd4234 100644 --- a/i18n/kor/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/kor/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "failed.writing.to.file": "Failed writing to file {0}", "cache.object.version": "cmake-file-api의 캐시 개체 버전({0}.{1})은(는) 필요하지 않습니다. ({2}.{3})이(가) 필요합니다. IntelliSense 구성이 잘못되었을 수 있습니다.", "cache.entry.unknowntype": "알 수 없는 캐시 항목 형식 {0}입니다.", "code.model.version": "cmake-file-api의 코드 모델 버전({0}.{1})은(는) 필요하지 않습니다. ({2}.{3})이(가) 필요합니다. IntelliSense 구성이 잘못되었을 수 있습니다." diff --git a/i18n/kor/src/drivers/cmfileapi-driver.i18n.json b/i18n/kor/src/drivers/cmfileapi-driver.i18n.json new file mode 100644 index 000000000..2ecf56655 --- /dev/null +++ b/i18n/kor/src/drivers/cmfileapi-driver.i18n.json @@ -0,0 +1,9 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "removing": "Removing {0}", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." +} \ No newline at end of file diff --git a/i18n/kor/src/drivers/cms-driver.i18n.json b/i18n/kor/src/drivers/cms-driver.i18n.json index 02f374035..0a8a40f48 100644 --- a/i18n/kor/src/drivers/cms-driver.i18n.json +++ b/i18n/kor/src/drivers/cms-driver.i18n.json @@ -10,5 +10,6 @@ "found.no.matching.code.model": "현재 빌드 형식에 대한 일치하는 코드 모델이 없습니다. 일치하는 코드 모델이 있어야 합니다.", "build.all.target": "사용 가능한 모든 대상을 빌드할 특수 대상", "install.all.target": "사용 가능한 모든 대상을 설치할 특수 대상", - "utility.target": "유틸리티 대상" + "utility.target": "유틸리티 대상", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." } \ No newline at end of file diff --git a/i18n/kor/src/drivers/driver.i18n.json b/i18n/kor/src/drivers/driver.i18n.json index 8dcf6a585..f02083837 100644 --- a/i18n/kor/src/drivers/driver.i18n.json +++ b/i18n/kor/src/drivers/driver.i18n.json @@ -17,6 +17,7 @@ "trying.to.detect.generator": "시스템에서 지원되는 생성기를 검색하는 중", "start.configure": "구성 시작", "cmake.flags.are": "CMake 플래그가 {0}임", + "configure.failed": "Failed to configure project", "no.kit.is.set": "키트가 설정되지 않았습니다.", "using.compilers.in.for.configure": "구성을 위해 {0}의 컴파일러를 사용하는 중", "using.cmake.toolchain.for.configure": "구성을 위해 CMake 도구 체인 {0}을(를) 사용하는 중", diff --git a/i18n/kor/src/extension.i18n.json b/i18n/kor/src/extension.i18n.json index f50946d87..7ad3e5b4b 100644 --- a/i18n/kor/src/extension.i18n.json +++ b/i18n/kor/src/extension.i18n.json @@ -10,10 +10,14 @@ "yes.button": "예", "not.now.button": "나중에", "always.configure.on.open": "항상 프로젝트를 열 때 구성하시겠습니까?", - "never.configure.on.open": "프로젝트를 열 때 구성하지 않으시겠습니까?", - "for.this.workspace.button": "이 작업 영역의 경우", + "never.configure.on.open": "Configure projects on opening?", + "no.button": "아니요", + "never.button": "Never", + "never.for.this.workspace.button": "Not this workspace", "persist.config.on.open.setting": "config-on-open 설정 유지", "configuring.workspace.on.open": "열린 {0}에서 작업 영역을 구성하는 중", + "configure.now.button": "Configure Now", + "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", "update.code.model.for.cpptools": "cpptools에 대한 코드 모델 업데이트", "filed.to.open.cache.file.on.code.model.update": "코드 모델 업데이트에서 CMake 캐시 파일을 열지 못함", "opening.text.editor.for": "{0}의 텍스트 편집기를 여는 중", diff --git a/i18n/kor/src/kit.i18n.json b/i18n/kor/src/kit.i18n.json index 663ac15bc..cdef8d707 100644 --- a/i18n/kor/src/kit.i18n.json +++ b/i18n/kor/src/kit.i18n.json @@ -34,6 +34,7 @@ "scanning.for.kits": "키트를 검색하는 중", "scanning.for.cmake.kits": "CMake 키트를 검색하는 중...", "found.kit": "찾은 키트: {0}", + "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", "kit.for.toolchain.file": "도구 체인 파일 {0}용 키트", "using.compilers.for": "{0}({1} 아키텍처)에 대한 컴파일러를 사용하는 중", "using.compilers": "컴파일러를 사용하는 중: {0}", diff --git a/i18n/kor/src/kitsController.i18n.json b/i18n/kor/src/kitsController.i18n.json index b6efe0e22..ec21e185e 100644 --- a/i18n/kor/src/kitsController.i18n.json +++ b/i18n/kor/src/kitsController.i18n.json @@ -11,12 +11,10 @@ "unsetting.kit": "키트 설정을 해제하는 중", "loading.kit": "{0} 키트를 로드하는 중", "invalid.only.kit": "잘못된 키트. '{0}'을(를) 찾아야 함", - "scan.for.kits.button": "키트 검색", - "do.not.use.kit.button": "키트 사용 안 함", - "close.button": "닫기", - "no.kits.available": "CMake 키트를 사용할 수 없습니다. 원하는 작업을 선택하세요.", + "already.checking.kits": "Already checking kits. Please try again later.", "start.selection.of.kits": "키트 선택을 시작합니다. {0}개 키트를 찾았습니다.", "opening.kit.selection": "키트 선택 QuickPick을 여는 중", + "scan.for.kits.button": "키트 검색", "unspecified.kit.name": "지정되지 않음", "select.a.kit.placeholder": "{0}용 키트 선택", "user.cancelled.kit.selection": "사용자가 키트 선택을 취소함", diff --git a/i18n/kor/src/status.i18n.json b/i18n/kor/src/status.i18n.json index 6c21901b9..0d6b03be7 100644 --- a/i18n/kor/src/status.i18n.json +++ b/i18n/kor/src/status.i18n.json @@ -4,22 +4,22 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "active.folder.auto.select.tooltip": "활성 폴더", - "active.folder.tooltip": "활성 폴더 선택", + "click.to.select.workspace.tooltip": "Click to select the active folder", "unconfigured": "구성되지 않음", - "loading.status": "로드하는 중...", "click.to.select.variant.tooltip": "현재 빌드 variant를 선택하려면 클릭하세요.", + "loading.status": "로드하는 중...", "click.to.change.kit.tooltip": "활성 키트를 변경하려면 클릭하세요.", + "no.active.kit": "활성 키트가 없음", + "no.kit.selected": "선택된 키트가 없음", "set.active.target.tooltip": "빌드할 활성 대상 설정", - "run.ctest.tests.tooltip": "CTest 테스트 실행", - "launch.debugger.tooltip": "선택된 대상의 디버거 시작", "select.target.tooltip": "시작할 대상 선택", - "debug": "디버그", + "launch.debugger.tooltip": "선택된 대상의 디버거 시작", + "launch.tooltip": "Launch the selected target in the terminal window", + "run.ctest.tests.tooltip": "CTest 테스트 실행", "run.ctest": "CTest 실행", "test.passing": "{0}/{1}개 테스트 통과", "tests.passing": "{0}/{1}개 테스트 통과", - "stop": "중지", + "build.tooltip": "Build the selected target", "build": "빌드", - "no.kit.selected": "선택된 키트가 없음", - "no.active.kit": "활성 키트가 없음" + "stop": "중지" } \ No newline at end of file diff --git a/i18n/kor/src/tree.i18n.json b/i18n/kor/src/tree.i18n.json index b6a36378a..7d682dc62 100644 --- a/i18n/kor/src/tree.i18n.json +++ b/i18n/kor/src/tree.i18n.json @@ -14,6 +14,8 @@ "item.render.issue": "이 항목을 렌더링하는 동안 버그로 인해 문제가 발생했습니다.", "empty.project": "빈 프로젝트", "update.project.with.mismatch": "일치하지 않는 이름 속성으로 프로젝트 업데이트", - "error.update.code.model.on.nonexist.folder": "아직 없는 폴더의 코드 모델을 업데이트하는 중입니다.", + "workspace.active": "Active Workspace", + "workspace": "Workspace", + "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", "error.rendering.children.nodes": "자식 노드를 렌더링하는 동안 오류 발생" } \ No newline at end of file diff --git a/i18n/plk/package.i18n.json b/i18n/plk/package.i18n.json index 47d1b9c50..31a891579 100644 --- a/i18n/plk/package.i18n.json +++ b/i18n/plk/package.i18n.json @@ -104,13 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Katalogi, w których można zainstalować program Emscripten.", "cmake-tools.configuration.cmake.copyCompileCommands.description": "Kopiuj plik compile_commands.json do tej lokalizacji po pomyślnym skonfigurowaniu.", "cmake-tools.configuration.cmake.configureOnOpen.description": "Automatycznie konfiguruj katalogi projektu narzędzia CMake przy ich otwieraniu.", - "cmake-tools.configuration.cmake.useCMakeServer.description": "Włącz serwer narzędzia CMake.", + "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "Protokół używany do komunikacji między rozszerzeniem i narzędziem CMake", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "Nie używaj zmiennych środowiskowych zestawu podczas uruchamiania poleceń narzędzia CMake.", "cmake-tools.configuration.cmake.buildTask.description": "Kompiluj przy użyciu pliku tasks.json zamiast procesu wewnętrznego.", "cmake-tools.configuration.cmake.outputLogEncoding.description": "Kodowanie danych wyjściowych z poleceń zewnętrznych (np. cmake --build).", "cmake-tools.configuration.cmake.enableTraceLogging.description": "Włącz rejestrowanie śledzenia w pliku i na konsoli (bardzo dużo danych).", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "Wybierz aktywny folder automatycznie", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", "cmake-tools.configuration.views.cmake.folders.description": "Foldery", "cmake-tools.configuration.views.cmake.outline.description": "Konspekt projektu" } \ No newline at end of file diff --git a/i18n/plk/schemas/kits-schema.json.i18n.json b/i18n/plk/schemas/kits-schema.json.i18n.json index 8291fd205..6594479d9 100644 --- a/i18n/plk/schemas/kits-schema.json.i18n.json +++ b/i18n/plk/schemas/kits-schema.json.i18n.json @@ -12,6 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Ścieżka do pliku łańcucha narzędzi", "schemas/kits-schema.json.items.properties.visualStudio": "Nazwa produktu Visual Studio", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Architektura docelowa", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Wartość zmiennej środowiskowej", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Wartość ustawienia narzędzia CMake", "schemas/kits-schema.json.items.properties.preferredGenerator": "Ustaw preferowany generator narzędzia CMake dla tego zestawu", diff --git a/i18n/plk/src/cmake-tools.i18n.json b/i18n/plk/src/cmake-tools.i18n.json index b65ccc6f5..af13fc09f 100644 --- a/i18n/plk/src/cmake-tools.i18n.json +++ b/i18n/plk/src/cmake-tools.i18n.json @@ -12,9 +12,12 @@ "configuration.already.in.progress": "Konfiguracja jest już w toku.", "task.already.running": "Zadanie narzędzia CMake jest już uruchomione. Zatrzymaj je przed próbą uruchomienia nowego zadania narzędzia CMake.", "no.source.directory.found": "Nie masz otwartego katalogu źródłowego", - "quickstart.cmake.project": "Szybko rozpocznij nowy projekt narzędzia CMAKE", - "edit.setting": "Edytuj ustawienie „cmake.sourceDirectory”", - "missing.cmakelists": "Nie znaleziono pliku CMakeLists.txt w katalogu głównym folderu „{0}”", + "quickstart.cmake.project": "Create", + "edit.setting": "Locate", + "ignore.activation": "Don't show again", + "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", + "reload.window": "Reload Window", + "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", "starting.cmake.driver": "Uruchamianie sterownika narzędzia CMake", "bad.cmake.executable": "Nieprawidłowy plik wykonywalny narzędzia CMake „{0}”.", "switch.to.serverapi": "Tryb komunikacji interfejsu API pliku narzędzia CMake nie jest obsługiwany w wersjach wcześniejszych niż {0}. Przełączanie do trybu komunikacji serwera narzędzia CMake.", @@ -26,6 +29,9 @@ "second.phase.init": "Rozpoczynanie inicjowania drugiej fazy rozszerzenia CMakeTools", "active.build.variant.changed": "Zmieniono wariant aktywnej kompilacji", "changing.build.variant": "Zmienianie wariantu kompilacji", + "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", + "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", + "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", "injecting.new.kit": "Wstrzykiwanie nowego zestawu do sterownika narzędzia CMake", "reloading.status": "Trwa ponowne ładowanie...", "unable.to.set.kit": "Nie można ustawić zestawu „{0}”.", @@ -58,6 +64,7 @@ "cannot.configure.no.kit": "Nie można skonfigurować: żaden zestaw nie jest aktywny dla tych narzędzi CMake Tools", "waiting.on.variant": "Oczekiwanie przy wyborze wariantu", "no.variant.abort": "Nie wybrano wariantu. Przerwij konfigurowanie.", + "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", "cmake.drive.died.during.tasksbuildcommend": "Sterownik narzędzia CMake zakończył pracę podczas operacji tasksBuildCommand", "run.build": "Kompilowanie folderu: {0}", "unable.to.configure": "Kompilacja nie powiodła się: nie można skonfigurować projektu", diff --git a/i18n/plk/src/cpptools.i18n.json b/i18n/plk/src/cpptools.i18n.json index 6897db02c..ce71b4851 100644 --- a/i18n/plk/src/cpptools.i18n.json +++ b/i18n/plk/src/cpptools.i18n.json @@ -9,6 +9,5 @@ "unknown.control.gflag.c": "Nieznana flaga kontrolki standardowej języka C: {0}", "unknown.control.gflag": "Nieznana flaga kontrolki standardowej: {0}", "unknown language": "Nieznany język: {0}", - "method.not.implemented": "Metoda nie jest zaimplementowana.", "path.not.found.in.cmake.cache": "W pamięci podręcznej narzędzia CMake nie znaleziono ścieżki do kompilatora dla co najmniej jednego pliku źródłowego. Jeśli jest używany plik łańcucha narzędzi, prawdopodobnie oznacza to, że należy określić opcję CACHE w ramach ustawiania ścieżki kompilatora języka C i/lub C++." } \ No newline at end of file diff --git a/i18n/plk/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/plk/src/drivers/cmakefileapi/api_helpers.i18n.json index ca4cc6753..3f165ceaa 100644 --- a/i18n/plk/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/plk/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "failed.writing.to.file": "Failed writing to file {0}", "cache.object.version": "Wersja obiektu pamięci podręcznej ({0}.{1}) interfejsu cmake-file-api jest nieoczekiwana. Oczekiwano wersji ({2}.{3}). Konfiguracja funkcji IntelliSense może być niepoprawna.", "cache.entry.unknowntype": "Nieznany typ wpisu w pamięci podręcznej: {0}.", "code.model.version": "Wersja modelu kodu ({0}.{1}) interfejsu cmake-file-api jest nieoczekiwana. Oczekiwano wersji ({2}.{3}). Konfiguracja funkcji IntelliSense może być niepoprawna." diff --git a/i18n/plk/src/drivers/cmfileapi-driver.i18n.json b/i18n/plk/src/drivers/cmfileapi-driver.i18n.json new file mode 100644 index 000000000..2ecf56655 --- /dev/null +++ b/i18n/plk/src/drivers/cmfileapi-driver.i18n.json @@ -0,0 +1,9 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "removing": "Removing {0}", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." +} \ No newline at end of file diff --git a/i18n/plk/src/drivers/cms-driver.i18n.json b/i18n/plk/src/drivers/cms-driver.i18n.json index 715695a81..a30aee6e6 100644 --- a/i18n/plk/src/drivers/cms-driver.i18n.json +++ b/i18n/plk/src/drivers/cms-driver.i18n.json @@ -10,5 +10,6 @@ "found.no.matching.code.model": "Nie znaleziono pasującego modelu kodu dla bieżącego typu kompilacji. To nie powinno być możliwe.", "build.all.target": "Specjalny element docelowy umożliwiający kompilowanie wszystkich dostępnych elementów docelowych", "install.all.target": "Specjalny element docelowy umożliwiający zainstalowanie wszystkich dostępnych elementów docelowych", - "utility.target": "Element docelowy narzędzia" + "utility.target": "Element docelowy narzędzia", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." } \ No newline at end of file diff --git a/i18n/plk/src/drivers/driver.i18n.json b/i18n/plk/src/drivers/driver.i18n.json index 034e02759..c91b8e07b 100644 --- a/i18n/plk/src/drivers/driver.i18n.json +++ b/i18n/plk/src/drivers/driver.i18n.json @@ -17,6 +17,7 @@ "trying.to.detect.generator": "Próba wykrycia generatora obsługiwanego przez system", "start.configure": "Uruchom konfigurowanie", "cmake.flags.are": "Flagi narzędzia Cmake: {0}", + "configure.failed": "Failed to configure project", "no.kit.is.set": "Nie ustawiono zestawu!", "using.compilers.in.for.configure": "Użycie kompilatorów w lokalizacji {0} do konfigurowania", "using.cmake.toolchain.for.configure": "Użycie łańcucha narzędzi programu CMake {0} do konfigurowania", diff --git a/i18n/plk/src/extension.i18n.json b/i18n/plk/src/extension.i18n.json index 60fbe89c8..cea9ef4b7 100644 --- a/i18n/plk/src/extension.i18n.json +++ b/i18n/plk/src/extension.i18n.json @@ -10,10 +10,14 @@ "yes.button": "Tak", "not.now.button": "Nie teraz", "always.configure.on.open": "Czy zawsze konfigurować projekty przy otwieraniu?", - "never.configure.on.open": "Nigdy nie konfigurować projektów przy otwieraniu?", - "for.this.workspace.button": "Dla tego obszaru roboczego", + "never.configure.on.open": "Configure projects on opening?", + "no.button": "Nie", + "never.button": "Never", + "never.for.this.workspace.button": "Not this workspace", "persist.config.on.open.setting": "Utrwal ustawienie konfiguracji przy otwieraniu", "configuring.workspace.on.open": "Konfigurowanie obszaru roboczego przy otwieraniu elementu {0}", + "configure.now.button": "Configure Now", + "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", "update.code.model.for.cpptools": "Aktualizuj model kodu dla narzędzi cpptools", "filed.to.open.cache.file.on.code.model.update": "Nie można otworzyć pliku pamięci podręcznej narzędzia CMake podczas aktualizacji modelu kodu", "opening.text.editor.for": "Otwieranie edytora tekstu dla pliku {0}", diff --git a/i18n/plk/src/kit.i18n.json b/i18n/plk/src/kit.i18n.json index 556f10069..01822d7c4 100644 --- a/i18n/plk/src/kit.i18n.json +++ b/i18n/plk/src/kit.i18n.json @@ -34,6 +34,7 @@ "scanning.for.kits": "Skanowanie w poszukiwaniu zestawów", "scanning.for.cmake.kits": "Trwa skanowanie w poszukiwaniu zestawów narzędzia CMake...", "found.kit": "Znaleziono zestaw: {0}", + "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", "kit.for.toolchain.file": "Zestaw dla pliku łańcucha narzędzi {0}", "using.compilers.for": "Użycie kompilatorów dla elementu {0} (architektura {1})", "using.compilers": "Użycie kompilatorów: {0}", diff --git a/i18n/plk/src/kitsController.i18n.json b/i18n/plk/src/kitsController.i18n.json index d5514aeab..b5d411186 100644 --- a/i18n/plk/src/kitsController.i18n.json +++ b/i18n/plk/src/kitsController.i18n.json @@ -11,12 +11,10 @@ "unsetting.kit": "Cofanie ustawienia zestawu", "loading.kit": "Ładowanie zestawu {0}", "invalid.only.kit": "Jedyny zestaw jest nieprawidłowy. Oczekiwano znalezienia elementu „{0}”.", - "scan.for.kits.button": "Skanuj w poszukiwaniu zestawów", - "do.not.use.kit.button": "Nie należy używać zestawu", - "close.button": "Zamknij", - "no.kits.available": "Nie ma dostępnych żadnych zestawów narzędzia CMake. Co chcesz zrobić?", + "already.checking.kits": "Already checking kits. Please try again later.", "start.selection.of.kits": "Rozpocznij wybieranie zestawów. Liczba znalezionych zestawów: {0}.", "opening.kit.selection": "Otwieranie elementu QuickPick wyboru zestawu", + "scan.for.kits.button": "Skanuj w poszukiwaniu zestawów", "unspecified.kit.name": "Nieokreślone", "select.a.kit.placeholder": "Wybierz zestaw dla: {0}", "user.cancelled.kit.selection": "Użytkownik anulował wybór zestawu", diff --git a/i18n/plk/src/status.i18n.json b/i18n/plk/src/status.i18n.json index bd58577bb..98d7be905 100644 --- a/i18n/plk/src/status.i18n.json +++ b/i18n/plk/src/status.i18n.json @@ -4,22 +4,22 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "active.folder.auto.select.tooltip": "Aktywny folder", - "active.folder.tooltip": "Wybierz aktywny folder", + "click.to.select.workspace.tooltip": "Click to select the active folder", "unconfigured": "Brak konfiguracji", - "loading.status": "Trwa ładowanie...", "click.to.select.variant.tooltip": "Kliknij, aby wybrać wariant bieżącej kompilacji", + "loading.status": "Trwa ładowanie...", "click.to.change.kit.tooltip": "Kliknij, aby zmienić aktywny zestaw", + "no.active.kit": "Nie ma aktywnego zestawu", + "no.kit.selected": "Nie wybrano zestawu", "set.active.target.tooltip": "Skonfiguruj aktywny element docelowy do skompilowania", - "run.ctest.tests.tooltip": "Uruchom testy narzędzia CTest", - "launch.debugger.tooltip": "Uruchom debuger dla wybranego elementu docelowego", "select.target.tooltip": "Wybierz element docelowy do uruchomienia", - "debug": "Debuguj", + "launch.debugger.tooltip": "Uruchom debuger dla wybranego elementu docelowego", + "launch.tooltip": "Launch the selected target in the terminal window", + "run.ctest.tests.tooltip": "Uruchom testy narzędzia CTest", "run.ctest": "Uruchom narzędzie CTest", "test.passing": "{0}/{1} testu zakończono powodzeniem", "tests.passing": "{0}/{1} testów zakończono powodzeniem", - "stop": "Zatrzymaj", + "build.tooltip": "Build the selected target", "build": "Kompilacja", - "no.kit.selected": "Nie wybrano zestawu", - "no.active.kit": "Nie ma aktywnego zestawu" + "stop": "Zatrzymaj" } \ No newline at end of file diff --git a/i18n/plk/src/tree.i18n.json b/i18n/plk/src/tree.i18n.json index 2b23ccaf1..1e73feb6f 100644 --- a/i18n/plk/src/tree.i18n.json +++ b/i18n/plk/src/tree.i18n.json @@ -14,6 +14,8 @@ "item.render.issue": "Wystąpił problem podczas renderowania tego elementu. To jest usterka.", "empty.project": "Pusty projekt", "update.project.with.mismatch": "Aktualizuj projekt z niezgodną właściwością nazwy", - "error.update.code.model.on.nonexist.folder": "Wykonywania jest aktualizacja modelu kodu w folderze, który jeszcze nie istnieje?", + "workspace.active": "Active Workspace", + "workspace": "Workspace", + "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", "error.rendering.children.nodes": "Błąd podczas renderowania węzłów podrzędnych" } \ No newline at end of file diff --git a/i18n/ptb/package.i18n.json b/i18n/ptb/package.i18n.json index 9149dd0aa..ee458032e 100644 --- a/i18n/ptb/package.i18n.json +++ b/i18n/ptb/package.i18n.json @@ -104,13 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Os diretórios nos quais o Emscripten pode ser instalado.", "cmake-tools.configuration.cmake.copyCompileCommands.description": "Copiar o compile_commands.json neste local após uma configuração bem-sucedida.", "cmake-tools.configuration.cmake.configureOnOpen.description": "Configurar os diretórios de projeto do CMake automaticamente quando eles forem abertos.", - "cmake-tools.configuration.cmake.useCMakeServer.description": "Habilitar o servidor do CMake.", + "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "O protocolo usado para a comunicação entre a extensão e o CMake", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "Não use as variáveis de ambiente do kit ao executar os comandos do CMake.", "cmake-tools.configuration.cmake.buildTask.description": "Compilar usando o tasks.json em vez do processo interno.", "cmake-tools.configuration.cmake.outputLogEncoding.description": "A codificação da saída de comandos externos (ex.: cmake -- build).", "cmake-tools.configuration.cmake.enableTraceLogging.description": "Habilitar o log de rastreamento para arquivo e console (muito ruído).", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "Selecionar a pasta ativa automaticamente", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", "cmake-tools.configuration.views.cmake.folders.description": "Pastas", "cmake-tools.configuration.views.cmake.outline.description": "Estrutura do Código do Projeto" } \ No newline at end of file diff --git a/i18n/ptb/schemas/kits-schema.json.i18n.json b/i18n/ptb/schemas/kits-schema.json.i18n.json index 6d5b29444..4a1e5611c 100644 --- a/i18n/ptb/schemas/kits-schema.json.i18n.json +++ b/i18n/ptb/schemas/kits-schema.json.i18n.json @@ -12,6 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Caminho para um arquivo de cadeia de ferramentas", "schemas/kits-schema.json.items.properties.visualStudio": "Nome do produto do Visual Studio", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Arquitetura a ser direcionada", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Valor para a variável de ambiente", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Valor para a Configuração do CMake", "schemas/kits-schema.json.items.properties.preferredGenerator": "Definir um gerador de CMake preferencial para este Kit", diff --git a/i18n/ptb/src/cmake-tools.i18n.json b/i18n/ptb/src/cmake-tools.i18n.json index f5d61c8e8..56e0cb684 100644 --- a/i18n/ptb/src/cmake-tools.i18n.json +++ b/i18n/ptb/src/cmake-tools.i18n.json @@ -12,9 +12,12 @@ "configuration.already.in.progress": "A configuração já está em andamento.", "task.already.running": "Uma tarefa do CMake já está em execução. Interrompa-a antes de tentar executar uma nova tarefa do CMake.", "no.source.directory.found": "Você não tem um diretório de origem aberto", - "quickstart.cmake.project": "Comece rapidamente um novo projeto do CMake", - "edit.setting": "Editar a configuração 'cmake.sourceDirectory'", - "missing.cmakelists": "O CMakeLists.txt não foi encontrado na raiz da pasta '{0}'", + "quickstart.cmake.project": "Create", + "edit.setting": "Locate", + "ignore.activation": "Don't show again", + "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", + "reload.window": "Reload Window", + "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", "starting.cmake.driver": "Iniciando o driver do CMake", "bad.cmake.executable": "Executável CMake \"{0}\" incorreto.", "switch.to.serverapi": "O modo de comunicação entre arquivo e API do CMake não tem suporte em versões anteriores à {0}. Alternando para o modo de comunicação do servidor do CMake.", @@ -26,6 +29,9 @@ "second.phase.init": "Começando a inicialização da segunda fase do CMakeTools", "active.build.variant.changed": "Variante de build ativa alterada", "changing.build.variant": "Alterando a variante de build", + "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", + "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", + "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", "injecting.new.kit": "Injetando novo Kit no driver do CMake", "reloading.status": "Recarregando...", "unable.to.set.kit": "Não é possível definir o kit \"{0}\".", @@ -58,6 +64,7 @@ "cannot.configure.no.kit": "Não é possível configurar: nenhum kit está ativo para estas Ferramentas CMake", "waiting.on.variant": "Aguardando a seleção da variante", "no.variant.abort": "Nenhuma variante selecionada. Anular configuração", + "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", "cmake.drive.died.during.tasksbuildcommend": "O driver do CMake foi encerrado durante tasksBuildCommand", "run.build": "Compilando a pasta: {0}", "unable.to.configure": "Falha no build: não é possível configurar o projeto", diff --git a/i18n/ptb/src/cpptools.i18n.json b/i18n/ptb/src/cpptools.i18n.json index a1be8ecc5..e5b3c34c8 100644 --- a/i18n/ptb/src/cpptools.i18n.json +++ b/i18n/ptb/src/cpptools.i18n.json @@ -9,6 +9,5 @@ "unknown.control.gflag.c": "Sinalizador de controle padrão C desconhecido: {0}", "unknown.control.gflag": "Marca de controle padrão desconhecida: {0}", "unknown language": "Idioma desconhecido: {0}", - "method.not.implemented": "O método não foi implementado.", "path.not.found.in.cmake.cache": "O caminho para o compilador de um ou mais arquivos de origem não foi localizado no cache do CMake. Se você está usando um arquivo de cadeia de ferramentas, isso provavelmente significa que será necessário especificar a opção CACHE ao definir o caminho do compilador C e/ou C++" } \ No newline at end of file diff --git a/i18n/ptb/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/ptb/src/drivers/cmakefileapi/api_helpers.i18n.json index a54622e9c..b16deec2b 100644 --- a/i18n/ptb/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/ptb/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "failed.writing.to.file": "Failed writing to file {0}", "cache.object.version": "A versão do objeto de cache ({0}.{1}) de cmake-file-api é inesperada. Esperava-se ({2}.{3}). A configuração do IntelliSense pode estar incorreta.", "cache.entry.unknowntype": "Tipo de entrada de cache desconhecido: {0}.", "code.model.version": "A versão do modelo de código ({0}.{1}) de cmake-file-api é inesperada. Esperava-se ({2}.{3}). A configuração do IntelliSense pode estar incorreta." diff --git a/i18n/ptb/src/drivers/cmfileapi-driver.i18n.json b/i18n/ptb/src/drivers/cmfileapi-driver.i18n.json new file mode 100644 index 000000000..2ecf56655 --- /dev/null +++ b/i18n/ptb/src/drivers/cmfileapi-driver.i18n.json @@ -0,0 +1,9 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "removing": "Removing {0}", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." +} \ No newline at end of file diff --git a/i18n/ptb/src/drivers/cms-driver.i18n.json b/i18n/ptb/src/drivers/cms-driver.i18n.json index 12ff7cbc5..8f9199153 100644 --- a/i18n/ptb/src/drivers/cms-driver.i18n.json +++ b/i18n/ptb/src/drivers/cms-driver.i18n.json @@ -10,5 +10,6 @@ "found.no.matching.code.model": "Não foi localizado nenhum modelo de código correspondente para o tipo de build atual. Isso não deve ser possível", "build.all.target": "Um destino especial para compilar todos os destinos disponíveis", "install.all.target": "Um destino especial para instalar todos os destinos disponíveis", - "utility.target": "Destino do utilitário" + "utility.target": "Destino do utilitário", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." } \ No newline at end of file diff --git a/i18n/ptb/src/drivers/driver.i18n.json b/i18n/ptb/src/drivers/driver.i18n.json index 1c34a3076..643face24 100644 --- a/i18n/ptb/src/drivers/driver.i18n.json +++ b/i18n/ptb/src/drivers/driver.i18n.json @@ -17,6 +17,7 @@ "trying.to.detect.generator": "Tentando detectar o gerador compatível com o sistema", "start.configure": "Iniciar a configuração", "cmake.flags.are": "Sinalizadores do CMake: {0}", + "configure.failed": "Failed to configure project", "no.kit.is.set": "Nenhum kit está definido!", "using.compilers.in.for.configure": "Usando compiladores em {0} para configurar", "using.cmake.toolchain.for.configure": "Usando a cadeia de ferramentas CMake {0} para configurar", diff --git a/i18n/ptb/src/extension.i18n.json b/i18n/ptb/src/extension.i18n.json index a8915dade..1214fe952 100644 --- a/i18n/ptb/src/extension.i18n.json +++ b/i18n/ptb/src/extension.i18n.json @@ -10,10 +10,14 @@ "yes.button": "Sim", "not.now.button": "Agora não", "always.configure.on.open": "Sempre configurar projetos ao abrir?", - "never.configure.on.open": "Nunca configurar projetos na abertura?", - "for.this.workspace.button": "Para este Workspace", + "never.configure.on.open": "Configure projects on opening?", + "no.button": "Não", + "never.button": "Never", + "never.for.this.workspace.button": "Not this workspace", "persist.config.on.open.setting": "Persistir na configuração existente ao abrir", "configuring.workspace.on.open": "Configurando o workspace no {0} aberto", + "configure.now.button": "Configure Now", + "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", "update.code.model.for.cpptools": "Atualizar o modelo de código para cpptools", "filed.to.open.cache.file.on.code.model.update": "Falha ao abrir o arquivo de cache do CMake na atualização do modelo de código", "opening.text.editor.for": "Abrindo o editor de texto para {0}", diff --git a/i18n/ptb/src/kit.i18n.json b/i18n/ptb/src/kit.i18n.json index ed70e7ed9..99ba6c21a 100644 --- a/i18n/ptb/src/kit.i18n.json +++ b/i18n/ptb/src/kit.i18n.json @@ -34,6 +34,7 @@ "scanning.for.kits": "Examinando em busca de kits", "scanning.for.cmake.kits": "Examinando em busca de kits do CMake...", "found.kit": "Kit Localizado: {0}", + "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", "kit.for.toolchain.file": "Kit para de arquivo de cadeia de ferramentas {0}", "using.compilers.for": "Usando compiladores para {0} (arquitetura {1})", "using.compilers": "Usando compiladores: {0}", diff --git a/i18n/ptb/src/kitsController.i18n.json b/i18n/ptb/src/kitsController.i18n.json index 22e066dd6..3ea79e636 100644 --- a/i18n/ptb/src/kitsController.i18n.json +++ b/i18n/ptb/src/kitsController.i18n.json @@ -11,12 +11,10 @@ "unsetting.kit": "Cancelando a definição do kit", "loading.kit": "Carregando o kit {0}", "invalid.only.kit": "Único kit inválido. Esperava-se encontrar `{0}`", - "scan.for.kits.button": "Examinar em busca de kits", - "do.not.use.kit.button": "Não use um kit", - "close.button": "Fechar", - "no.kits.available": "Nenhum kit do CMake está disponível. O que você deseja fazer?", + "already.checking.kits": "Already checking kits. Please try again later.", "start.selection.of.kits": "Iniciar seleção de kits. {0} kits localizados.", "opening.kit.selection": "Abrindo QuickPick de seleção do kit", + "scan.for.kits.button": "Examinar em busca de kits", "unspecified.kit.name": "Não especificado", "select.a.kit.placeholder": "Selecionar um Kit para {0}", "user.cancelled.kit.selection": "O usuário cancelou a seleção do Kit", diff --git a/i18n/ptb/src/status.i18n.json b/i18n/ptb/src/status.i18n.json index 070d2be57..8fe170f26 100644 --- a/i18n/ptb/src/status.i18n.json +++ b/i18n/ptb/src/status.i18n.json @@ -4,22 +4,22 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "active.folder.auto.select.tooltip": "Pasta ativa", - "active.folder.tooltip": "Selecionar a pasta Ativa", + "click.to.select.workspace.tooltip": "Click to select the active folder", "unconfigured": "Não Configurado", - "loading.status": "Carregando...", "click.to.select.variant.tooltip": "Clicar para selecionar a variante de build atual", + "loading.status": "Carregando...", "click.to.change.kit.tooltip": "Clicar para alterar o kit ativo", + "no.active.kit": "Nenhum kit ativo", + "no.kit.selected": "Nenhum Kit Selecionado", "set.active.target.tooltip": "Definir o destino ativo a ser compilado", - "run.ctest.tests.tooltip": "Executar testes do CTest", - "launch.debugger.tooltip": "Iniciar o depurador para o destino selecionado", "select.target.tooltip": "Selecionar o destino a ser iniciado", - "debug": "Depurar", + "launch.debugger.tooltip": "Iniciar o depurador para o destino selecionado", + "launch.tooltip": "Launch the selected target in the terminal window", + "run.ctest.tests.tooltip": "Executar testes do CTest", "run.ctest": "Executar CTest", "test.passing": "{0}/{1} aprovação no teste", "tests.passing": "{0}/{1} aprovações no teste", - "stop": "Parar", + "build.tooltip": "Build the selected target", "build": "Compilar", - "no.kit.selected": "Nenhum Kit Selecionado", - "no.active.kit": "Nenhum kit ativo" + "stop": "Parar" } \ No newline at end of file diff --git a/i18n/ptb/src/tree.i18n.json b/i18n/ptb/src/tree.i18n.json index 540bd91fc..e13f285bc 100644 --- a/i18n/ptb/src/tree.i18n.json +++ b/i18n/ptb/src/tree.i18n.json @@ -14,6 +14,8 @@ "item.render.issue": "Houve um problema ao renderizar este item. Isso é um bug", "empty.project": "Projeto vazio", "update.project.with.mismatch": "Atualizar o projeto com propriedade de nome incompatível", - "error.update.code.model.on.nonexist.folder": "Atualizando o modelo de código em uma pasta que ainda não existe?", + "workspace.active": "Active Workspace", + "workspace": "Workspace", + "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", "error.rendering.children.nodes": "Erro ao renderizar os nós filhos" } \ No newline at end of file diff --git a/i18n/rus/package.i18n.json b/i18n/rus/package.i18n.json index 56acd0c84..25b2250d0 100644 --- a/i18n/rus/package.i18n.json +++ b/i18n/rus/package.i18n.json @@ -104,13 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Каталоги, где возможна установка Emscripten.", "cmake-tools.configuration.cmake.copyCompileCommands.description": "Копирование сюда файла compile_commands.json после выполнения настройки.", "cmake-tools.configuration.cmake.configureOnOpen.description": "Автоматическая настройка каталогов проекта CMake при их открытии.", - "cmake-tools.configuration.cmake.useCMakeServer.description": "Включение сервера CMake.", + "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "Протокол, используемый для взаимодействия между расширением и CMake", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "Отключение использования переменных среды при выполнении команд CMake.", "cmake-tools.configuration.cmake.buildTask.description": "Сборка с помощью tasks.json вместо внутреннего процесса.", "cmake-tools.configuration.cmake.outputLogEncoding.description": "Кодирование выходных данных из внешних команд (например, cmake --build).", "cmake-tools.configuration.cmake.enableTraceLogging.description": "Включение ведения журнала трассировки в файле и в консоли (большое число сообщений).", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "Автоматический выбор активной папки", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", "cmake-tools.configuration.views.cmake.folders.description": "Папки", "cmake-tools.configuration.views.cmake.outline.description": "Структура проекта" } \ No newline at end of file diff --git a/i18n/rus/schemas/kits-schema.json.i18n.json b/i18n/rus/schemas/kits-schema.json.i18n.json index 989221121..9df5f9ada 100644 --- a/i18n/rus/schemas/kits-schema.json.i18n.json +++ b/i18n/rus/schemas/kits-schema.json.i18n.json @@ -12,6 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Путь к файлу цепочки инструментов", "schemas/kits-schema.json.items.properties.visualStudio": "Имя продукта Visual Studio", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Целевая архитектура", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Значение переменной среды", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Значение параметра CMake", "schemas/kits-schema.json.items.properties.preferredGenerator": "Установить предпочтительный генератор CMake для этого набора", diff --git a/i18n/rus/src/cmake-tools.i18n.json b/i18n/rus/src/cmake-tools.i18n.json index bd5b03071..0892de933 100644 --- a/i18n/rus/src/cmake-tools.i18n.json +++ b/i18n/rus/src/cmake-tools.i18n.json @@ -12,9 +12,12 @@ "configuration.already.in.progress": "Настройка уже выполняется.", "task.already.running": "Задача CMake уже выполняется. Остановите ее перед запуском новой задачи CMake.", "no.source.directory.found": "У вас нет открытого каталога источника.", - "quickstart.cmake.project": "Быстрый запуск нового проекта CMake", - "edit.setting": "Изменить параметр \"cmake.sourceDirectory\"", - "missing.cmakelists": "Файл CMakeLists.txt не найден в корневом каталоге папки \"{0}\"", + "quickstart.cmake.project": "Create", + "edit.setting": "Locate", + "ignore.activation": "Don't show again", + "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", + "reload.window": "Reload Window", + "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", "starting.cmake.driver": "Запуск драйвера CMake.", "bad.cmake.executable": "Неверный исполняемый файл CMake \"{0}\".", "switch.to.serverapi": "Режим взаимодействия file-api CMake не поддерживается в версиях ниже {0}. Переключение на режим взаимодействия сервера CMake.", @@ -26,6 +29,9 @@ "second.phase.init": "Запуск второго этапа инициализации CMakeTools.", "active.build.variant.changed": "Изменен активный вариант сборки.", "changing.build.variant": "Изменение варианта сборки", + "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", + "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", + "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", "injecting.new.kit": "Внедрение нового набора в драйвер CMake.", "reloading.status": "Перезагрузка…", "unable.to.set.kit": "Не удалось установить набор \"{0}\".", @@ -58,6 +64,7 @@ "cannot.configure.no.kit": "Не удается выполнить настройку: отсутствуют активные наборы для этих Средств CMake.", "waiting.on.variant": "Ожидание выбора варианта.", "no.variant.abort": "Вариант не выбран. Прервите настройку.", + "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", "cmake.drive.died.during.tasksbuildcommend": "Драйвер CMake завершил работу во время tasksBuildCommand", "run.build": "Сборка папки: {0}", "unable.to.configure": "Сборка не выполнена: невозможно настроить проект.", diff --git a/i18n/rus/src/cpptools.i18n.json b/i18n/rus/src/cpptools.i18n.json index 3765dff4d..94072f34a 100644 --- a/i18n/rus/src/cpptools.i18n.json +++ b/i18n/rus/src/cpptools.i18n.json @@ -9,6 +9,5 @@ "unknown.control.gflag.c": "Неизвестный стандартный флаг управления C: {0}.", "unknown.control.gflag": "Неизвестный стандартный флаг управления: {0}.", "unknown language": "Неизвестный язык: {0}", - "method.not.implemented": "Метод не реализован.", "path.not.found.in.cmake.cache": "Путь к компилятору для одного или нескольких исходных файлов не найден в кэше CMake. Если вы используете файл цепочки инструментов, это может означать, что при задании пути к компилятору C и/или C++ необходимо указать параметр CACHE." } \ No newline at end of file diff --git a/i18n/rus/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/rus/src/drivers/cmakefileapi/api_helpers.i18n.json index 1189ed91a..aa77edd08 100644 --- a/i18n/rus/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/rus/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "failed.writing.to.file": "Failed writing to file {0}", "cache.object.version": "Неожиданная версия объекта кэша cmake-file-api ({0}.{1}). Ожидаемая версия: ({2}.{3}). Возможно, конфигурация IntelliSense задана неправильно.", "cache.entry.unknowntype": "Неизвестный тип записи кэша: {0}.", "code.model.version": "Неожиданная версия модели кода cmake-file-api ({0}.{1}). Ожидаемая версия: ({2}.{3}). Возможно, конфигурация IntelliSense задана неправильно." diff --git a/i18n/rus/src/drivers/cmfileapi-driver.i18n.json b/i18n/rus/src/drivers/cmfileapi-driver.i18n.json new file mode 100644 index 000000000..2ecf56655 --- /dev/null +++ b/i18n/rus/src/drivers/cmfileapi-driver.i18n.json @@ -0,0 +1,9 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "removing": "Removing {0}", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." +} \ No newline at end of file diff --git a/i18n/rus/src/drivers/cms-driver.i18n.json b/i18n/rus/src/drivers/cms-driver.i18n.json index 3ceeccd12..e885d5167 100644 --- a/i18n/rus/src/drivers/cms-driver.i18n.json +++ b/i18n/rus/src/drivers/cms-driver.i18n.json @@ -10,5 +10,6 @@ "found.no.matching.code.model": "Не найдена соответствующая модель кода для текущего типа сборки. Это свидетельствует об ошибке.", "build.all.target": "Специальный целевой объект для создания всех доступных целевых объектов", "install.all.target": "Специальный целевой объект для установки всех доступных целевых объектов", - "utility.target": "Целевой объект служебной программы" + "utility.target": "Целевой объект служебной программы", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." } \ No newline at end of file diff --git a/i18n/rus/src/drivers/driver.i18n.json b/i18n/rus/src/drivers/driver.i18n.json index c7ea6bfa8..583abb1c3 100644 --- a/i18n/rus/src/drivers/driver.i18n.json +++ b/i18n/rus/src/drivers/driver.i18n.json @@ -17,6 +17,7 @@ "trying.to.detect.generator": "Попытка найти генератор, поддерживаемый системой.", "start.configure": "Запустить настройку", "cmake.flags.are": "Флаги CMake: {0}", + "configure.failed": "Failed to configure project", "no.kit.is.set": "Набор не задан.", "using.compilers.in.for.configure": "Использование компиляторов в {0} для настройки.", "using.cmake.toolchain.for.configure": "Использование цепочки инструментов CMake {0} для настройки.", diff --git a/i18n/rus/src/extension.i18n.json b/i18n/rus/src/extension.i18n.json index 563bfc609..bbe0b28af 100644 --- a/i18n/rus/src/extension.i18n.json +++ b/i18n/rus/src/extension.i18n.json @@ -10,10 +10,14 @@ "yes.button": "Да", "not.now.button": "Не сейчас", "always.configure.on.open": "Всегда настраивать проекты при открытии?", - "never.configure.on.open": "Никогда не настраивать проекты при открытии?", - "for.this.workspace.button": "Для этой рабочей области", + "never.configure.on.open": "Configure projects on opening?", + "no.button": "Нет", + "never.button": "Never", + "never.for.this.workspace.button": "Not this workspace", "persist.config.on.open.setting": "Сохранить параметр конфигурации при открытии", "configuring.workspace.on.open": "Настройка рабочей области в открытом {0}.", + "configure.now.button": "Configure Now", + "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", "update.code.model.for.cpptools": "Обновление модели кода для cpptools", "filed.to.open.cache.file.on.code.model.update": "Не удалось открыть файл кэша CMake при обновлении модели кода.", "opening.text.editor.for": "Открытие текстового редактора для {0}.", diff --git a/i18n/rus/src/kit.i18n.json b/i18n/rus/src/kit.i18n.json index 7c49f23e3..be905be36 100644 --- a/i18n/rus/src/kit.i18n.json +++ b/i18n/rus/src/kit.i18n.json @@ -34,6 +34,7 @@ "scanning.for.kits": "Поиск наборов.", "scanning.for.cmake.kits": "Поиск наборов CMake…", "found.kit": "Обнаруженный набор: {0}.", + "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", "kit.for.toolchain.file": "Набор для файла цепочки инструментов {0}", "using.compilers.for": "Использование компиляторов для {0} (архитектура {1}).", "using.compilers": "Использование компиляторов: {0}", diff --git a/i18n/rus/src/kitsController.i18n.json b/i18n/rus/src/kitsController.i18n.json index 6eb9bfad4..8dda94e0c 100644 --- a/i18n/rus/src/kitsController.i18n.json +++ b/i18n/rus/src/kitsController.i18n.json @@ -11,12 +11,10 @@ "unsetting.kit": "Отмена настройки набора.", "loading.kit": "Загрузка набора {0}.", "invalid.only.kit": "Недопустимый набор. Ожидаемый набор: \"{0}\".", - "scan.for.kits.button": "Поиск наборов", - "do.not.use.kit.button": "Не использовать набор", - "close.button": "Закрыть", - "no.kits.available": "Доступные наборы CMake отсутствуют. Что вы хотели бы сделать?", + "already.checking.kits": "Already checking kits. Please try again later.", "start.selection.of.kits": "Начало выбора наборов. Обнаружено наборов: {0}.", "opening.kit.selection": "Открытие средства выбора наборов QuickPick.", + "scan.for.kits.button": "Поиск наборов", "unspecified.kit.name": "Не указано", "select.a.kit.placeholder": "Выберите набор для {0}", "user.cancelled.kit.selection": "Выбор набора отменен пользователем.", diff --git a/i18n/rus/src/status.i18n.json b/i18n/rus/src/status.i18n.json index d62cdd3be..721b73bd0 100644 --- a/i18n/rus/src/status.i18n.json +++ b/i18n/rus/src/status.i18n.json @@ -4,22 +4,22 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "active.folder.auto.select.tooltip": "Активная папка", - "active.folder.tooltip": "Выбор активной папки", + "click.to.select.workspace.tooltip": "Click to select the active folder", "unconfigured": "Не настроено", - "loading.status": "Загрузка...", "click.to.select.variant.tooltip": "Щелкните, чтобы выбрать вариант текущей сборки.", + "loading.status": "Загрузка...", "click.to.change.kit.tooltip": "Щелкните, чтобы изменить активный набор.", + "no.active.kit": "Активный набор отсутствует.", + "no.kit.selected": "Не выбран ни один набор.", "set.active.target.tooltip": "Настройка активного целевого объекта для сборки", - "run.ctest.tests.tooltip": "Запуск тестов CTest", - "launch.debugger.tooltip": "Запуск отладчика для выбранного целевого объекта", "select.target.tooltip": "Выбор целевого объекта для запуска.", - "debug": "Отладка", + "launch.debugger.tooltip": "Запуск отладчика для выбранного целевого объекта", + "launch.tooltip": "Launch the selected target in the terminal window", + "run.ctest.tests.tooltip": "Запуск тестов CTest", "run.ctest": "Запустить CTest", "test.passing": "{0}/{1} тест пройден.", "tests.passing": "Тестов пройдено: {0}/{1}.", - "stop": "Остановка", + "build.tooltip": "Build the selected target", "build": "Сборка", - "no.kit.selected": "Не выбран ни один набор.", - "no.active.kit": "Активный набор отсутствует." + "stop": "Остановка" } \ No newline at end of file diff --git a/i18n/rus/src/tree.i18n.json b/i18n/rus/src/tree.i18n.json index de873350a..5d8eaa5d4 100644 --- a/i18n/rus/src/tree.i18n.json +++ b/i18n/rus/src/tree.i18n.json @@ -14,6 +14,8 @@ "item.render.issue": "Возникла проблема при отрисовке этого элемента. Это ошибка.", "empty.project": "Пустой проект", "update.project.with.mismatch": "Обновление проекта с несоответствующим свойством имени", - "error.update.code.model.on.nonexist.folder": "Обновление модели кода в папке, которая еще не существует.", + "workspace.active": "Active Workspace", + "workspace": "Workspace", + "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", "error.rendering.children.nodes": "Ошибка при отображении дочерних узлов." } \ No newline at end of file diff --git a/i18n/trk/package.i18n.json b/i18n/trk/package.i18n.json index bc2dd27b3..df50a756e 100644 --- a/i18n/trk/package.i18n.json +++ b/i18n/trk/package.i18n.json @@ -104,13 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Emscripten'in yüklü olabileceği dizinler.", "cmake-tools.configuration.cmake.copyCompileCommands.description": "Başarılı bir yapılandırmadan sonra compile_commands.json dosyasını bu konuma kopyala.", "cmake-tools.configuration.cmake.configureOnOpen.description": "CMake proje dizinleri açıldığında bu dizinleri otomatik olarak yapılandır.", - "cmake-tools.configuration.cmake.useCMakeServer.description": "CMake sunucusunu etkinleştirin.", + "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "Uzantı ve CMake arasında iletişim kurmak için kullanılan protokol", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "CMake komutlarını çalıştırırken set ortamı değişkenlerini kullanmayın.", "cmake-tools.configuration.cmake.buildTask.description": "İç işlem yerine tasks.json kullanarak derle.", "cmake-tools.configuration.cmake.outputLogEncoding.description": "Dış komutlardan (ör. cmake -- build) gelen çıkışın kodlaması.", "cmake-tools.configuration.cmake.enableTraceLogging.description": "Dosya ve konsolda izleme günlüğünü etkinleştirin (çok gürültülü).", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "Etkin klasörü otomatik olarak seç", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", "cmake-tools.configuration.views.cmake.folders.description": "Klasörler", "cmake-tools.configuration.views.cmake.outline.description": "Proje Ana Hattı" } \ No newline at end of file diff --git a/i18n/trk/schemas/kits-schema.json.i18n.json b/i18n/trk/schemas/kits-schema.json.i18n.json index 1ce8af2cb..087731466 100644 --- a/i18n/trk/schemas/kits-schema.json.i18n.json +++ b/i18n/trk/schemas/kits-schema.json.i18n.json @@ -12,6 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Araç zinciri dosyasının yolu", "schemas/kits-schema.json.items.properties.visualStudio": "Visual Studio ürününün adı", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Hedeflenecek mimari", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Ortam değişkeninin değeri", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "CMake Ayarının değeri", "schemas/kits-schema.json.items.properties.preferredGenerator": "Bu Set için tercih edilen bir CMake oluşturucusu ayarlayın", diff --git a/i18n/trk/src/cmake-tools.i18n.json b/i18n/trk/src/cmake-tools.i18n.json index f96371883..d2386c8f5 100644 --- a/i18n/trk/src/cmake-tools.i18n.json +++ b/i18n/trk/src/cmake-tools.i18n.json @@ -12,9 +12,12 @@ "configuration.already.in.progress": "Yapılandırma zaten devam ediyor.", "task.already.running": "Bir CMake görevi zaten çalışıyor. Yeni bir CMake görevi çalıştırmayı denemeden önce bunu durdurun.", "no.source.directory.found": "Açık bir kaynak dizininiz yok", - "quickstart.cmake.project": "Yeni bir CMake projesini hızlı başlatın", - "edit.setting": "'cmake.sourceDirectory' ayarını düzenle", - "missing.cmakelists": "CMakeLists.txt, '{0}' klasörünün kökünde bulunamadı", + "quickstart.cmake.project": "Create", + "edit.setting": "Locate", + "ignore.activation": "Don't show again", + "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", + "reload.window": "Reload Window", + "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", "starting.cmake.driver": "CMake sürücüsü başlatılıyor", "bad.cmake.executable": "Hatalı \"{0}\" CMake yürütülebilir dosyası.", "switch.to.serverapi": "CMake file-api iletişim modu, {0} öncesi sürümlerde desteklenmiyor. CMake server iletişimi moduna geçiliyor.", @@ -26,6 +29,9 @@ "second.phase.init": "CMake Araçları ikinci aşama başlatması başlatılıyor", "active.build.variant.changed": "Etkin derleme varyantı değiştirildi", "changing.build.variant": "Derleme varyantı değiştiriliyor", + "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", + "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", + "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", "injecting.new.kit": "CMake sürücüsüne yeni Set ekleniyor", "reloading.status": "Yeniden yükleniyor...", "unable.to.set.kit": "\"{0}\" seti ayarlanamıyor.", @@ -58,6 +64,7 @@ "cannot.configure.no.kit": "Yapılandırılamıyor: Bu CMake Araçları için etkin bir set yok", "waiting.on.variant": "Varyant seçimi bekleniyor", "no.variant.abort": "Seçilen varyant yok. Yapılandırmayı durdur", + "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", "cmake.drive.died.during.tasksbuildcommend": "CMake sürücüsü tasksBuildCommand sırasında sonlandırıldı", "run.build": "Yapı klasörü: {0}", "unable.to.configure": "Derleme başarısız oldu: Proje yapılandırılamıyor", diff --git a/i18n/trk/src/cpptools.i18n.json b/i18n/trk/src/cpptools.i18n.json index 0a6477102..41a0f9ce4 100644 --- a/i18n/trk/src/cpptools.i18n.json +++ b/i18n/trk/src/cpptools.i18n.json @@ -9,6 +9,5 @@ "unknown.control.gflag.c": "Bilinmeyen C standart denetim bayrağı: {0}", "unknown.control.gflag": "Bilinmeyen standart denetim bayrağı: {0}", "unknown language": "Bilinmeyen dil: {0}", - "method.not.implemented": "Yöntem uygulanmadı.", "path.not.found.in.cmake.cache": "Bir veya daha fazla kaynak dosya için derleyicinin yolu CMake önbelleğinde bulunamadı. Bir araç zinciri dosyası kullanıyorsanız, bu büyük olasılıkla C ve/veya C++ derleyici yolunuzu ayarlarken CACHE seçeneğini belirtmeniz gerektiği anlamına gelir" } \ No newline at end of file diff --git a/i18n/trk/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/trk/src/drivers/cmakefileapi/api_helpers.i18n.json index af7d5418f..7903761ab 100644 --- a/i18n/trk/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/trk/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "failed.writing.to.file": "Failed writing to file {0}", "cache.object.version": "cmake-file-api'nin önbellek nesne sürümü ({0}.{1}) beklenmiyordu. Beklenen ({2}.{3}). IntelliSense yapılandırması yanlış olabilir.", "cache.entry.unknowntype": "Bilinmeyen önbellek girdisi türü: {0}.", "code.model.version": "cmake-file-api'nin kod modeli sürümü ({0}.{1}) beklenmiyordu. Beklenen ({2}.{3}). IntelliSense yapılandırması yanlış olabilir." diff --git a/i18n/trk/src/drivers/cmfileapi-driver.i18n.json b/i18n/trk/src/drivers/cmfileapi-driver.i18n.json new file mode 100644 index 000000000..2ecf56655 --- /dev/null +++ b/i18n/trk/src/drivers/cmfileapi-driver.i18n.json @@ -0,0 +1,9 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "removing": "Removing {0}", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." +} \ No newline at end of file diff --git a/i18n/trk/src/drivers/cms-driver.i18n.json b/i18n/trk/src/drivers/cms-driver.i18n.json index bf64a907b..75449b42b 100644 --- a/i18n/trk/src/drivers/cms-driver.i18n.json +++ b/i18n/trk/src/drivers/cms-driver.i18n.json @@ -10,5 +10,6 @@ "found.no.matching.code.model": "Geçerli derleme türü için eşleşen bir kod modeli bulunamadı. Bunun olmaması gerekir", "build.all.target": "Tüm kullanılabilir hedefleri derlemek için özel bir hedef", "install.all.target": "Tüm kullanılabilir hedefleri yüklemek için özel bir hedef", - "utility.target": "Yardımcı program hedefi" + "utility.target": "Yardımcı program hedefi", + "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." } \ No newline at end of file diff --git a/i18n/trk/src/drivers/driver.i18n.json b/i18n/trk/src/drivers/driver.i18n.json index cff31f6a6..f2a2ccfb4 100644 --- a/i18n/trk/src/drivers/driver.i18n.json +++ b/i18n/trk/src/drivers/driver.i18n.json @@ -17,6 +17,7 @@ "trying.to.detect.generator": "Sistem tarafından desteklenen oluşturucu algılanmaya çalışılıyor", "start.configure": "Yapılandırmayı başlat", "cmake.flags.are": "CMake bayrakları: {0}", + "configure.failed": "Failed to configure project", "no.kit.is.set": "Ayarlanan set yok!", "using.compilers.in.for.configure": "Yapılandırma için {0} konumundaki derleyiciler kullanılıyor", "using.cmake.toolchain.for.configure": "Yapılandırma için {0} CMake araç zinciri kullanılıyor", diff --git a/i18n/trk/src/extension.i18n.json b/i18n/trk/src/extension.i18n.json index c03eafcbf..58e089a85 100644 --- a/i18n/trk/src/extension.i18n.json +++ b/i18n/trk/src/extension.i18n.json @@ -10,10 +10,14 @@ "yes.button": "Evet", "not.now.button": "Şimdi değil", "always.configure.on.open": "Projeler her zaman açıldıktan sonra mı yapılandırılsın?", - "never.configure.on.open": "Açılışta projeler hiçbir zaman yapılandırılmasın mı?", - "for.this.workspace.button": "Bu Çalışma Alanı için", + "never.configure.on.open": "Configure projects on opening?", + "no.button": "Hayır", + "never.button": "Never", + "never.for.this.workspace.button": "Not this workspace", "persist.config.on.open.setting": "Açılışta yapılandır ayarını kalıcı yap", "configuring.workspace.on.open": "Açık {0} konumunda çalışma alanı yapılandırılıyor", + "configure.now.button": "Configure Now", + "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", "update.code.model.for.cpptools": "cpptools için kod modelini güncelleştir", "filed.to.open.cache.file.on.code.model.update": "Kod modeli güncelleştirmesinde CMake önbellek dosyası açılamadı", "opening.text.editor.for": "{0} için metin düzenleyici açılıyor", diff --git a/i18n/trk/src/kit.i18n.json b/i18n/trk/src/kit.i18n.json index ed932f001..224b1d247 100644 --- a/i18n/trk/src/kit.i18n.json +++ b/i18n/trk/src/kit.i18n.json @@ -34,6 +34,7 @@ "scanning.for.kits": "Setler için taranıyor", "scanning.for.cmake.kits": "CMake setleri için taranıyor...", "found.kit": "{0} Seti Bulundu", + "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", "kit.for.toolchain.file": "{0} araç zinciri dosyası için set", "using.compilers.for": "{0} için derleyiciler kullanılıyor ({1} mimarisi)", "using.compilers": "{0} derleyicileri kullanılıyor", diff --git a/i18n/trk/src/kitsController.i18n.json b/i18n/trk/src/kitsController.i18n.json index f852f4418..9af01967b 100644 --- a/i18n/trk/src/kitsController.i18n.json +++ b/i18n/trk/src/kitsController.i18n.json @@ -11,12 +11,10 @@ "unsetting.kit": "Set ayarı kaldırılıyor", "loading.kit": "{0} seti yükleniyor", "invalid.only.kit": "Yalnızca set geçersiz. `{0}` bulunması bekleniyordu", - "scan.for.kits.button": "Setler için tara", - "do.not.use.kit.button": "Set kullanma", - "close.button": "Kapat", - "no.kits.available": "Kullanılabilir CMake seti yok. Ne yapmak istiyorsunuz?", + "already.checking.kits": "Already checking kits. Please try again later.", "start.selection.of.kits": "Set seçimi başladı. {0} set bulundu.", "opening.kit.selection": "QuickPick set seçimi açılıyor", + "scan.for.kits.button": "Setler için tara", "unspecified.kit.name": "Belirtilmemiş", "select.a.kit.placeholder": "{0} için bir Set seçin", "user.cancelled.kit.selection": "Kullanıcı Set seçimini iptal etti", diff --git a/i18n/trk/src/status.i18n.json b/i18n/trk/src/status.i18n.json index 78943494c..6e80e1b4f 100644 --- a/i18n/trk/src/status.i18n.json +++ b/i18n/trk/src/status.i18n.json @@ -4,22 +4,22 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "active.folder.auto.select.tooltip": "Etkin klasör", - "active.folder.tooltip": "Etkin Klasör Seçin", + "click.to.select.workspace.tooltip": "Click to select the active folder", "unconfigured": "Yapılandırılmamış", - "loading.status": "Yükleniyor...", "click.to.select.variant.tooltip": "Geçerli derleme varyantını seçmek için tıklayın", + "loading.status": "Yükleniyor...", "click.to.change.kit.tooltip": "Etkin seti değiştirmek için tıklayın", + "no.active.kit": "Etkin set yok", + "no.kit.selected": "Seçili Set Yok", "set.active.target.tooltip": "Derlenecek etkin hedefi ayarlayın", - "run.ctest.tests.tooltip": "CTest testlerini çalıştır", - "launch.debugger.tooltip": "Seçili hedef için hata ayıklayıcısını başlat", "select.target.tooltip": "Başlatılacak hedefi seçin", - "debug": "Hata Ayıkla", + "launch.debugger.tooltip": "Seçili hedef için hata ayıklayıcısını başlat", + "launch.tooltip": "Launch the selected target in the terminal window", + "run.ctest.tests.tooltip": "CTest testlerini çalıştır", "run.ctest": "CTest'i çalıştır", "test.passing": "{0}/{1} test geçiriliyor", "tests.passing": "{0}/{1} test geçiriliyor", - "stop": "Durdur", + "build.tooltip": "Build the selected target", "build": "Derleme", - "no.kit.selected": "Seçili Set Yok", - "no.active.kit": "Etkin set yok" + "stop": "Durdur" } \ No newline at end of file diff --git a/i18n/trk/src/tree.i18n.json b/i18n/trk/src/tree.i18n.json index 72265310c..00aa204cb 100644 --- a/i18n/trk/src/tree.i18n.json +++ b/i18n/trk/src/tree.i18n.json @@ -14,6 +14,8 @@ "item.render.issue": "Bu öğe işlenirken bir sorun oluştu. Bu bir hatadır", "empty.project": "Boş proje", "update.project.with.mismatch": "Eşleşmeyen ad özelliğine sahip projeyi güncelleştir", - "error.update.code.model.on.nonexist.folder": "Henüz mevcut olmayan klasördeki kod modelini mi güncelleştiriyorsunuz?", + "workspace.active": "Active Workspace", + "workspace": "Workspace", + "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", "error.rendering.children.nodes": "Alt düğümler işlenirken hata oluştu" } \ No newline at end of file From 7a403395525d424df3d4fa1918b87c9ea272f6a9 Mon Sep 17 00:00:00 2001 From: Bob Brown Date: Wed, 1 Jul 2020 13:07:52 -0700 Subject: [PATCH 09/26] Error objects are not automatically converted to strings (#1348) --- src/cmake-tools.ts | 4 ++-- src/compdb.ts | 2 +- src/drivers/cms-driver.ts | 5 +++-- src/expand.ts | 6 ++++-- src/kit.ts | 8 ++++---- src/util.ts | 12 +++++++++++- src/variant.ts | 4 +++- 7 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/cmake-tools.ts b/src/cmake-tools.ts index 8a48639e8..bd859fd0e 100644 --- a/src/cmake-tools.ts +++ b/src/cmake-tools.ts @@ -650,14 +650,14 @@ export class CMakeTools implements vscode.Disposable, api.CMakeToolsAPI { } catch (e) { vscode.window.showErrorMessage(localize('failed.to.create.parent.directory', 'Tried to copy "{0}" to "{1}", but failed to create the parent directory "{2}": {3}', - compdb_path, expanded_dest, pardir, e)); + compdb_path, expanded_dest, pardir, e.toString())); return; } try { await fs.copyFile(compdb_path, expanded_dest); } catch (e) { // Just display the error. It's the best we can do. - vscode.window.showErrorMessage(localize('failed.to.copy', 'Failed to copy "{0}" to "{1}": {2}', compdb_path, expanded_dest, e)); + vscode.window.showErrorMessage(localize('failed.to.copy', 'Failed to copy "{0}" to "{1}": {2}', compdb_path, expanded_dest, e.toString())); return; } } diff --git a/src/compdb.ts b/src/compdb.ts index 3a66f67ed..dfc9349c0 100644 --- a/src/compdb.ts +++ b/src/compdb.ts @@ -51,7 +51,7 @@ export class CompilationDatabase { const content = JSON.parse(data.toString()) as CompileCommand[]; return new CompilationDatabase(content); } catch (e) { - log.warning(localize('error.parsing.compilation.database', 'Error parsing compilation database "{0}": {1}', dbpath, e)); + log.warning(localize('error.parsing.compilation.database', 'Error parsing compilation database "{0}": {1}', dbpath, util.errorToString(e))); return null; } } diff --git a/src/drivers/cms-driver.ts b/src/drivers/cms-driver.ts index 69272f6f7..f035dce03 100644 --- a/src/drivers/cms-driver.ts +++ b/src/drivers/cms-driver.ts @@ -13,7 +13,8 @@ import {Kit, CMakeGenerator} from '@cmt/kit'; import {createLogger} from '@cmt/logging'; import * as proc from '@cmt/proc'; import rollbar from '@cmt/rollbar'; -import { ConfigurationReader } from '@cmt/config'; +import {ConfigurationReader} from '@cmt/config'; +import {errorToString} from '@cmt/util'; import * as nls from 'vscode-nls'; import * as ext from '@cmt/extension'; @@ -116,7 +117,7 @@ export class CMakeServerClientDriver extends codemodel.CodeModelDriver { await cl.compute(); } catch (e) { if (e instanceof cms.ServerError) { - log.error(localize('cmake.configure.error', 'Error during CMake configure: {0}', e.toString())); + log.error(localize('cmake.configure.error', 'Error during CMake configure: {0}', errorToString(e))); return 1; } else { throw e; diff --git a/src/expand.ts b/src/expand.ts index 9a5c8e6e4..023267678 100644 --- a/src/expand.ts +++ b/src/expand.ts @@ -7,7 +7,7 @@ import * as vscode from 'vscode'; import {createLogger} from './logging'; import {EnvironmentVariables} from './proc'; -import {mergeEnvironment, normalizeEnvironmentVarname, replaceAll, fixPaths} from './util'; +import {mergeEnvironment, normalizeEnvironmentVarname, replaceAll, fixPaths, errorToString} from './util'; import * as nls from 'vscode-nls'; nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })(); @@ -129,7 +129,9 @@ export async function expandString(tmpl: string, opts: ExpansionOptions) { try { const command_ret = await vscode.commands.executeCommand(command, opts.vars.workspaceFolder); subs.set(full, `${command_ret}`); - } catch (e) { log.warning(localize('exception.executing.command', 'Exception while executing command {0} for string: {1} ({2})', command, tmpl, e)); } + } catch (e) { + log.warning(localize('exception.executing.command', 'Exception while executing command {0} for string: {1} {2}', command, tmpl, errorToString(e))); + } } let final_str = tmpl; diff --git a/src/kit.ts b/src/kit.ts index 2de9ff2a7..c5844300e 100644 --- a/src/kit.ts +++ b/src/kit.ts @@ -318,7 +318,7 @@ async function scanDirectory(dir: string, mapper: (filePath: string) => Pro return []; } } catch (e) { - log.warning(localize('failed.to.scan', 'Failed to scan {0} by exception: {1}', dir, e)); + log.warning(localize('failed.to.scan', 'Failed to scan {0} by exception: {1}', dir, util.errorToString(e))); if (e.code == 'ENOENT') { return []; } @@ -351,7 +351,7 @@ export async function scanDirForCompilerKits(dir: string, pr?: ProgressReporter) try { return await kitIfCompiler(bin, pr); } catch (e) { - log.warning(localize('filed.to.check.binary', 'Failed to check binary {0} by exception: {1}', bin, e)); + log.warning(localize('filed.to.check.binary', 'Failed to check binary {0} by exception: {1}', bin, util.errorToString(e))); if (e.code == 'EACCES') { // The binary may not be executable by this user... return null; @@ -1047,14 +1047,14 @@ export async function readKitsFile(filepath: string): Promise { try { kits_raw = json5.parse(content_str.toLocaleString()); } catch (e) { - log.error(localize('failed.to.parse', 'Failed to parse {0}: {1}', "cmake-kits.json", e)); + log.error(localize('failed.to.parse', 'Failed to parse {0}: {1}', path.basename(filepath), util.errorToString(e))); return []; } const validator = await loadSchema('schemas/kits-schema.json'); const is_valid = validator(kits_raw); if (!is_valid) { const errors = validator.errors!; - log.error(localize('invalid.file.error', 'Invalid {0} ({1}):', "cmake-kits.json", filepath)); + log.error(localize('invalid.file.error', 'Invalid kit contents {0} ({1}):', path.basename(filepath), filepath)); for (const err of errors) { log.error(` >> ${err.dataPath}: ${err.message}`); } diff --git a/src/util.ts b/src/util.ts index e74d82a07..b3b25a2fa 100644 --- a/src/util.ts +++ b/src/util.ts @@ -337,7 +337,17 @@ export function parseVersion(str: string): Version { }; } -export function versionToString(ver: Version): string { return `${ver.major}.${ver.minor}.${ver.patch}`; } +export function versionToString(ver: Version): string { + return `${ver.major}.${ver.minor}.${ver.patch}`; +} + +export function errorToString(e: any): string { + if (e.stack) { + // e.stack has both the message and the stack in it. + return `\n\t${e.stack}`; + } + return `\n\t${e.toString()}`; +} export function* flatMap(rng: Iterable, fn: (item: In) => Iterable): Iterable { for (const elem of rng) { diff --git a/src/variant.ts b/src/variant.ts index f5b909fd9..a227def03 100644 --- a/src/variant.ts +++ b/src/variant.ts @@ -259,7 +259,9 @@ export class VariantManager implements vscode.Disposable { } else { new_variants = yaml.load(content) as VarFileRoot; } - } catch (e) { log.error(localize('error.parsing', 'Error parsing {0}: {1}', filepath, e)); } + } catch (e) { + log.error(localize('error.parsing', 'Error parsing {0}: {1}', filepath, util.errorToString(e))); + } } const is_valid = validate(new_variants); From 89b9ec8b12ee6d6138cc8865b14e6d0f0ae37d02 Mon Sep 17 00:00:00 2001 From: csigs Date: Thu, 2 Jul 2020 10:16:55 -0700 Subject: [PATCH 10/26] Localization - Translated Strings (#1349) Co-authored-by: DevDiv Build Lab - Dev14 --- i18n/chs/package.i18n.json | 6 +++--- i18n/chs/src/cmake-tools.i18n.json | 10 +++++----- i18n/chs/src/drivers/driver.i18n.json | 2 +- i18n/chs/src/extension.i18n.json | 6 +++--- i18n/chs/src/status.i18n.json | 4 ++-- i18n/chs/src/tree.i18n.json | 4 ++-- i18n/cht/package.i18n.json | 4 ++-- i18n/cht/src/cmake-tools.i18n.json | 8 ++++---- i18n/cht/src/drivers/driver.i18n.json | 2 +- i18n/cht/src/extension.i18n.json | 2 +- i18n/cht/src/tree.i18n.json | 2 +- i18n/csy/src/drivers/driver.i18n.json | 2 +- i18n/deu/src/drivers/driver.i18n.json | 2 +- i18n/esn/src/drivers/driver.i18n.json | 2 +- i18n/fra/package.i18n.json | 14 ++++++------- i18n/fra/schemas/kits-schema.json.i18n.json | 2 +- i18n/fra/src/cmake-tools.i18n.json | 20 +++++++++---------- .../cmakefileapi/api_helpers.i18n.json | 2 +- .../src/drivers/cmfileapi-driver.i18n.json | 4 ++-- i18n/fra/src/drivers/cms-driver.i18n.json | 2 +- i18n/fra/src/drivers/driver.i18n.json | 2 +- i18n/fra/src/extension.i18n.json | 10 +++++----- i18n/fra/src/kit.i18n.json | 2 +- i18n/fra/src/kitsController.i18n.json | 2 +- i18n/fra/src/status.i18n.json | 6 +++--- i18n/fra/src/tree.i18n.json | 6 +++--- i18n/ita/src/drivers/driver.i18n.json | 2 +- i18n/jpn/src/drivers/driver.i18n.json | 2 +- i18n/kor/src/drivers/driver.i18n.json | 2 +- i18n/plk/src/drivers/driver.i18n.json | 2 +- i18n/ptb/package.i18n.json | 14 ++++++------- i18n/ptb/schemas/kits-schema.json.i18n.json | 2 +- i18n/ptb/src/cmake-tools.i18n.json | 20 +++++++++---------- .../cmakefileapi/api_helpers.i18n.json | 2 +- .../src/drivers/cmfileapi-driver.i18n.json | 4 ++-- i18n/ptb/src/drivers/cms-driver.i18n.json | 2 +- i18n/ptb/src/drivers/driver.i18n.json | 2 +- i18n/ptb/src/extension.i18n.json | 10 +++++----- i18n/ptb/src/kit.i18n.json | 2 +- i18n/ptb/src/kitsController.i18n.json | 2 +- i18n/ptb/src/status.i18n.json | 6 +++--- i18n/ptb/src/tree.i18n.json | 4 ++-- i18n/rus/src/drivers/driver.i18n.json | 2 +- i18n/trk/src/drivers/driver.i18n.json | 2 +- 44 files changed, 105 insertions(+), 105 deletions(-) diff --git a/i18n/chs/package.i18n.json b/i18n/chs/package.i18n.json index a2bb06652..75e2cd0d7 100644 --- a/i18n/chs/package.i18n.json +++ b/i18n/chs/package.i18n.json @@ -112,10 +112,10 @@ "cmake-tools.configuration.cmake.outputLogEncoding.description": "来自外部命令的输出的编码(例如 cmake -- build)。", "cmake-tools.configuration.cmake.enableTraceLogging.description": "对文件和控制台启用跟踪日志记录(噪音很大)。", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "自动选择活动文件夹", - "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "配置扩展在状态栏中显示按钮的方式", "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", - "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "配置扩展在状态栏中显示此按钮的方式", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "根据测试结果启用此按钮的颜色更改", "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", "cmake-tools.configuration.views.cmake.folders.description": "文件夹", "cmake-tools.configuration.views.cmake.outline.description": "项目大纲" diff --git a/i18n/chs/src/cmake-tools.i18n.json b/i18n/chs/src/cmake-tools.i18n.json index bd88e31c0..b1192bcda 100644 --- a/i18n/chs/src/cmake-tools.i18n.json +++ b/i18n/chs/src/cmake-tools.i18n.json @@ -12,11 +12,11 @@ "configuration.already.in.progress": "配置已在进行中。", "task.already.running": "CMake 任务已在运行。请先停止该任务然后再尝试运行新的 CMake 任务。", "no.source.directory.found": "没有打开的源目录", - "quickstart.cmake.project": "Create", - "edit.setting": "Locate", - "ignore.activation": "Don't show again", + "quickstart.cmake.project": "创建", + "edit.setting": "查找", + "ignore.activation": "不再显示", "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", - "reload.window": "Reload Window", + "reload.window": "重载窗口", "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", "starting.cmake.driver": "正在启动 CMake 驱动程序", "bad.cmake.executable": "CMake 可执行文件“{0}”不正确。", @@ -31,7 +31,7 @@ "changing.build.variant": "正在更改生成变量", "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", - "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", + "needs.reconfigure": "需要重新配置项目,以使 CMakeLists.txt 中保存的更改生效。", "injecting.new.kit": "将新的工具包注入 CMake 驱动程序", "reloading.status": "正在重新加载...", "unable.to.set.kit": "无法设置工具包“{0}”。", diff --git a/i18n/chs/src/drivers/driver.i18n.json b/i18n/chs/src/drivers/driver.i18n.json index 99c89c8ef..f706c784d 100644 --- a/i18n/chs/src/drivers/driver.i18n.json +++ b/i18n/chs/src/drivers/driver.i18n.json @@ -17,7 +17,7 @@ "trying.to.detect.generator": "正在尝试检测系统支持的生成器", "start.configure": "开始配置", "cmake.flags.are": "CMake 标志为 {0}", - "configure.failed": "Failed to configure project", + "configure.failed": "未能配置项目", "no.kit.is.set": "未设置任何工具包!", "using.compilers.in.for.configure": "正在使用 {0} 中的编译器进行配置", "using.cmake.toolchain.for.configure": "正在使用 CMake 工具链 {0} 进行配置", diff --git a/i18n/chs/src/extension.i18n.json b/i18n/chs/src/extension.i18n.json index 1f26e8254..ab76a25b1 100644 --- a/i18n/chs/src/extension.i18n.json +++ b/i18n/chs/src/extension.i18n.json @@ -12,11 +12,11 @@ "always.configure.on.open": "始终在打开时配置项目?", "never.configure.on.open": "Configure projects on opening?", "no.button": "否", - "never.button": "Never", - "never.for.this.workspace.button": "Not this workspace", + "never.button": "从不", + "never.for.this.workspace.button": "不是此工作区", "persist.config.on.open.setting": "保留“打开即配置”设置", "configuring.workspace.on.open": "正在打开的 {0} 上配置工作区", - "configure.now.button": "Configure Now", + "configure.now.button": "立即配置", "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", "update.code.model.for.cpptools": "更新 cpptools 的代码模型", "filed.to.open.cache.file.on.code.model.update": "未能在代码模型更新时打开 CMake 缓存文件", diff --git a/i18n/chs/src/status.i18n.json b/i18n/chs/src/status.i18n.json index 6c32d02f3..f6094c8e5 100644 --- a/i18n/chs/src/status.i18n.json +++ b/i18n/chs/src/status.i18n.json @@ -14,12 +14,12 @@ "set.active.target.tooltip": "设置要生成的活动目标", "select.target.tooltip": "选择要启动的目标", "launch.debugger.tooltip": "启动所选目标的调试程序", - "launch.tooltip": "Launch the selected target in the terminal window", + "launch.tooltip": "在终端窗口中启动所选目标", "run.ctest.tests.tooltip": "运行 CTest 测试", "run.ctest": "运行 CTest", "test.passing": "{0} 项测试通过/共 {1} 项", "tests.passing": "{0} 项测试通过/共 {1} 项", - "build.tooltip": "Build the selected target", + "build.tooltip": "生成所选目标", "build": "生成", "stop": "停止" } \ No newline at end of file diff --git a/i18n/chs/src/tree.i18n.json b/i18n/chs/src/tree.i18n.json index 8c079ae6b..38543cc0a 100644 --- a/i18n/chs/src/tree.i18n.json +++ b/i18n/chs/src/tree.i18n.json @@ -14,8 +14,8 @@ "item.render.issue": "呈现此项目时出现问题。这是 bug", "empty.project": "空项目", "update.project.with.mismatch": "更新具有不匹配的名称属性的项目", - "workspace.active": "Active Workspace", - "workspace": "Workspace", + "workspace.active": "活动工作区", + "workspace": "工作区", "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", "error.rendering.children.nodes": "呈现子节点时出错" } \ No newline at end of file diff --git a/i18n/cht/package.i18n.json b/i18n/cht/package.i18n.json index 7f29109b4..eff4c9aa7 100644 --- a/i18n/cht/package.i18n.json +++ b/i18n/cht/package.i18n.json @@ -112,9 +112,9 @@ "cmake-tools.configuration.cmake.outputLogEncoding.description": "外部命令輸出的編譯 (例如 cmake -- build)。", "cmake-tools.configuration.cmake.enableTraceLogging.description": "為檔案及主控台啟用追蹤記錄 (雜訊非常多)。", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "自動選取作用中的資料夾", - "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "設定延伸模組在狀態列中顯示按鈕的方式", "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", - "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "設定延伸模組在狀態列中顯示此按鈕的方式", "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", "cmake-tools.configuration.views.cmake.folders.description": "資料夾", diff --git a/i18n/cht/src/cmake-tools.i18n.json b/i18n/cht/src/cmake-tools.i18n.json index 24d3cd57d..e53738611 100644 --- a/i18n/cht/src/cmake-tools.i18n.json +++ b/i18n/cht/src/cmake-tools.i18n.json @@ -12,11 +12,11 @@ "configuration.already.in.progress": "已在設定。", "task.already.running": "CMake 工作已在執行。請先停止,再嘗試執行新的 CMake 工作。", "no.source.directory.found": "您未開啟任何來源目錄", - "quickstart.cmake.project": "Create", - "edit.setting": "Locate", - "ignore.activation": "Don't show again", + "quickstart.cmake.project": "建立", + "edit.setting": "尋找", + "ignore.activation": "不要再顯示", "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", - "reload.window": "Reload Window", + "reload.window": "重新載入視窗", "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", "starting.cmake.driver": "正在啟動 CMake 驅動程式", "bad.cmake.executable": "錯誤的 CMake 可執行檔 \"{0}\"。", diff --git a/i18n/cht/src/drivers/driver.i18n.json b/i18n/cht/src/drivers/driver.i18n.json index e30d4a8dc..6c4e8174d 100644 --- a/i18n/cht/src/drivers/driver.i18n.json +++ b/i18n/cht/src/drivers/driver.i18n.json @@ -17,7 +17,7 @@ "trying.to.detect.generator": "正在嘗試偵測系統支援的產生器", "start.configure": "啟動設定", "cmake.flags.are": "CMake 旗標為 {0}", - "configure.failed": "Failed to configure project", + "configure.failed": "無法設定專案", "no.kit.is.set": "未設定套件!", "using.compilers.in.for.configure": "正在使用 {0} 中的編譯器進行設定", "using.cmake.toolchain.for.configure": "正在使用 CMake 工具鏈 {0} 進行設定", diff --git a/i18n/cht/src/extension.i18n.json b/i18n/cht/src/extension.i18n.json index e58fd683a..04e87e6c6 100644 --- a/i18n/cht/src/extension.i18n.json +++ b/i18n/cht/src/extension.i18n.json @@ -16,7 +16,7 @@ "never.for.this.workspace.button": "Not this workspace", "persist.config.on.open.setting": "保存 config-on-open 設定", "configuring.workspace.on.open": "正在於開啟的 {0} 上設定工作區", - "configure.now.button": "Configure Now", + "configure.now.button": "立即設定", "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", "update.code.model.for.cpptools": "更新 cpptools 的程式碼模型", "filed.to.open.cache.file.on.code.model.update": "無法在程式碼模型更新時開啟 CMake 快取檔案", diff --git a/i18n/cht/src/tree.i18n.json b/i18n/cht/src/tree.i18n.json index 7c4b24267..85f491354 100644 --- a/i18n/cht/src/tree.i18n.json +++ b/i18n/cht/src/tree.i18n.json @@ -15,7 +15,7 @@ "empty.project": "空白專案", "update.project.with.mismatch": "更新具有不符名稱屬性的專案", "workspace.active": "Active Workspace", - "workspace": "Workspace", + "workspace": "工作區", "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", "error.rendering.children.nodes": "轉譯子節點時發生錯誤" } \ No newline at end of file diff --git a/i18n/csy/src/drivers/driver.i18n.json b/i18n/csy/src/drivers/driver.i18n.json index 9feab73b1..d190cbd48 100644 --- a/i18n/csy/src/drivers/driver.i18n.json +++ b/i18n/csy/src/drivers/driver.i18n.json @@ -17,7 +17,7 @@ "trying.to.detect.generator": "Probíhá pokus o zjištění generátoru podporovaného systémem.", "start.configure": "Spustit konfiguraci", "cmake.flags.are": "Příznaky CMake jsou {0}.", - "configure.failed": "Failed to configure project", + "configure.failed": "Nepovedlo se nakonfigurovat projekt.", "no.kit.is.set": "Není nastavená žádná sada!", "using.compilers.in.for.configure": "Používají se kompilátory v místě {0} pro konfiguraci.", "using.cmake.toolchain.for.configure": "Používá se sada nástrojů CMake {0} pro konfiguraci.", diff --git a/i18n/deu/src/drivers/driver.i18n.json b/i18n/deu/src/drivers/driver.i18n.json index 07ddd8f5a..8e487129a 100644 --- a/i18n/deu/src/drivers/driver.i18n.json +++ b/i18n/deu/src/drivers/driver.i18n.json @@ -17,7 +17,7 @@ "trying.to.detect.generator": "Es wird versucht, einen vom System unterstützten Generator zu ermitteln.", "start.configure": "Konfiguration starten", "cmake.flags.are": "CMake-Flags: {0}", - "configure.failed": "Failed to configure project", + "configure.failed": "Fehler beim Konfigurieren des Projekts.", "no.kit.is.set": "Es wurde kein Kit festgelegt.", "using.compilers.in.for.configure": "Compiler in \"{0}\" werden für die Konfiguration verwendet.", "using.cmake.toolchain.for.configure": "CMake-Toolkette \"{0}\" wird zum Konfigurieren verwendet.", diff --git a/i18n/esn/src/drivers/driver.i18n.json b/i18n/esn/src/drivers/driver.i18n.json index 3dc06dbb2..53e835bbb 100644 --- a/i18n/esn/src/drivers/driver.i18n.json +++ b/i18n/esn/src/drivers/driver.i18n.json @@ -17,7 +17,7 @@ "trying.to.detect.generator": "Intentando detectar el generador que el sistema admite", "start.configure": "Iniciar la configuración", "cmake.flags.are": "Las marcas de CMake son {0}", - "configure.failed": "Failed to configure project", + "configure.failed": "No se pudo configurar el proyecto.", "no.kit.is.set": "No se ha establecido ningún kit.", "using.compilers.in.for.configure": "Usando los compiladores en {0} para configurar", "using.cmake.toolchain.for.configure": "Usando la cadena de herramientas de CMake {0} para configurar", diff --git a/i18n/fra/package.i18n.json b/i18n/fra/package.i18n.json index 73a0abd1e..6e2b2f880 100644 --- a/i18n/fra/package.i18n.json +++ b/i18n/fra/package.i18n.json @@ -104,19 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Répertoires où Emscripten peut être installé.", "cmake-tools.configuration.cmake.copyCompileCommands.description": "Copie compile_commands.json à cet emplacement après une configuration réussie.", "cmake-tools.configuration.cmake.configureOnOpen.description": "Configure automatiquement les répertoires de projet CMake quand ils s'ouvrent.", - "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", - "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", + "cmake-tools.configuration.cmake.configureOnEdit.description": "Configurez automatiquement les répertoires de projet CMake pendant l'enregistrement du contenu de cmake.sourceDirectory ou CMakeLists.txt.", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Ignorez le processus de configuration si le cache est présent.", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "Protocole de communication entre l'extension et CMake", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "N'utilise pas les variables d'environnement de kit au moment de l'exécution de commandes CMake.", "cmake-tools.configuration.cmake.buildTask.description": "Effectue une build à l'aide de tasks.json au lieu du processus interne.", "cmake-tools.configuration.cmake.outputLogEncoding.description": "Encodage de la sortie à partir de commandes externes (par exemple cmake -- build).", "cmake-tools.configuration.cmake.enableTraceLogging.description": "Active la journalisation des traces dans le fichier et la console (très bruyant).", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "Sélectionner le dossier actif automatiquement", - "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", - "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", - "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configure la manière dont l'extension affiche les boutons dans la barre d'état", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configure les paramètres de chaque bouton de la barre d'état. Ces paramètres remplacent le paramètre « cmake.StatusBar.Visibility » plus général.", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configure la manière dont l'extension affiche ce bouton dans la barre d'état", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Active un changement de couleur pour ce bouton en fonction des résultats des tests", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configure la longueur maximale du texte visible en mode 'compact'.", "cmake-tools.configuration.views.cmake.folders.description": "Dossiers", "cmake-tools.configuration.views.cmake.outline.description": "Structure du projet" } \ No newline at end of file diff --git a/i18n/fra/schemas/kits-schema.json.i18n.json b/i18n/fra/schemas/kits-schema.json.i18n.json index 82bfca504..83650d3a6 100644 --- a/i18n/fra/schemas/kits-schema.json.i18n.json +++ b/i18n/fra/schemas/kits-schema.json.i18n.json @@ -12,7 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Chemin d'un fichier de chaîne d'outils", "schemas/kits-schema.json.items.properties.visualStudio": "Nom du produit Visual Studio", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Architecture à cibler", - "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "Chemin absolu d'un script qui modifie l'environnement pour le kit", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Valeur de la variable d'environnement", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Valeur du paramètre CMake", "schemas/kits-schema.json.items.properties.preferredGenerator": "Définir un générateur CMake par défaut pour ce kit", diff --git a/i18n/fra/src/cmake-tools.i18n.json b/i18n/fra/src/cmake-tools.i18n.json index 78e823711..610f8254f 100644 --- a/i18n/fra/src/cmake-tools.i18n.json +++ b/i18n/fra/src/cmake-tools.i18n.json @@ -12,12 +12,12 @@ "configuration.already.in.progress": "La configuration est déjà en cours d'exécution.", "task.already.running": "Une tâche CMake est déjà en cours d'exécution. Arrêtez-la avant d'essayer d'exécuter une nouvelle tâche CMake.", "no.source.directory.found": "Vous n'avez pas de répertoire source ouvert", - "quickstart.cmake.project": "Create", - "edit.setting": "Locate", - "ignore.activation": "Don't show again", - "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", - "reload.window": "Reload Window", - "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", + "quickstart.cmake.project": "Créer", + "edit.setting": "Localiser", + "ignore.activation": "Ne plus afficher", + "missing.cmakelists": "CMakeLists.txt introuvable à la racine du dossier '{0}'. Comment voulez-vous procéder ?", + "reload.window": "Recharger la fenêtre", + "setting.sourceDirectory.failed.needs.reload.window": "Nous avons rencontré un problème pendant la mise à jour du paramètre cmake.sourceDirectory. Exécutez la commande « Recharger la fenêtre » pour appliquer le changement.", "starting.cmake.driver": "Démarrage du pilote CMake", "bad.cmake.executable": "Exécutable CMake incorrect \"{0}\".", "switch.to.serverapi": "Le mode de communication d'API de fichier CMake n'est pas pris en charge dans les versions antérieures à {0}. Passage au mode de communication de serveur CMake.", @@ -29,9 +29,9 @@ "second.phase.init": "Démarrage de l'initialisation de la deuxième phase de CMakeTools", "active.build.variant.changed": "Variante de build active changée", "changing.build.variant": "Changement de variante de build", - "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", - "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", - "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", + "cmakelists.save.trigger.reconfigure": "Enregistrement de CMakeLists.txt détecté, tentative de reconfiguration automatique...", + "cmakelists.save.could.not.reconfigure": "Des changements ont été détectés dans CMakeLists.txt, mais nous n'avons pas pu reconfigurer le projet en raison d'une autre opération en cours.", + "needs.reconfigure": "Le projet doit être reconfiguré pour pouvoir appliquer les changements enregistrés dans CMakeLists.txt.", "injecting.new.kit": "Injection d'un nouveau kit dans le pilote CMake", "reloading.status": "Rechargement...", "unable.to.set.kit": "Impossible de définir le kit \"{0}\".", @@ -64,7 +64,7 @@ "cannot.configure.no.kit": "Impossible d'effectuer la configuration : aucun kit n'est actif pour cette version de CMake Tools", "waiting.on.variant": "En attente de la sélection de variante", "no.variant.abort": "Aucune variante sélectionnée. Abandon de la configuration", - "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", + "warn.skip.configure.when.cache.present": "L'extension a déterminé qu'une configuration est actuellement nécessaire, \\\n mais nous l'ignorons parce que cmake.skipConfigureWhenCachePresent est activé. \\\n Vérifiez que le cache CMake est synchronisé avec les derniers changements de configuration.", "cmake.drive.died.during.tasksbuildcommend": "Le pilote CMake a cessé de fonctionner durant tasksBuildCommand", "run.build": "Génération du dossier : {0}", "unable.to.configure": "Échec de la build : impossible de configurer le projet", diff --git a/i18n/fra/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/fra/src/drivers/cmakefileapi/api_helpers.i18n.json index 16917c849..7481c03ff 100644 --- a/i18n/fra/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/fra/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "failed.writing.to.file": "Failed writing to file {0}", + "failed.writing.to.file": "L'écriture dans le fichier {0} a échoué", "cache.object.version": "L'objet de cache version ({0}.{1}) de cmake-file-api est inattendu. En attente de ({2}.{3}). La configuration d'IntelliSense est peut-être incorrecte.", "cache.entry.unknowntype": "Type d'entrée de cache inconnu : {0}.", "code.model.version": "Le modèle de code version ({0}.{1}) de cmake-file-api est inattendu. En attente de ({2}.{3}). La configuration d'IntelliSense est peut-être incorrecte." diff --git a/i18n/fra/src/drivers/cmfileapi-driver.i18n.json b/i18n/fra/src/drivers/cmfileapi-driver.i18n.json index 2ecf56655..a304452bd 100644 --- a/i18n/fra/src/drivers/cmfileapi-driver.i18n.json +++ b/i18n/fra/src/drivers/cmfileapi-driver.i18n.json @@ -4,6 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "removing": "Removing {0}", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "removing": "Suppression de {0}", + "cmakelists.save.trigger.reconfigure": "Mise à jour du paramètre 'cmake.sourceDirectory' détectée, tentative de reconfiguration automatique..." } \ No newline at end of file diff --git a/i18n/fra/src/drivers/cms-driver.i18n.json b/i18n/fra/src/drivers/cms-driver.i18n.json index 3c6b9035e..95cd80300 100644 --- a/i18n/fra/src/drivers/cms-driver.i18n.json +++ b/i18n/fra/src/drivers/cms-driver.i18n.json @@ -11,5 +11,5 @@ "build.all.target": "Cible spéciale pour générer toutes les cibles disponibles", "install.all.target": "Cible spéciale pour installer toutes les cibles disponibles", "utility.target": "Cible de l'utilitaire", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "cmakelists.save.trigger.reconfigure": "Mise à jour du paramètre 'cmake.sourceDirectory' détectée, tentative de reconfiguration automatique..." } \ No newline at end of file diff --git a/i18n/fra/src/drivers/driver.i18n.json b/i18n/fra/src/drivers/driver.i18n.json index 288c875af..ec3f309ac 100644 --- a/i18n/fra/src/drivers/driver.i18n.json +++ b/i18n/fra/src/drivers/driver.i18n.json @@ -17,7 +17,7 @@ "trying.to.detect.generator": "Tentative de détection du générateur pris en charge par le système", "start.configure": "Démarrer la configuration", "cmake.flags.are": "Indicateurs CMake : {0}", - "configure.failed": "Failed to configure project", + "configure.failed": "Échec de configuration du projet", "no.kit.is.set": "Aucun kit n'est défini !", "using.compilers.in.for.configure": "Utilisation de compilateurs dans {0} pour la configuration", "using.cmake.toolchain.for.configure": "Utilisation de la chaîne d'outils CMake {0} pour la configuration", diff --git a/i18n/fra/src/extension.i18n.json b/i18n/fra/src/extension.i18n.json index afe6d9ec1..f1ffcf22c 100644 --- a/i18n/fra/src/extension.i18n.json +++ b/i18n/fra/src/extension.i18n.json @@ -10,14 +10,14 @@ "yes.button": "Oui", "not.now.button": "Pas maintenant", "always.configure.on.open": "Toujours configurer les projets à l'ouverture ?", - "never.configure.on.open": "Configure projects on opening?", + "never.configure.on.open": "Configurer les projets à l'ouverture ?", "no.button": "Non", - "never.button": "Never", - "never.for.this.workspace.button": "Not this workspace", + "never.button": "Jamais", + "never.for.this.workspace.button": "Pas cet espace de travail", "persist.config.on.open.setting": "Paramètre de persistance de la configuration à l'ouverture", "configuring.workspace.on.open": "Configuration de l'espace de travail à l'ouverture {0}", - "configure.now.button": "Configure Now", - "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", + "configure.now.button": "Configurer maintenant", + "configure.recommended": "Nous vous recommandons d'effectuer une reconfiguration après avoir mis à niveau la définition des kits.", "update.code.model.for.cpptools": "Mettre à jour le modèle de code pour cpptools", "filed.to.open.cache.file.on.code.model.update": "Échec de l'ouverture du fichier cache CMake au moment de la mise à jour du modèle de code", "opening.text.editor.for": "Ouverture de l'éditeur de texte pour {0}", diff --git a/i18n/fra/src/kit.i18n.json b/i18n/fra/src/kit.i18n.json index 7cf2ff528..a1765852f 100644 --- a/i18n/fra/src/kit.i18n.json +++ b/i18n/fra/src/kit.i18n.json @@ -34,7 +34,7 @@ "scanning.for.kits": "Recherche de kits", "scanning.for.cmake.kits": "Recherche de kits CMake...", "found.kit": "Kit trouvé : {0}", - "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", + "silent.kits.rescan": "Changement de version des définitions de kit détecté ({0} à {1}). Recherche silencieuse des kits.", "kit.for.toolchain.file": "Kit pour le fichier de chaîne d'outils {0}", "using.compilers.for": "Utilisation de compilateurs pour {0} (architecture {1})", "using.compilers": "Utilisation des compilateurs : {0}", diff --git a/i18n/fra/src/kitsController.i18n.json b/i18n/fra/src/kitsController.i18n.json index 0453c075f..26695594d 100644 --- a/i18n/fra/src/kitsController.i18n.json +++ b/i18n/fra/src/kitsController.i18n.json @@ -11,7 +11,7 @@ "unsetting.kit": "Annulation du kit", "loading.kit": "Chargement du kit {0}", "invalid.only.kit": "Kit non valide uniquement. '{0}' attendu", - "already.checking.kits": "Already checking kits. Please try again later.", + "already.checking.kits": "Recherche de kits déjà en cours. Réessayez plus tard.", "start.selection.of.kits": "Démarrez la sélection des kits. {0} kits trouvés.", "opening.kit.selection": "Ouverture de la sélection rapide de kit", "scan.for.kits.button": "Rechercher des kits", diff --git a/i18n/fra/src/status.i18n.json b/i18n/fra/src/status.i18n.json index 84a44de0d..36d2609f1 100644 --- a/i18n/fra/src/status.i18n.json +++ b/i18n/fra/src/status.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "click.to.select.workspace.tooltip": "Click to select the active folder", + "click.to.select.workspace.tooltip": "Cliquer pour sélectionner le dossier actif", "unconfigured": "Non configuré", "click.to.select.variant.tooltip": "Cliquer pour sélectionner la variante de build actuelle", "loading.status": "Chargement...", @@ -14,12 +14,12 @@ "set.active.target.tooltip": "Définir la cible active à générer", "select.target.tooltip": "Sélectionner la cible à lancer", "launch.debugger.tooltip": "Lancer le débogueur pour la cible sélectionnée", - "launch.tooltip": "Launch the selected target in the terminal window", + "launch.tooltip": "Lancer la cible sélectionnée dans la fenêtre de terminal", "run.ctest.tests.tooltip": "Exécuter les tests CTest", "run.ctest": "Exécuter CTest", "test.passing": "Réussite du test : {0}/{1}", "tests.passing": "Réussite des tests : {0}/{1}", - "build.tooltip": "Build the selected target", + "build.tooltip": "Générer la cible sélectionnée", "build": "Version", "stop": "Arrêter" } \ No newline at end of file diff --git a/i18n/fra/src/tree.i18n.json b/i18n/fra/src/tree.i18n.json index 9d2fb09fb..0968a3c8e 100644 --- a/i18n/fra/src/tree.i18n.json +++ b/i18n/fra/src/tree.i18n.json @@ -14,8 +14,8 @@ "item.render.issue": "Un problème s'est produit durant le rendu de cet élément. Il s'agit d'un bogue", "empty.project": "Projet vide", "update.project.with.mismatch": "Mettre à jour le projet avec une propriété name incompatible", - "workspace.active": "Active Workspace", - "workspace": "Workspace", - "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", + "workspace.active": "Espace de travail actif", + "workspace": "Espace de travail", + "error.update.code.model.on.nonexist.folder": "Mise à jour du modèle de code sur un dossier qui n'a pas encore été chargé.", "error.rendering.children.nodes": "Erreur durant le rendu des nœuds enfants" } \ No newline at end of file diff --git a/i18n/ita/src/drivers/driver.i18n.json b/i18n/ita/src/drivers/driver.i18n.json index 09b65557f..a4d77010a 100644 --- a/i18n/ita/src/drivers/driver.i18n.json +++ b/i18n/ita/src/drivers/driver.i18n.json @@ -17,7 +17,7 @@ "trying.to.detect.generator": "Tentativo di rilevare il generatore supportato dal sistema", "start.configure": "Avvia configurazione", "cmake.flags.are": "I flag di CMake sono: {0}", - "configure.failed": "Failed to configure project", + "configure.failed": "Non è stato possibile configurare il progetto", "no.kit.is.set": "Non è stato impostato alcun kit.", "using.compilers.in.for.configure": "Utilizzo dei compilatori in {0} per la configurazione", "using.cmake.toolchain.for.configure": "Utilizzo della toolchain {0} di CMake per la configurazione", diff --git a/i18n/jpn/src/drivers/driver.i18n.json b/i18n/jpn/src/drivers/driver.i18n.json index b7f5285b8..b1952aa80 100644 --- a/i18n/jpn/src/drivers/driver.i18n.json +++ b/i18n/jpn/src/drivers/driver.i18n.json @@ -17,7 +17,7 @@ "trying.to.detect.generator": "システムでサポートされているジェネレーターを検出しようとしています", "start.configure": "構成の開始", "cmake.flags.are": "CMake フラグ: {0}", - "configure.failed": "Failed to configure project", + "configure.failed": "プロジェクトを構成できませんでした", "no.kit.is.set": "キットが設定されていません。", "using.compilers.in.for.configure": "{0} 内のコンパイラを使用して構成しています", "using.cmake.toolchain.for.configure": "CMake ツールチェーン {0} を使用して構成しています", diff --git a/i18n/kor/src/drivers/driver.i18n.json b/i18n/kor/src/drivers/driver.i18n.json index f02083837..b18ef0959 100644 --- a/i18n/kor/src/drivers/driver.i18n.json +++ b/i18n/kor/src/drivers/driver.i18n.json @@ -17,7 +17,7 @@ "trying.to.detect.generator": "시스템에서 지원되는 생성기를 검색하는 중", "start.configure": "구성 시작", "cmake.flags.are": "CMake 플래그가 {0}임", - "configure.failed": "Failed to configure project", + "configure.failed": "프로젝트를 구성하지 못함", "no.kit.is.set": "키트가 설정되지 않았습니다.", "using.compilers.in.for.configure": "구성을 위해 {0}의 컴파일러를 사용하는 중", "using.cmake.toolchain.for.configure": "구성을 위해 CMake 도구 체인 {0}을(를) 사용하는 중", diff --git a/i18n/plk/src/drivers/driver.i18n.json b/i18n/plk/src/drivers/driver.i18n.json index c91b8e07b..8d5306119 100644 --- a/i18n/plk/src/drivers/driver.i18n.json +++ b/i18n/plk/src/drivers/driver.i18n.json @@ -17,7 +17,7 @@ "trying.to.detect.generator": "Próba wykrycia generatora obsługiwanego przez system", "start.configure": "Uruchom konfigurowanie", "cmake.flags.are": "Flagi narzędzia Cmake: {0}", - "configure.failed": "Failed to configure project", + "configure.failed": "Nie udało się skonfigurować projektu", "no.kit.is.set": "Nie ustawiono zestawu!", "using.compilers.in.for.configure": "Użycie kompilatorów w lokalizacji {0} do konfigurowania", "using.cmake.toolchain.for.configure": "Użycie łańcucha narzędzi programu CMake {0} do konfigurowania", diff --git a/i18n/ptb/package.i18n.json b/i18n/ptb/package.i18n.json index ee458032e..1ac83d1c1 100644 --- a/i18n/ptb/package.i18n.json +++ b/i18n/ptb/package.i18n.json @@ -104,19 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Os diretórios nos quais o Emscripten pode ser instalado.", "cmake-tools.configuration.cmake.copyCompileCommands.description": "Copiar o compile_commands.json neste local após uma configuração bem-sucedida.", "cmake-tools.configuration.cmake.configureOnOpen.description": "Configurar os diretórios de projeto do CMake automaticamente quando eles forem abertos.", - "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", - "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", + "cmake-tools.configuration.cmake.configureOnEdit.description": "Configure automaticamente diretórios de projeto do CMake quando o conteúdo de cmake.sourceDirectory ou de CMakeLists.txt forem salvos.", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Ignore o processo de configuração se o cache estiver presente.", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "O protocolo usado para a comunicação entre a extensão e o CMake", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "Não use as variáveis de ambiente do kit ao executar os comandos do CMake.", "cmake-tools.configuration.cmake.buildTask.description": "Compilar usando o tasks.json em vez do processo interno.", "cmake-tools.configuration.cmake.outputLogEncoding.description": "A codificação da saída de comandos externos (ex.: cmake -- build).", "cmake-tools.configuration.cmake.enableTraceLogging.description": "Habilitar o log de rastreamento para arquivo e console (muito ruído).", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "Selecionar a pasta ativa automaticamente", - "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", - "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", - "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configura como a extensão exibe os botões na barra de status", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "Define as configurações para botões de barra de status individuais. Essas configurações substituem a configuração mais geral 'cmake.statusbar.visibility'.", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configura como a extensão exibe este botão na barra de status", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Habilita uma alteração na cor deste botão, dependendo dos resultados de teste", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configura o comprimento máximo do texto visível no modo 'compacto'.", "cmake-tools.configuration.views.cmake.folders.description": "Pastas", "cmake-tools.configuration.views.cmake.outline.description": "Estrutura do Código do Projeto" } \ No newline at end of file diff --git a/i18n/ptb/schemas/kits-schema.json.i18n.json b/i18n/ptb/schemas/kits-schema.json.i18n.json index 4a1e5611c..f06dea9b8 100644 --- a/i18n/ptb/schemas/kits-schema.json.i18n.json +++ b/i18n/ptb/schemas/kits-schema.json.i18n.json @@ -12,7 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Caminho para um arquivo de cadeia de ferramentas", "schemas/kits-schema.json.items.properties.visualStudio": "Nome do produto do Visual Studio", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Arquitetura a ser direcionada", - "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "O caminho absoluto para um script que modifica o ambiente do Kit", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Valor para a variável de ambiente", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Valor para a Configuração do CMake", "schemas/kits-schema.json.items.properties.preferredGenerator": "Definir um gerador de CMake preferencial para este Kit", diff --git a/i18n/ptb/src/cmake-tools.i18n.json b/i18n/ptb/src/cmake-tools.i18n.json index 56e0cb684..6cc3a7d2f 100644 --- a/i18n/ptb/src/cmake-tools.i18n.json +++ b/i18n/ptb/src/cmake-tools.i18n.json @@ -12,12 +12,12 @@ "configuration.already.in.progress": "A configuração já está em andamento.", "task.already.running": "Uma tarefa do CMake já está em execução. Interrompa-a antes de tentar executar uma nova tarefa do CMake.", "no.source.directory.found": "Você não tem um diretório de origem aberto", - "quickstart.cmake.project": "Create", - "edit.setting": "Locate", - "ignore.activation": "Don't show again", - "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", - "reload.window": "Reload Window", - "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", + "quickstart.cmake.project": "Criar", + "edit.setting": "Localizar", + "ignore.activation": "Não mostrar novamente", + "missing.cmakelists": "CMakeLists.txt não foi encontrado na raiz da pasta '{0}'. Como você deseja continuar?", + "reload.window": "Recarregar Janela", + "setting.sourceDirectory.failed.needs.reload.window": "Algo deu errado ao atualizar a configuração cmake.sourceDirectory. Execute o comando \"Recarregar janela\" para que a alteração entre em vigor.", "starting.cmake.driver": "Iniciando o driver do CMake", "bad.cmake.executable": "Executável CMake \"{0}\" incorreto.", "switch.to.serverapi": "O modo de comunicação entre arquivo e API do CMake não tem suporte em versões anteriores à {0}. Alternando para o modo de comunicação do servidor do CMake.", @@ -29,9 +29,9 @@ "second.phase.init": "Começando a inicialização da segunda fase do CMakeTools", "active.build.variant.changed": "Variante de build ativa alterada", "changing.build.variant": "Alterando a variante de build", - "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", - "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", - "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", + "cmakelists.save.trigger.reconfigure": "Detectado o salvamento de CMakeLists.txt, tentando reconfigurar automaticamente...", + "cmakelists.save.could.not.reconfigure": "Foram detectadas alterações no CMakeLists.txt, mas não foi possível reconfigurar o projeto porque outra operação já está em andamento.", + "needs.reconfigure": "O projeto precisa ser reconfigurado para que as alterações salvas em CMakeLists.txt tenham efeito.", "injecting.new.kit": "Injetando novo Kit no driver do CMake", "reloading.status": "Recarregando...", "unable.to.set.kit": "Não é possível definir o kit \"{0}\".", @@ -64,7 +64,7 @@ "cannot.configure.no.kit": "Não é possível configurar: nenhum kit está ativo para estas Ferramentas CMake", "waiting.on.variant": "Aguardando a seleção da variante", "no.variant.abort": "Nenhuma variante selecionada. Anular configuração", - "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", + "warn.skip.configure.when.cache.present": "A extensão determinou que uma configuração é necessária neste momento, \\\n mas estamos ignorando porque a configuração cmake.skipConfigureWhenCachePresent está ATIVADA. \\\n Verifique se o cache do CMake está em sincronia com as alterações de configuração mais recentes.", "cmake.drive.died.during.tasksbuildcommend": "O driver do CMake foi encerrado durante tasksBuildCommand", "run.build": "Compilando a pasta: {0}", "unable.to.configure": "Falha no build: não é possível configurar o projeto", diff --git a/i18n/ptb/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/ptb/src/drivers/cmakefileapi/api_helpers.i18n.json index b16deec2b..04039a3ad 100644 --- a/i18n/ptb/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/ptb/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "failed.writing.to.file": "Failed writing to file {0}", + "failed.writing.to.file": "Erro ao gravar no arquivo {0}", "cache.object.version": "A versão do objeto de cache ({0}.{1}) de cmake-file-api é inesperada. Esperava-se ({2}.{3}). A configuração do IntelliSense pode estar incorreta.", "cache.entry.unknowntype": "Tipo de entrada de cache desconhecido: {0}.", "code.model.version": "A versão do modelo de código ({0}.{1}) de cmake-file-api é inesperada. Esperava-se ({2}.{3}). A configuração do IntelliSense pode estar incorreta." diff --git a/i18n/ptb/src/drivers/cmfileapi-driver.i18n.json b/i18n/ptb/src/drivers/cmfileapi-driver.i18n.json index 2ecf56655..3b3653186 100644 --- a/i18n/ptb/src/drivers/cmfileapi-driver.i18n.json +++ b/i18n/ptb/src/drivers/cmfileapi-driver.i18n.json @@ -4,6 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "removing": "Removing {0}", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "removing": "Removendo {0}", + "cmakelists.save.trigger.reconfigure": "Foi detectada a atualização da configuração 'cmake.sourceDirectory', tentando reconfigurar automaticamente..." } \ No newline at end of file diff --git a/i18n/ptb/src/drivers/cms-driver.i18n.json b/i18n/ptb/src/drivers/cms-driver.i18n.json index 8f9199153..0cefc0f86 100644 --- a/i18n/ptb/src/drivers/cms-driver.i18n.json +++ b/i18n/ptb/src/drivers/cms-driver.i18n.json @@ -11,5 +11,5 @@ "build.all.target": "Um destino especial para compilar todos os destinos disponíveis", "install.all.target": "Um destino especial para instalar todos os destinos disponíveis", "utility.target": "Destino do utilitário", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "cmakelists.save.trigger.reconfigure": "Foi detectada a atualização da configuração 'cmake.sourceDirectory', tentando reconfigurar automaticamente..." } \ No newline at end of file diff --git a/i18n/ptb/src/drivers/driver.i18n.json b/i18n/ptb/src/drivers/driver.i18n.json index 643face24..15fde98e7 100644 --- a/i18n/ptb/src/drivers/driver.i18n.json +++ b/i18n/ptb/src/drivers/driver.i18n.json @@ -17,7 +17,7 @@ "trying.to.detect.generator": "Tentando detectar o gerador compatível com o sistema", "start.configure": "Iniciar a configuração", "cmake.flags.are": "Sinalizadores do CMake: {0}", - "configure.failed": "Failed to configure project", + "configure.failed": "Falha ao configurar o projeto", "no.kit.is.set": "Nenhum kit está definido!", "using.compilers.in.for.configure": "Usando compiladores em {0} para configurar", "using.cmake.toolchain.for.configure": "Usando a cadeia de ferramentas CMake {0} para configurar", diff --git a/i18n/ptb/src/extension.i18n.json b/i18n/ptb/src/extension.i18n.json index 1214fe952..28c016131 100644 --- a/i18n/ptb/src/extension.i18n.json +++ b/i18n/ptb/src/extension.i18n.json @@ -10,14 +10,14 @@ "yes.button": "Sim", "not.now.button": "Agora não", "always.configure.on.open": "Sempre configurar projetos ao abrir?", - "never.configure.on.open": "Configure projects on opening?", + "never.configure.on.open": "Configurar projetos na abertura?", "no.button": "Não", - "never.button": "Never", - "never.for.this.workspace.button": "Not this workspace", + "never.button": "Nunca", + "never.for.this.workspace.button": "Este workspace não", "persist.config.on.open.setting": "Persistir na configuração existente ao abrir", "configuring.workspace.on.open": "Configurando o workspace no {0} aberto", - "configure.now.button": "Configure Now", - "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", + "configure.now.button": "Configurar Agora", + "configure.recommended": "É recomendável reconfigurar após atualizar para uma nova definição de kits.", "update.code.model.for.cpptools": "Atualizar o modelo de código para cpptools", "filed.to.open.cache.file.on.code.model.update": "Falha ao abrir o arquivo de cache do CMake na atualização do modelo de código", "opening.text.editor.for": "Abrindo o editor de texto para {0}", diff --git a/i18n/ptb/src/kit.i18n.json b/i18n/ptb/src/kit.i18n.json index 99ba6c21a..95a6f2af7 100644 --- a/i18n/ptb/src/kit.i18n.json +++ b/i18n/ptb/src/kit.i18n.json @@ -34,7 +34,7 @@ "scanning.for.kits": "Examinando em busca de kits", "scanning.for.cmake.kits": "Examinando em busca de kits do CMake...", "found.kit": "Kit Localizado: {0}", - "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", + "silent.kits.rescan": "Detectada alteração de versão de definição de kits de {0} para {1}. Verificando os kits silenciosamente.", "kit.for.toolchain.file": "Kit para de arquivo de cadeia de ferramentas {0}", "using.compilers.for": "Usando compiladores para {0} (arquitetura {1})", "using.compilers": "Usando compiladores: {0}", diff --git a/i18n/ptb/src/kitsController.i18n.json b/i18n/ptb/src/kitsController.i18n.json index 3ea79e636..27a4671e8 100644 --- a/i18n/ptb/src/kitsController.i18n.json +++ b/i18n/ptb/src/kitsController.i18n.json @@ -11,7 +11,7 @@ "unsetting.kit": "Cancelando a definição do kit", "loading.kit": "Carregando o kit {0}", "invalid.only.kit": "Único kit inválido. Esperava-se encontrar `{0}`", - "already.checking.kits": "Already checking kits. Please try again later.", + "already.checking.kits": "Já verificando os kits. Tente novamente mais tarde.", "start.selection.of.kits": "Iniciar seleção de kits. {0} kits localizados.", "opening.kit.selection": "Abrindo QuickPick de seleção do kit", "scan.for.kits.button": "Examinar em busca de kits", diff --git a/i18n/ptb/src/status.i18n.json b/i18n/ptb/src/status.i18n.json index 8fe170f26..defa4b398 100644 --- a/i18n/ptb/src/status.i18n.json +++ b/i18n/ptb/src/status.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "click.to.select.workspace.tooltip": "Click to select the active folder", + "click.to.select.workspace.tooltip": "Clique para selecionar a pasta ativa", "unconfigured": "Não Configurado", "click.to.select.variant.tooltip": "Clicar para selecionar a variante de build atual", "loading.status": "Carregando...", @@ -14,12 +14,12 @@ "set.active.target.tooltip": "Definir o destino ativo a ser compilado", "select.target.tooltip": "Selecionar o destino a ser iniciado", "launch.debugger.tooltip": "Iniciar o depurador para o destino selecionado", - "launch.tooltip": "Launch the selected target in the terminal window", + "launch.tooltip": "Iniciar o destino selecionado na janela do terminal", "run.ctest.tests.tooltip": "Executar testes do CTest", "run.ctest": "Executar CTest", "test.passing": "{0}/{1} aprovação no teste", "tests.passing": "{0}/{1} aprovações no teste", - "build.tooltip": "Build the selected target", + "build.tooltip": "Criar o destino selecionado", "build": "Compilar", "stop": "Parar" } \ No newline at end of file diff --git a/i18n/ptb/src/tree.i18n.json b/i18n/ptb/src/tree.i18n.json index e13f285bc..11c8c9c81 100644 --- a/i18n/ptb/src/tree.i18n.json +++ b/i18n/ptb/src/tree.i18n.json @@ -14,8 +14,8 @@ "item.render.issue": "Houve um problema ao renderizar este item. Isso é um bug", "empty.project": "Projeto vazio", "update.project.with.mismatch": "Atualizar o projeto com propriedade de nome incompatível", - "workspace.active": "Active Workspace", + "workspace.active": "Workspace Ativo", "workspace": "Workspace", - "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", + "error.update.code.model.on.nonexist.folder": "Atualizando o modelo de código em uma pasta que ainda não foi carregada.", "error.rendering.children.nodes": "Erro ao renderizar os nós filhos" } \ No newline at end of file diff --git a/i18n/rus/src/drivers/driver.i18n.json b/i18n/rus/src/drivers/driver.i18n.json index 583abb1c3..a474faf0b 100644 --- a/i18n/rus/src/drivers/driver.i18n.json +++ b/i18n/rus/src/drivers/driver.i18n.json @@ -17,7 +17,7 @@ "trying.to.detect.generator": "Попытка найти генератор, поддерживаемый системой.", "start.configure": "Запустить настройку", "cmake.flags.are": "Флаги CMake: {0}", - "configure.failed": "Failed to configure project", + "configure.failed": "Не удалось настроить проект.", "no.kit.is.set": "Набор не задан.", "using.compilers.in.for.configure": "Использование компиляторов в {0} для настройки.", "using.cmake.toolchain.for.configure": "Использование цепочки инструментов CMake {0} для настройки.", diff --git a/i18n/trk/src/drivers/driver.i18n.json b/i18n/trk/src/drivers/driver.i18n.json index f2a2ccfb4..69671ab51 100644 --- a/i18n/trk/src/drivers/driver.i18n.json +++ b/i18n/trk/src/drivers/driver.i18n.json @@ -17,7 +17,7 @@ "trying.to.detect.generator": "Sistem tarafından desteklenen oluşturucu algılanmaya çalışılıyor", "start.configure": "Yapılandırmayı başlat", "cmake.flags.are": "CMake bayrakları: {0}", - "configure.failed": "Failed to configure project", + "configure.failed": "Proje yapılandırılamadı", "no.kit.is.set": "Ayarlanan set yok!", "using.compilers.in.for.configure": "Yapılandırma için {0} konumundaki derleyiciler kullanılıyor", "using.cmake.toolchain.for.configure": "Yapılandırma için {0} CMake araç zinciri kullanılıyor", From fd7d763e6d00fc55dfb122815bb4d1fc129ce963 Mon Sep 17 00:00:00 2001 From: csigs Date: Tue, 7 Jul 2020 09:59:06 -0700 Subject: [PATCH 11/26] Localization - Translated Strings (#1351) --- i18n/chs/package.i18n.json | 8 ++++---- i18n/chs/schemas/kits-schema.json.i18n.json | 2 +- i18n/chs/src/cmake-tools.i18n.json | 10 +++++----- .../cmakefileapi/api_helpers.i18n.json | 2 +- .../src/drivers/cmfileapi-driver.i18n.json | 4 ++-- i18n/chs/src/drivers/cms-driver.i18n.json | 2 +- i18n/chs/src/extension.i18n.json | 4 ++-- i18n/chs/src/kit.i18n.json | 2 +- i18n/chs/src/kitsController.i18n.json | 2 +- i18n/chs/src/status.i18n.json | 2 +- i18n/chs/src/tree.i18n.json | 2 +- i18n/cht/package.i18n.json | 10 +++++----- i18n/cht/schemas/kits-schema.json.i18n.json | 2 +- i18n/cht/src/cmake-tools.i18n.json | 12 +++++------ .../cmakefileapi/api_helpers.i18n.json | 2 +- .../src/drivers/cmfileapi-driver.i18n.json | 4 ++-- i18n/cht/src/drivers/cms-driver.i18n.json | 2 +- i18n/cht/src/extension.i18n.json | 8 ++++---- i18n/cht/src/kit.i18n.json | 2 +- i18n/cht/src/kitsController.i18n.json | 2 +- i18n/cht/src/status.i18n.json | 6 +++--- i18n/cht/src/tree.i18n.json | 4 ++-- i18n/csy/package.i18n.json | 14 ++++++------- i18n/csy/schemas/kits-schema.json.i18n.json | 2 +- i18n/csy/src/cmake-tools.i18n.json | 20 +++++++++---------- .../cmakefileapi/api_helpers.i18n.json | 2 +- .../src/drivers/cmfileapi-driver.i18n.json | 4 ++-- i18n/csy/src/drivers/cms-driver.i18n.json | 2 +- i18n/csy/src/extension.i18n.json | 10 +++++----- i18n/csy/src/kit.i18n.json | 2 +- i18n/csy/src/kitsController.i18n.json | 2 +- i18n/csy/src/status.i18n.json | 6 +++--- i18n/csy/src/tree.i18n.json | 6 +++--- i18n/deu/package.i18n.json | 14 ++++++------- i18n/deu/schemas/kits-schema.json.i18n.json | 2 +- i18n/deu/src/cmake-tools.i18n.json | 20 +++++++++---------- .../cmakefileapi/api_helpers.i18n.json | 2 +- .../src/drivers/cmfileapi-driver.i18n.json | 4 ++-- i18n/deu/src/drivers/cms-driver.i18n.json | 2 +- i18n/deu/src/extension.i18n.json | 10 +++++----- i18n/deu/src/kit.i18n.json | 2 +- i18n/deu/src/kitsController.i18n.json | 2 +- i18n/deu/src/status.i18n.json | 6 +++--- i18n/deu/src/tree.i18n.json | 6 +++--- i18n/esn/package.i18n.json | 14 ++++++------- i18n/esn/schemas/kits-schema.json.i18n.json | 2 +- i18n/esn/src/cmake-tools.i18n.json | 20 +++++++++---------- .../cmakefileapi/api_helpers.i18n.json | 2 +- .../src/drivers/cmfileapi-driver.i18n.json | 4 ++-- i18n/esn/src/drivers/cms-driver.i18n.json | 2 +- i18n/esn/src/extension.i18n.json | 10 +++++----- i18n/esn/src/kit.i18n.json | 2 +- i18n/esn/src/kitsController.i18n.json | 2 +- i18n/esn/src/status.i18n.json | 6 +++--- i18n/esn/src/tree.i18n.json | 6 +++--- i18n/ita/package.i18n.json | 14 ++++++------- i18n/ita/schemas/kits-schema.json.i18n.json | 2 +- i18n/ita/src/cmake-tools.i18n.json | 20 +++++++++---------- .../cmakefileapi/api_helpers.i18n.json | 2 +- .../src/drivers/cmfileapi-driver.i18n.json | 4 ++-- i18n/ita/src/drivers/cms-driver.i18n.json | 2 +- i18n/ita/src/extension.i18n.json | 10 +++++----- i18n/ita/src/kit.i18n.json | 2 +- i18n/ita/src/kitsController.i18n.json | 2 +- i18n/ita/src/status.i18n.json | 6 +++--- i18n/ita/src/tree.i18n.json | 6 +++--- i18n/jpn/package.i18n.json | 14 ++++++------- i18n/jpn/schemas/kits-schema.json.i18n.json | 2 +- i18n/jpn/src/cmake-tools.i18n.json | 20 +++++++++---------- .../cmakefileapi/api_helpers.i18n.json | 2 +- .../src/drivers/cmfileapi-driver.i18n.json | 4 ++-- i18n/jpn/src/drivers/cms-driver.i18n.json | 2 +- i18n/jpn/src/extension.i18n.json | 10 +++++----- i18n/jpn/src/kit.i18n.json | 2 +- i18n/jpn/src/kitsController.i18n.json | 2 +- i18n/jpn/src/status.i18n.json | 6 +++--- i18n/jpn/src/tree.i18n.json | 6 +++--- i18n/kor/package.i18n.json | 14 ++++++------- i18n/kor/schemas/kits-schema.json.i18n.json | 2 +- i18n/kor/src/cmake-tools.i18n.json | 20 +++++++++---------- .../cmakefileapi/api_helpers.i18n.json | 2 +- .../src/drivers/cmfileapi-driver.i18n.json | 4 ++-- i18n/kor/src/drivers/cms-driver.i18n.json | 2 +- i18n/kor/src/extension.i18n.json | 10 +++++----- i18n/kor/src/kit.i18n.json | 2 +- i18n/kor/src/kitsController.i18n.json | 2 +- i18n/kor/src/status.i18n.json | 6 +++--- i18n/kor/src/tree.i18n.json | 6 +++--- i18n/plk/package.i18n.json | 14 ++++++------- i18n/plk/schemas/kits-schema.json.i18n.json | 2 +- i18n/plk/src/cmake-tools.i18n.json | 18 ++++++++--------- .../cmakefileapi/api_helpers.i18n.json | 2 +- .../src/drivers/cmfileapi-driver.i18n.json | 4 ++-- i18n/plk/src/drivers/cms-driver.i18n.json | 2 +- i18n/plk/src/extension.i18n.json | 10 +++++----- i18n/plk/src/kit.i18n.json | 2 +- i18n/plk/src/kitsController.i18n.json | 2 +- i18n/plk/src/status.i18n.json | 6 +++--- i18n/plk/src/tree.i18n.json | 6 +++--- i18n/rus/package.i18n.json | 14 ++++++------- i18n/rus/schemas/kits-schema.json.i18n.json | 2 +- i18n/rus/src/cmake-tools.i18n.json | 20 +++++++++---------- .../cmakefileapi/api_helpers.i18n.json | 2 +- .../src/drivers/cmfileapi-driver.i18n.json | 4 ++-- i18n/rus/src/drivers/cms-driver.i18n.json | 2 +- i18n/rus/src/extension.i18n.json | 10 +++++----- i18n/rus/src/kit.i18n.json | 2 +- i18n/rus/src/kitsController.i18n.json | 2 +- i18n/rus/src/status.i18n.json | 6 +++--- i18n/rus/src/tree.i18n.json | 6 +++--- i18n/trk/package.i18n.json | 14 ++++++------- i18n/trk/schemas/kits-schema.json.i18n.json | 2 +- i18n/trk/src/cmake-tools.i18n.json | 20 +++++++++---------- .../cmakefileapi/api_helpers.i18n.json | 2 +- .../src/drivers/cmfileapi-driver.i18n.json | 4 ++-- i18n/trk/src/drivers/cms-driver.i18n.json | 2 +- i18n/trk/src/extension.i18n.json | 10 +++++----- i18n/trk/src/kit.i18n.json | 2 +- i18n/trk/src/kitsController.i18n.json | 2 +- i18n/trk/src/status.i18n.json | 6 +++--- i18n/trk/src/tree.i18n.json | 6 +++--- 121 files changed, 361 insertions(+), 361 deletions(-) diff --git a/i18n/chs/package.i18n.json b/i18n/chs/package.i18n.json index 75e2cd0d7..a41a2f73e 100644 --- a/i18n/chs/package.i18n.json +++ b/i18n/chs/package.i18n.json @@ -104,8 +104,8 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "可在其中安装 Emscripten 的目录。", "cmake-tools.configuration.cmake.copyCompileCommands.description": "成功配置后将 compile_commands.json 复制到此位置。", "cmake-tools.configuration.cmake.configureOnOpen.description": "在 CMake 项目目录打开时自动对其进行配置。", - "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", - "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", + "cmake-tools.configuration.cmake.configureOnEdit.description": "保存 cmake.sourceDirectory 或 CMakeLists.txt 内容时,自动配置 CMake 项目目录。", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "如果存在缓存,则跳过配置进程。", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "用于在扩展和 CMake 之间进行通信的协议", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "运行 CMake 命令时,请勿使用工具包环境变量。", "cmake-tools.configuration.cmake.buildTask.description": "使用 tasks.json 生成,而非使用内部进程。", @@ -113,10 +113,10 @@ "cmake-tools.configuration.cmake.enableTraceLogging.description": "对文件和控制台启用跟踪日志记录(噪音很大)。", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "自动选择活动文件夹", "cmake-tools.configuration.cmake.statusbar.visibility.description": "配置扩展在状态栏中显示按钮的方式", - "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "配置各个状态栏按钮的设置。这些设置将覆盖更常规的 \"cmake.statusbar.visibility\" 设置。", "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "配置扩展在状态栏中显示此按钮的方式", "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "根据测试结果启用此按钮的颜色更改", - "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "配置可见文本在在“紧凑”模式下的最大长度。", "cmake-tools.configuration.views.cmake.folders.description": "文件夹", "cmake-tools.configuration.views.cmake.outline.description": "项目大纲" } \ No newline at end of file diff --git a/i18n/chs/schemas/kits-schema.json.i18n.json b/i18n/chs/schemas/kits-schema.json.i18n.json index 0ee85e991..68bb4e4af 100644 --- a/i18n/chs/schemas/kits-schema.json.i18n.json +++ b/i18n/chs/schemas/kits-schema.json.i18n.json @@ -12,7 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "工具链文件的路径", "schemas/kits-schema.json.items.properties.visualStudio": "Visual Studio 产品的名称", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "体系结构到目标", - "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "用于修改工具包环境的脚本的绝对路径", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "环境变量的值", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "CMake 设置的值", "schemas/kits-schema.json.items.properties.preferredGenerator": "为此工具包设置首选的 CMake 生成器", diff --git a/i18n/chs/src/cmake-tools.i18n.json b/i18n/chs/src/cmake-tools.i18n.json index b1192bcda..8bfcbcd73 100644 --- a/i18n/chs/src/cmake-tools.i18n.json +++ b/i18n/chs/src/cmake-tools.i18n.json @@ -15,9 +15,9 @@ "quickstart.cmake.project": "创建", "edit.setting": "查找", "ignore.activation": "不再显示", - "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", + "missing.cmakelists": "在文件夹“{0}”的根目录中找不到 CMakeLists.txt。你希望如何继续?", "reload.window": "重载窗口", - "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", + "setting.sourceDirectory.failed.needs.reload.window": "更新 cmake.sourceDirectory 设置时出现问题。要使更改生效,请运行“重载窗口”命令。", "starting.cmake.driver": "正在启动 CMake 驱动程序", "bad.cmake.executable": "CMake 可执行文件“{0}”不正确。", "switch.to.serverapi": "在低于 {0} 的版本中不支持 CMake 文件与 API (file-api)通信模式。正在切换到 CMake 服务器通信模式。", @@ -29,8 +29,8 @@ "second.phase.init": "正在启动 CMakeTools 第二阶段初始化", "active.build.variant.changed": "活动的生成变量已更改", "changing.build.variant": "正在更改生成变量", - "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", - "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", + "cmakelists.save.trigger.reconfigure": "检测到正在保存 CMakeLists.txt,正在尝试自动重新配置…", + "cmakelists.save.could.not.reconfigure": "在 CMakeLists.txt 中检测到更改,但由于另一操作已在进行中,我们无法重新配置项目。", "needs.reconfigure": "需要重新配置项目,以使 CMakeLists.txt 中保存的更改生效。", "injecting.new.kit": "将新的工具包注入 CMake 驱动程序", "reloading.status": "正在重新加载...", @@ -64,7 +64,7 @@ "cannot.configure.no.kit": "无法配置: 没有为此 CMake 工具激活任何工具包", "waiting.on.variant": "正在等待变量选择", "no.variant.abort": "未选择任何变量。中止配置", - "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", + "warn.skip.configure.when.cache.present": "扩展已确定目前需要配置,\\\n 但由于 cmake.skipConfigureWhenCachePresent 设置已启用,我们将跳过配置。\\\n 请确保 CMake 缓存与最新的配置更改同步。", "cmake.drive.died.during.tasksbuildcommend": "CMake 驱动程序在 tasksBuildCommand 期间终止", "run.build": "正在生成文件夹: {0}", "unable.to.configure": "生成失败: 无法配置项目", diff --git a/i18n/chs/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/chs/src/drivers/cmakefileapi/api_helpers.i18n.json index 4a98e0282..192b8aa20 100644 --- a/i18n/chs/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/chs/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "failed.writing.to.file": "Failed writing to file {0}", + "failed.writing.to.file": "未能写入文件 {0}", "cache.object.version": "cmake-file-api 的缓存对象版本({0}.{1})不是预期版本。应为 ({2}.{3})。IntelliSense 配置可能不正确。", "cache.entry.unknowntype": "未知的缓存条目类型: {0}。", "code.model.version": "cmake-file-api 的代码模型版本({0}.{1})不是预期版本。应为 ({2}.{3})。IntelliSense 配置可能不正确。" diff --git a/i18n/chs/src/drivers/cmfileapi-driver.i18n.json b/i18n/chs/src/drivers/cmfileapi-driver.i18n.json index 2ecf56655..79c6f5b31 100644 --- a/i18n/chs/src/drivers/cmfileapi-driver.i18n.json +++ b/i18n/chs/src/drivers/cmfileapi-driver.i18n.json @@ -4,6 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "removing": "Removing {0}", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "removing": "正在删除 {0}", + "cmakelists.save.trigger.reconfigure": "检测到 \"cmake.sourceDirectory\" 设置更新,正在尝试自动重新配置…" } \ No newline at end of file diff --git a/i18n/chs/src/drivers/cms-driver.i18n.json b/i18n/chs/src/drivers/cms-driver.i18n.json index 8b3754722..46e6cfacb 100644 --- a/i18n/chs/src/drivers/cms-driver.i18n.json +++ b/i18n/chs/src/drivers/cms-driver.i18n.json @@ -11,5 +11,5 @@ "build.all.target": "用于生成所有可用目标的特殊目标", "install.all.target": "用于安装所有可用目标的特殊目标", "utility.target": "实用工具目标", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "cmakelists.save.trigger.reconfigure": "检测到 \"cmake.sourceDirectory\" 设置更新,正在尝试自动重新配置…" } \ No newline at end of file diff --git a/i18n/chs/src/extension.i18n.json b/i18n/chs/src/extension.i18n.json index ab76a25b1..772c75774 100644 --- a/i18n/chs/src/extension.i18n.json +++ b/i18n/chs/src/extension.i18n.json @@ -10,14 +10,14 @@ "yes.button": "是", "not.now.button": "暂不处理", "always.configure.on.open": "始终在打开时配置项目?", - "never.configure.on.open": "Configure projects on opening?", + "never.configure.on.open": "打开时配置项目?", "no.button": "否", "never.button": "从不", "never.for.this.workspace.button": "不是此工作区", "persist.config.on.open.setting": "保留“打开即配置”设置", "configuring.workspace.on.open": "正在打开的 {0} 上配置工作区", "configure.now.button": "立即配置", - "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", + "configure.recommended": "建议在升级到新的工具包定义后重新配置。", "update.code.model.for.cpptools": "更新 cpptools 的代码模型", "filed.to.open.cache.file.on.code.model.update": "未能在代码模型更新时打开 CMake 缓存文件", "opening.text.editor.for": "正在打开适用于 {0} 的文本编辑器", diff --git a/i18n/chs/src/kit.i18n.json b/i18n/chs/src/kit.i18n.json index dd23246b1..fbf7ac6af 100644 --- a/i18n/chs/src/kit.i18n.json +++ b/i18n/chs/src/kit.i18n.json @@ -34,7 +34,7 @@ "scanning.for.kits": "正在扫描工具包", "scanning.for.cmake.kits": "正在扫描 CMake 工具包...", "found.kit": "已找到工具包: {0}", - "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", + "silent.kits.rescan": "检测到工具包定义版本已从 {0} 更改为 {1}。扫描工具包但不显示提示。", "kit.for.toolchain.file": "适用于工具链文件 {0} 的工具包", "using.compilers.for": "将编译器用于 {0} ({1} 体系结构)", "using.compilers": "使用编译器: {0}", diff --git a/i18n/chs/src/kitsController.i18n.json b/i18n/chs/src/kitsController.i18n.json index e8a8dd708..60e93c03a 100644 --- a/i18n/chs/src/kitsController.i18n.json +++ b/i18n/chs/src/kitsController.i18n.json @@ -11,7 +11,7 @@ "unsetting.kit": "正在取消设置工具包", "loading.kit": "正在加载工具包 {0}", "invalid.only.kit": "唯一的工具包无效。应找到“{0}”", - "already.checking.kits": "Already checking kits. Please try again later.", + "already.checking.kits": "已检查工具包,请稍后再试。", "start.selection.of.kits": "开始选择工具包。已找到 {0} 个工具包。", "opening.kit.selection": "正在打开工具包选项快速选择", "scan.for.kits.button": "扫描工具包", diff --git a/i18n/chs/src/status.i18n.json b/i18n/chs/src/status.i18n.json index f6094c8e5..feb388ae0 100644 --- a/i18n/chs/src/status.i18n.json +++ b/i18n/chs/src/status.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "click.to.select.workspace.tooltip": "Click to select the active folder", + "click.to.select.workspace.tooltip": "单击可选择活动文件夹", "unconfigured": "未配置", "click.to.select.variant.tooltip": "单击可选择当前的生成变量", "loading.status": "正在加载...", diff --git a/i18n/chs/src/tree.i18n.json b/i18n/chs/src/tree.i18n.json index 38543cc0a..0ed70d82a 100644 --- a/i18n/chs/src/tree.i18n.json +++ b/i18n/chs/src/tree.i18n.json @@ -16,6 +16,6 @@ "update.project.with.mismatch": "更新具有不匹配的名称属性的项目", "workspace.active": "活动工作区", "workspace": "工作区", - "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", + "error.update.code.model.on.nonexist.folder": "正在对尚未加载的文件夹更新代码模型。", "error.rendering.children.nodes": "呈现子节点时出错" } \ No newline at end of file diff --git a/i18n/cht/package.i18n.json b/i18n/cht/package.i18n.json index eff4c9aa7..4f1b20ace 100644 --- a/i18n/cht/package.i18n.json +++ b/i18n/cht/package.i18n.json @@ -104,8 +104,8 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "安裝 Emscripten 的目錄。", "cmake-tools.configuration.cmake.copyCompileCommands.description": "組態成功之後,將 compile_commands.json 複製到此位置。", "cmake-tools.configuration.cmake.configureOnOpen.description": "開啟 CMake 專案目錄時自動進行組態。", - "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", - "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", + "cmake-tools.configuration.cmake.configureOnEdit.description": "在儲存 cmake.sourceDirectory 或 CMakeLists.txt 內容後,自動設定 CMake 專案目錄。", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "如果有快取,則跳過設定流程。", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "用於在延伸模組與 CMake 之間通訊的通訊協定", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "執行 CMake 命令時,不使用套件環境變數。", "cmake-tools.configuration.cmake.buildTask.description": "使用 tasks.json 而非內部處理序的組建。", @@ -113,10 +113,10 @@ "cmake-tools.configuration.cmake.enableTraceLogging.description": "為檔案及主控台啟用追蹤記錄 (雜訊非常多)。", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "自動選取作用中的資料夾", "cmake-tools.configuration.cmake.statusbar.visibility.description": "設定延伸模組在狀態列中顯示按鈕的方式", - "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "進行個別狀態列按鈕的設定。這些設定會覆寫更一般性的 'cmake.statusbar.visibility' 設定。", "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "設定延伸模組在狀態列中顯示此按鈕的方式", - "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", - "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "可根據測試結果變更此按鈕的色彩", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "在「精簡」模式中設定顯示文字的最大長度。", "cmake-tools.configuration.views.cmake.folders.description": "資料夾", "cmake-tools.configuration.views.cmake.outline.description": "專案大綱" } \ No newline at end of file diff --git a/i18n/cht/schemas/kits-schema.json.i18n.json b/i18n/cht/schemas/kits-schema.json.i18n.json index 4953d3497..f6c0f994d 100644 --- a/i18n/cht/schemas/kits-schema.json.i18n.json +++ b/i18n/cht/schemas/kits-schema.json.i18n.json @@ -12,7 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "工具鏈檔案路徑", "schemas/kits-schema.json.items.properties.visualStudio": "Visual Studio 產品名稱", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "要設為目標的架構", - "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "修改套件環境的指令碼絕對路徑", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "環境變數的值", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "CMake 設定的值", "schemas/kits-schema.json.items.properties.preferredGenerator": "設定此套件的慣用 CMake 產生器", diff --git a/i18n/cht/src/cmake-tools.i18n.json b/i18n/cht/src/cmake-tools.i18n.json index e53738611..6a45a70e9 100644 --- a/i18n/cht/src/cmake-tools.i18n.json +++ b/i18n/cht/src/cmake-tools.i18n.json @@ -15,9 +15,9 @@ "quickstart.cmake.project": "建立", "edit.setting": "尋找", "ignore.activation": "不要再顯示", - "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", + "missing.cmakelists": "在資料夾 '{0}' 的根目錄中找不到 CMakeLists.txt。您希望如何繼續?", "reload.window": "重新載入視窗", - "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", + "setting.sourceDirectory.failed.needs.reload.window": "更新 cmake.sourceDirectory 設定時發生錯誤。請執行 [重新載入視窗] 命令,以讓變更生效。", "starting.cmake.driver": "正在啟動 CMake 驅動程式", "bad.cmake.executable": "錯誤的 CMake 可執行檔 \"{0}\"。", "switch.to.serverapi": "{0} 之前的版本,不支援 CMake 的檔案對 api 通訊模式。正在切換到 CMake 伺服器通訊模式。", @@ -29,9 +29,9 @@ "second.phase.init": "正在啟動 CMakeTools 第二階段初始化", "active.build.variant.changed": "已變更使用中的建置變化", "changing.build.variant": "正在變更建置變化", - "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", - "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", - "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", + "cmakelists.save.trigger.reconfigure": "偵測到儲存 CMakeLists.txt 的作業,正在嘗試自動重新設定...", + "cmakelists.save.could.not.reconfigure": "在 CMakeLists.txt 中偵測到變更,但因為另一個作業已在進行,所以無法重新設定專案。", + "needs.reconfigure": "必須重新設定專案,儲存在 CMakeLists.txt 中的變更才會生效。", "injecting.new.kit": "正在將新套件插入 CMake 驅動程式", "reloading.status": "正在重新載入...", "unable.to.set.kit": "無法設定套件 \"{0}\"。", @@ -64,7 +64,7 @@ "cannot.configure.no.kit": "無法設定: 此 CMake 工具沒有任何使用中的套件", "waiting.on.variant": "正在等候變化選取項目", "no.variant.abort": "未選取任何變化。中止設定", - "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", + "warn.skip.configure.when.cache.present": "延伸模組判斷目前需要設定\\\n 但因為設定 cmake.skipConfigureWhenCachePresent 已開啟,所以正在跳過設定。\\\n 請確定 CMake 快取與最新的設定變更同步。", "cmake.drive.died.during.tasksbuildcommend": "CMake 驅動程式在 tasksBuildCommand 期間已終止", "run.build": "正在建置資料夾: {0}", "unable.to.configure": "建置失敗: 無法設定專案", diff --git a/i18n/cht/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/cht/src/drivers/cmakefileapi/api_helpers.i18n.json index a60e4860c..f435e7da3 100644 --- a/i18n/cht/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/cht/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "failed.writing.to.file": "Failed writing to file {0}", + "failed.writing.to.file": "無法寫入檔案 {0}", "cache.object.version": "cmake-file-api 的快取物件版本 ({0}.{1}) 不符預期,其應為 ({2}.{3})。IntelliSense 組態可能不正確。", "cache.entry.unknowntype": "未知的快取項目類型: {0}。", "code.model.version": "cmake-file-api 的程式碼模型版本 ({0}.{1}) 不符預期,其應為 ({2}.{3})。IntelliSense 組態可能不正確。" diff --git a/i18n/cht/src/drivers/cmfileapi-driver.i18n.json b/i18n/cht/src/drivers/cmfileapi-driver.i18n.json index 2ecf56655..b958563eb 100644 --- a/i18n/cht/src/drivers/cmfileapi-driver.i18n.json +++ b/i18n/cht/src/drivers/cmfileapi-driver.i18n.json @@ -4,6 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "removing": "Removing {0}", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "removing": "正在移除 {0}", + "cmakelists.save.trigger.reconfigure": "偵測到 'cmake.sourceDirectory' 設定更新,正在嘗試自動重新設定..." } \ No newline at end of file diff --git a/i18n/cht/src/drivers/cms-driver.i18n.json b/i18n/cht/src/drivers/cms-driver.i18n.json index b79d02359..c84d440b4 100644 --- a/i18n/cht/src/drivers/cms-driver.i18n.json +++ b/i18n/cht/src/drivers/cms-driver.i18n.json @@ -11,5 +11,5 @@ "build.all.target": "用來建置所有可用目標的特殊目標", "install.all.target": "用來安裝所有可用目標的特殊目標", "utility.target": "公用程式目標", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "cmakelists.save.trigger.reconfigure": "偵測到 'cmake.sourceDirectory' 設定更新,正在嘗試自動重新設定..." } \ No newline at end of file diff --git a/i18n/cht/src/extension.i18n.json b/i18n/cht/src/extension.i18n.json index 04e87e6c6..05d2943f3 100644 --- a/i18n/cht/src/extension.i18n.json +++ b/i18n/cht/src/extension.i18n.json @@ -10,14 +10,14 @@ "yes.button": "是", "not.now.button": "現在不要", "always.configure.on.open": "永遠在開啟時設定專案嗎?", - "never.configure.on.open": "Configure projects on opening?", + "never.configure.on.open": "要在開啟時設定專案嗎?", "no.button": "否", - "never.button": "Never", - "never.for.this.workspace.button": "Not this workspace", + "never.button": "永遠不要", + "never.for.this.workspace.button": "不要在此工作區", "persist.config.on.open.setting": "保存 config-on-open 設定", "configuring.workspace.on.open": "正在於開啟的 {0} 上設定工作區", "configure.now.button": "立即設定", - "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", + "configure.recommended": "建議您在升級為新套件定義後重新設定。", "update.code.model.for.cpptools": "更新 cpptools 的程式碼模型", "filed.to.open.cache.file.on.code.model.update": "無法在程式碼模型更新時開啟 CMake 快取檔案", "opening.text.editor.for": "正在開啟 {0} 的文字編輯器", diff --git a/i18n/cht/src/kit.i18n.json b/i18n/cht/src/kit.i18n.json index aa548856c..0b1afb402 100644 --- a/i18n/cht/src/kit.i18n.json +++ b/i18n/cht/src/kit.i18n.json @@ -34,7 +34,7 @@ "scanning.for.kits": "正在掃描套件", "scanning.for.cmake.kits": "正在掃描 CMake 套件...", "found.kit": "找到套件: {0}", - "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", + "silent.kits.rescan": "偵測到套件定義版本從 {0} 變更為 {1}。以無訊息的方式自動掃描套件。", "kit.for.toolchain.file": "工具鏈檔案 {0} 的套件", "using.compilers.for": "使用 {0} 的編譯器({1} 架構)", "using.compilers": "正在使用編譯器: {0}", diff --git a/i18n/cht/src/kitsController.i18n.json b/i18n/cht/src/kitsController.i18n.json index cb8079c49..a0aff6a55 100644 --- a/i18n/cht/src/kitsController.i18n.json +++ b/i18n/cht/src/kitsController.i18n.json @@ -11,7 +11,7 @@ "unsetting.kit": "正在取消設定套件", "loading.kit": "正在載入套件 {0}", "invalid.only.kit": "僅套件無效。應找到 '{0}'", - "already.checking.kits": "Already checking kits. Please try again later.", + "already.checking.kits": "已在檢查套件。請稍後再試一次。", "start.selection.of.kits": "開始選取套件。找到 {0} 個套件。", "opening.kit.selection": "正在開啟套件選取 QuickPick", "scan.for.kits.button": "掃描套件", diff --git a/i18n/cht/src/status.i18n.json b/i18n/cht/src/status.i18n.json index 5704ff946..d110de84e 100644 --- a/i18n/cht/src/status.i18n.json +++ b/i18n/cht/src/status.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "click.to.select.workspace.tooltip": "Click to select the active folder", + "click.to.select.workspace.tooltip": "按一下以選取使用中的資料夾", "unconfigured": "未設定", "click.to.select.variant.tooltip": "按一下以選取目前的建置變化", "loading.status": "正在載入...", @@ -14,12 +14,12 @@ "set.active.target.tooltip": "設定要建置的使用中目標", "select.target.tooltip": "選取要啟動的目標", "launch.debugger.tooltip": "為選取的目標啟動偵錯工具", - "launch.tooltip": "Launch the selected target in the terminal window", + "launch.tooltip": "在終端視窗中啟動選取的目標", "run.ctest.tests.tooltip": "執行 CTest 測試", "run.ctest": "執行 CTest", "test.passing": "{0}/{1} 個測試通過", "tests.passing": "{0}/{1} 個測試通過", - "build.tooltip": "Build the selected target", + "build.tooltip": "建置選取的目標", "build": "建置", "stop": "停止" } \ No newline at end of file diff --git a/i18n/cht/src/tree.i18n.json b/i18n/cht/src/tree.i18n.json index 85f491354..e776f6fb4 100644 --- a/i18n/cht/src/tree.i18n.json +++ b/i18n/cht/src/tree.i18n.json @@ -14,8 +14,8 @@ "item.render.issue": "轉譯此項目時發生問題。這是 Bug", "empty.project": "空白專案", "update.project.with.mismatch": "更新具有不符名稱屬性的專案", - "workspace.active": "Active Workspace", + "workspace.active": "使用中的工作區", "workspace": "工作區", - "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", + "error.update.code.model.on.nonexist.folder": "正在更新尚未載入之資料夾中的程式碼模型。", "error.rendering.children.nodes": "轉譯子節點時發生錯誤" } \ No newline at end of file diff --git a/i18n/csy/package.i18n.json b/i18n/csy/package.i18n.json index 72a3adcd2..02379ef98 100644 --- a/i18n/csy/package.i18n.json +++ b/i18n/csy/package.i18n.json @@ -104,19 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Adresáře, ve kterých může být nainstalovaný Emscripten", "cmake-tools.configuration.cmake.copyCompileCommands.description": "Po úspěšné konfiguraci zkopírovat soubor compile_commands.json do tohoto umístění", "cmake-tools.configuration.cmake.configureOnOpen.description": "Automaticky konfigurovat adresáře projektu CMake při jejich otevření", - "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", - "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", + "cmake-tools.configuration.cmake.configureOnEdit.description": "Automaticky nakonfigurovat adresáře projektu CMake, když se uloží obsah cmake.sourceDirectory nebo CMakeLists.txt", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Přeskočit proces konfigurace, pokud je k dispozici mezipaměť", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "Protokol, pomocí kterého se komunikuje mezi rozšířením a nástrojem CMake", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "Při spouštění příkazů CMake nepoužívat proměnné prostředí sady", "cmake-tools.configuration.cmake.buildTask.description": "Sestavit pomocí souboru tasks.json místo interního procesu", "cmake-tools.configuration.cmake.outputLogEncoding.description": "Kódování výstupu z externích příkazů (např. cmake -- build)", "cmake-tools.configuration.cmake.enableTraceLogging.description": "Povolit protokolování trasování do souboru a konzoly (velmi vysoké objemy dat)", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "Vybrat aktivní složku automaticky", - "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", - "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", - "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "Nakonfiguruje, jak rozšíření zobrazí tlačítka na stavovém řádku.", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "Nakonfiguruje nastavení jednotlivých tlačítek stavového řádku. Tato nastavení přepíšou obecnější nastavení cmake.statusbar.visibility.", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Nakonfiguruje, jak rozšíření zobrazí toto tlačítko na stavovém řádku.", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Povolí změnu barvy tohoto tlačítka v závislosti na výsledcích testů.", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Nakonfiguruje maximální délku viditelného textu v režimu compact.", "cmake-tools.configuration.views.cmake.folders.description": "Složky", "cmake-tools.configuration.views.cmake.outline.description": "Osnova projektu" } \ No newline at end of file diff --git a/i18n/csy/schemas/kits-schema.json.i18n.json b/i18n/csy/schemas/kits-schema.json.i18n.json index 233cfdd52..e31c4a3f7 100644 --- a/i18n/csy/schemas/kits-schema.json.i18n.json +++ b/i18n/csy/schemas/kits-schema.json.i18n.json @@ -12,7 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Cesta k souboru sady nástrojů", "schemas/kits-schema.json.items.properties.visualStudio": "Název produktu Visual Studio", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Cílená architektura", - "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "Absolutní cesta ke skriptu, který upravuje prostředí pro sadu", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Hodnota pro proměnnou prostředí", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Hodnota pro nastavení CMake", "schemas/kits-schema.json.items.properties.preferredGenerator": "Nastavit preferovaný generátor CMake pro tuto sadu", diff --git a/i18n/csy/src/cmake-tools.i18n.json b/i18n/csy/src/cmake-tools.i18n.json index 13fd395ce..dfd66aaf1 100644 --- a/i18n/csy/src/cmake-tools.i18n.json +++ b/i18n/csy/src/cmake-tools.i18n.json @@ -12,12 +12,12 @@ "configuration.already.in.progress": "Konfigurace už probíhá.", "task.already.running": "Úloha CMake je už spuštěná. Před pokusem o spuštění nové úlohy CMake ji zastavte.", "no.source.directory.found": "Nemáte otevřený zdrojový adresář.", - "quickstart.cmake.project": "Create", - "edit.setting": "Locate", - "ignore.activation": "Don't show again", - "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", - "reload.window": "Reload Window", - "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", + "quickstart.cmake.project": "Vytvořit", + "edit.setting": "Vyhledat", + "ignore.activation": "Znovu nezobrazovat", + "missing.cmakelists": "Soubor CMakeLists.txt se nenašel v kořenu složky {0}. Jak chcete pokračovat?", + "reload.window": "Znovu načíst okno", + "setting.sourceDirectory.failed.needs.reload.window": "Během aktualizace nastavení cmake.sourceDirectory se něco nepovedlo. Spusťte prosím příkaz Znovu načíst okno, aby se změna projevila.", "starting.cmake.driver": "Spouští se ovladač CMake.", "bad.cmake.executable": "Nesprávný spustitelný soubor nástrojů CMake {0}", "switch.to.serverapi": "Režim komunikace pomocí rozhraní API souborů CMake se ve verzích starších než {0} nepodporuje. Přepíná se na režim komunikace pomocí serveru CMake.", @@ -29,9 +29,9 @@ "second.phase.init": "Spouští se inicializace druhé fáze CMakeTools.", "active.build.variant.changed": "Změnila se aktivní varianta sestavení.", "changing.build.variant": "Mění se varianta sestavení.", - "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", - "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", - "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", + "cmakelists.save.trigger.reconfigure": "Zjistilo se uložení souboru CMakeLists.txt, probíhá pokus o automatickou změnu konfigurace...", + "cmakelists.save.could.not.reconfigure": "V souboru CMakeLists.txt se zjistily změny, ale konfiguraci projektu jsme nemohli změnit, protože už probíhá jiná operace.", + "needs.reconfigure": "Projekt se musí překonfigurovat tak, aby se mohly projevit změny uložené v souboru CMakeLists.txt.", "injecting.new.kit": "Vkládá se nová sada do ovladače CMake.", "reloading.status": "Opětovné načítání...", "unable.to.set.kit": "Nejde nastavit sadu {0}.", @@ -64,7 +64,7 @@ "cannot.configure.no.kit": "Nejde nakonfigurovat: Pro tyto nástroje CMake Tools není aktivní žádná sada.", "waiting.on.variant": "Čeká se na výběr varianty.", "no.variant.abort": "Není vybraná žádná varianta. Přerušte příkaz configure.", - "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", + "warn.skip.configure.when.cache.present": "Rozšíření zjistilo, že se v tuto chvíli vyžaduje konfigurace, \\\n ale přeskakujeme ji, protože je zapnuté nastavení cmake.skipConfigureWhenCachePresent. \\\n Ujistěte se, že je mezipaměť CMake synchronizovaná s nejnovějšími změnami konfigurace.", "cmake.drive.died.during.tasksbuildcommend": "Během operace tasksBuildCommand se ukončil ovladač CMake.", "run.build": "Sestavuje se složka: {0}", "unable.to.configure": "Sestavení se nepovedlo: projekt nejde nakonfigurovat", diff --git a/i18n/csy/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/csy/src/drivers/cmakefileapi/api_helpers.i18n.json index b64b7d90b..64244d7bc 100644 --- a/i18n/csy/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/csy/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "failed.writing.to.file": "Failed writing to file {0}", + "failed.writing.to.file": "Nepovedlo se zapisovat do souboru {0}.", "cache.object.version": "Verze objektu mezipaměti ({0}.{1}) pro cmake-file-api se neočekává. Očekává se ({2}.{3}). Je možné, že konfigurace IntelliSense není správná.", "cache.entry.unknowntype": "Neznámý typ položky mezipaměti: {0}", "code.model.version": "Verze modelu kódu ({0}.{1}) pro cmake-file-api se neočekává. Očekává se ({2}.{3}). Je možné, že konfigurace IntelliSense není správná." diff --git a/i18n/csy/src/drivers/cmfileapi-driver.i18n.json b/i18n/csy/src/drivers/cmfileapi-driver.i18n.json index 2ecf56655..692464a62 100644 --- a/i18n/csy/src/drivers/cmfileapi-driver.i18n.json +++ b/i18n/csy/src/drivers/cmfileapi-driver.i18n.json @@ -4,6 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "removing": "Removing {0}", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "removing": "Odebírá se {0}.", + "cmakelists.save.trigger.reconfigure": "Zjistila se aktualizace nastavení cmake.sourceDirectory, probíhá pokus o automatickou změnu konfigurace..." } \ No newline at end of file diff --git a/i18n/csy/src/drivers/cms-driver.i18n.json b/i18n/csy/src/drivers/cms-driver.i18n.json index 3f528f88d..f38aab197 100644 --- a/i18n/csy/src/drivers/cms-driver.i18n.json +++ b/i18n/csy/src/drivers/cms-driver.i18n.json @@ -11,5 +11,5 @@ "build.all.target": "Speciální cíl umožňující sestavení všech dostupných cílů", "install.all.target": "Speciální cíl umožňující instalaci všech dostupných cílů", "utility.target": "Cíl nástroje", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "cmakelists.save.trigger.reconfigure": "Zjistila se aktualizace nastavení cmake.sourceDirectory, probíhá pokus o automatickou změnu konfigurace..." } \ No newline at end of file diff --git a/i18n/csy/src/extension.i18n.json b/i18n/csy/src/extension.i18n.json index ad0b137b1..0fca5ef31 100644 --- a/i18n/csy/src/extension.i18n.json +++ b/i18n/csy/src/extension.i18n.json @@ -10,14 +10,14 @@ "yes.button": "Ano", "not.now.button": "Teď ne", "always.configure.on.open": "Chcete vždycky konfigurovat projekty při otevření?", - "never.configure.on.open": "Configure projects on opening?", + "never.configure.on.open": "Nakonfigurovat projekty při otevření?", "no.button": "Ne", - "never.button": "Never", - "never.for.this.workspace.button": "Not this workspace", + "never.button": "Nikdy", + "never.for.this.workspace.button": "Ne pro tento pracovní prostor", "persist.config.on.open.setting": "Zachovat nastavení konfigurace při otevření", "configuring.workspace.on.open": "Konfiguruje se pracovní prostor při otvírání elementu {0}.", - "configure.now.button": "Configure Now", - "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", + "configure.now.button": "Nakonfigurovat", + "configure.recommended": "Po upgradu na novou definici sad se doporučuje změnit konfiguraci.", "update.code.model.for.cpptools": "Aktualizovat model kódu pro cpptools", "filed.to.open.cache.file.on.code.model.update": "Nepovedlo se otevřít soubor mezipaměti CMake při aktualizaci kódu modelu.", "opening.text.editor.for": "Spouští se textový editor pro {0}.", diff --git a/i18n/csy/src/kit.i18n.json b/i18n/csy/src/kit.i18n.json index 590b7596c..4fbea88f9 100644 --- a/i18n/csy/src/kit.i18n.json +++ b/i18n/csy/src/kit.i18n.json @@ -34,7 +34,7 @@ "scanning.for.kits": "Hledají se sady.", "scanning.for.cmake.kits": "Hledají se sady CMake...", "found.kit": "Nalezena sada: {0}", - "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", + "silent.kits.rescan": "Zjistila se změna verze definice sad z {0} na {1}. Kontrolují se sady v tichém režimu.", "kit.for.toolchain.file": "Sada pro soubor sady nástrojů {0}", "using.compilers.for": "Používají se kompilátory pro {0} (architektura {1}).", "using.compilers": "Používají se kompilátory: {0}", diff --git a/i18n/csy/src/kitsController.i18n.json b/i18n/csy/src/kitsController.i18n.json index 61a24f815..901e3c065 100644 --- a/i18n/csy/src/kitsController.i18n.json +++ b/i18n/csy/src/kitsController.i18n.json @@ -11,7 +11,7 @@ "unsetting.kit": "Ruší se nastavení sady.", "loading.kit": "Načítá se sada {0}.", "invalid.only.kit": "Jediná neplatná sada. Očekávalo se nalezení elementu {0}.", - "already.checking.kits": "Already checking kits. Please try again later.", + "already.checking.kits": "Sady se už kontrolují. Zkuste to prosím znovu později.", "start.selection.of.kits": "Začněte vybírat sady. Nalezené sady: {0}", "opening.kit.selection": "Otevírá se element QuickPick výběru sady.", "scan.for.kits.button": "Vyhledat sady", diff --git a/i18n/csy/src/status.i18n.json b/i18n/csy/src/status.i18n.json index 0ff4da7ba..79faed25b 100644 --- a/i18n/csy/src/status.i18n.json +++ b/i18n/csy/src/status.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "click.to.select.workspace.tooltip": "Click to select the active folder", + "click.to.select.workspace.tooltip": "Kliknutím vyberete aktivní složku.", "unconfigured": "Nenakonfigurováno", "click.to.select.variant.tooltip": "Kliknutím vyberete variantu aktuálního sestavení.", "loading.status": "Načítání...", @@ -14,12 +14,12 @@ "set.active.target.tooltip": "Umožní nastavit aktivní cíl k sestavení.", "select.target.tooltip": "Umožní vybrat cíl, který se má spustit.", "launch.debugger.tooltip": "Spustí ladicí program pro vybraný cíl.", - "launch.tooltip": "Launch the selected target in the terminal window", + "launch.tooltip": "Spustit vybraný cíl v okně terminálu", "run.ctest.tests.tooltip": "Spustí testy CTest.", "run.ctest": "Spustit CTest", "test.passing": "Počet testů, které prošly: {0}/{1}", "tests.passing": "Počet testů, které prošly: {0}/{1}", - "build.tooltip": "Build the selected target", + "build.tooltip": "Sestavit vybraný cíl", "build": "Build", "stop": "Zastavit" } \ No newline at end of file diff --git a/i18n/csy/src/tree.i18n.json b/i18n/csy/src/tree.i18n.json index 5383d0eac..df38f7a63 100644 --- a/i18n/csy/src/tree.i18n.json +++ b/i18n/csy/src/tree.i18n.json @@ -14,8 +14,8 @@ "item.render.issue": "Při vykreslování této položky došlo k problému. Toto je chyba.", "empty.project": "Prázdný projekt", "update.project.with.mismatch": "Aktualizovat projekt s neshodnou vlastností názvu", - "workspace.active": "Active Workspace", - "workspace": "Workspace", - "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", + "workspace.active": "Aktivní pracovní prostor", + "workspace": "Pracovní prostor", + "error.update.code.model.on.nonexist.folder": "Aktualizuje se model kódu ve složce, která se ještě nenačetla.", "error.rendering.children.nodes": "Chyba při vykreslování podřízených uzlů" } \ No newline at end of file diff --git a/i18n/deu/package.i18n.json b/i18n/deu/package.i18n.json index f06490787..db6c2d21e 100644 --- a/i18n/deu/package.i18n.json +++ b/i18n/deu/package.i18n.json @@ -104,19 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Verzeichnisse, in denen Emscripten möglicherweise installiert ist.", "cmake-tools.configuration.cmake.copyCompileCommands.description": "Hiermit wird \"compile_commands.json\" nach erfolgreicher Konfiguration an diesen Speicherort kopiert.", "cmake-tools.configuration.cmake.configureOnOpen.description": "Hiermit werden CMake-Projektverzeichnisse beim Öffnen automatisch konfiguriert.", - "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", - "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", + "cmake-tools.configuration.cmake.configureOnEdit.description": "Hiermit werden CMake-Projektverzeichnisse automatisch konfiguriert, wenn cmake.sourceDirectory- oder CMakeLists.txt-Inhalte gespeichert werden.", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Hiermit wird der Konfigurationsprozess übersprungen, wenn der Cache vorhanden ist.", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "Das für die Kommunikation zwischen der Erweiterung und CMake verwendete Protokoll", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "Hiermit werden die Umgebungsvariablen des Kits beim Ausführen von CMake-Befehlen nicht verwendet.", "cmake-tools.configuration.cmake.buildTask.description": "Über \"tasks.json\" statt über internen Prozess erstellen", "cmake-tools.configuration.cmake.outputLogEncoding.description": "Codierung der Ausgabe von externen Befehlen (z. B.: cmake --build).", "cmake-tools.configuration.cmake.enableTraceLogging.description": "Hiermit wird die Ablaufverfolgungsprotokollierung in Datei und Konsole aktiviert (große Datenmenge).", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "Aktiven Ordner automatisch auswählen", - "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", - "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", - "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "Hiermit wird konfiguriert, wie die Erweiterung die Schaltflächen in der Statusleiste anzeigt.", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "Hiermit werden die Einstellungen für einzelne Schaltflächen auf der Statusleiste konfiguriert. Diese Einstellungen überschreiben die allgemeinere Einstellung \"cmake.statusbar.visibility\".", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Hiermit wird konfiguriert, wie die Erweiterung diese Schaltfläche in der Statusleiste anzeigt.", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Hiermit wird die Farbänderung für diese Schaltfläche je nach Testergebnis aktiviert.", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Hiermit wird die maximale Länge des sichtbaren Texts im Compact-Modus konfiguriert.", "cmake-tools.configuration.views.cmake.folders.description": "Ordner", "cmake-tools.configuration.views.cmake.outline.description": "Projektgliederung" } \ No newline at end of file diff --git a/i18n/deu/schemas/kits-schema.json.i18n.json b/i18n/deu/schemas/kits-schema.json.i18n.json index c666d2a20..e10a4dfc9 100644 --- a/i18n/deu/schemas/kits-schema.json.i18n.json +++ b/i18n/deu/schemas/kits-schema.json.i18n.json @@ -12,7 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Pfad zu einer Toolkettendatei", "schemas/kits-schema.json.items.properties.visualStudio": "Name des Visual Studio-Produkts", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Als Ziel zu verwendende Architektur", - "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "Der absolute Pfad zu einem Skript, das die Umgebung für das Kit ändert.", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Wert für die Umgebungsvariable", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Wert für die CMake-Einstellung", "schemas/kits-schema.json.items.properties.preferredGenerator": "Bevorzugten CMake-Generator für dieses Kit festlegen", diff --git a/i18n/deu/src/cmake-tools.i18n.json b/i18n/deu/src/cmake-tools.i18n.json index 4789c0c86..dd8d327c5 100644 --- a/i18n/deu/src/cmake-tools.i18n.json +++ b/i18n/deu/src/cmake-tools.i18n.json @@ -12,12 +12,12 @@ "configuration.already.in.progress": "Die Konfiguration wird bereits ausgeführt.", "task.already.running": "Ein CMake-Task wird bereits ausgeführt. Beenden Sie den Vorgang, bevor Sie einen neuen CMake-Task ausführen.", "no.source.directory.found": "Es ist kein Quellverzeichnis geöffnet.", - "quickstart.cmake.project": "Create", - "edit.setting": "Locate", - "ignore.activation": "Don't show again", - "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", - "reload.window": "Reload Window", - "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", + "quickstart.cmake.project": "Erstellen", + "edit.setting": "Suchen", + "ignore.activation": "Nicht mehr anzeigen", + "missing.cmakelists": "CMakeLists.txt wurde im Stamm des Ordners \"{0}\" nicht gefunden. Wie möchten Sie fortfahren?", + "reload.window": "Fenster erneut laden", + "setting.sourceDirectory.failed.needs.reload.window": "Beim Aktualisieren der cmake.sourceDirectory-Einstellung ist ein Problem aufgetreten. Führen Sie den Befehl \"Fenster erneut laden\" aus, damit die Änderung wirksam wird.", "starting.cmake.driver": "CMake-Treiber wird gestartet.", "bad.cmake.executable": "Ungültige ausführbare CMake-Datei \"{0}\".", "switch.to.serverapi": "Der CMake-Kommunikationsmodus \"file-api\" wird in Versionen vor {0} nicht unterstützt. Es wird zum CMake-Serverkommunikationsmodus gewechselt.", @@ -29,9 +29,9 @@ "second.phase.init": "Die CMakeTools-Initialisierung der zweiten Phase wird gestartet.", "active.build.variant.changed": "Aktive Buildvariante geändert", "changing.build.variant": "Die Buildvariante wird geändert.", - "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", - "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", - "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", + "cmakelists.save.trigger.reconfigure": "Speichern von CMakeLists.txt erkannt, automatische Neukonfiguration wird versucht...", + "cmakelists.save.could.not.reconfigure": "In CMakeLists.txt wurden Änderungen erkannt. Das Projekt konnte jedoch nicht neu konfiguriert werden, weil bereits ein anderer Vorgang ausgeführt wird.", + "needs.reconfigure": "Das Projekt muss neu konfiguriert werden, damit die in CMakeLists.txt gespeicherten Änderungen wirksam werden.", "injecting.new.kit": "Das neue Kit wird in den CMake-Treiber eingefügt.", "reloading.status": "Wird neu geladen...", "unable.to.set.kit": "Das Kit \"{0}\" kann nicht festgelegt werden.", @@ -64,7 +64,7 @@ "cannot.configure.no.kit": "Konfigurieren nicht möglich: Für diese CMake Tools-Instanz ist kein Kit aktiv.", "waiting.on.variant": "Warten auf Variantenauswahl", "no.variant.abort": "Keine Variante ausgewählt. Konfiguration abbrechen", - "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", + "warn.skip.configure.when.cache.present": "Die Erweiterung hat festgestellt, dass momentan eine Konfiguration erforderlich ist, \\\n aber diese wird übersprungen, weil die Einstellung \"cmake.skipConfigureWhenCachePresent\" aktiviert ist. \\\n Stellen Sie sicher, dass der CMake-Cache mit den neuesten Konfigurationsänderungen synchronisiert ist.", "cmake.drive.died.during.tasksbuildcommend": "Der CMake-Treiber wurde während tasksBuildCommand beendet.", "run.build": "Ordner wird erstellt: {0}", "unable.to.configure": "Buildfehler: Das Projekt konnte nicht konfiguriert werden.", diff --git a/i18n/deu/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/deu/src/drivers/cmakefileapi/api_helpers.i18n.json index 3de9f17ca..2abf2b905 100644 --- a/i18n/deu/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/deu/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "failed.writing.to.file": "Failed writing to file {0}", + "failed.writing.to.file": "Fehler beim Schreiben in Datei \"{0}\".", "cache.object.version": "Unerwartete Cacheobjektversion ({0}.{1}) von cmake-file-api. Erwartet: ({2}.{3}). Möglicherweise ist die IntelliSense-Konfiguration falsch.", "cache.entry.unknowntype": "Unbekannter Cacheeintragstyp: \"{0}\".", "code.model.version": "Unerwartete Codemodellversion ({0}.{1}) von cmake-file-api. Erwartet: ({2}.{3}). Möglicherweise ist die IntelliSense-Konfiguration falsch." diff --git a/i18n/deu/src/drivers/cmfileapi-driver.i18n.json b/i18n/deu/src/drivers/cmfileapi-driver.i18n.json index 2ecf56655..fb84e9a7c 100644 --- a/i18n/deu/src/drivers/cmfileapi-driver.i18n.json +++ b/i18n/deu/src/drivers/cmfileapi-driver.i18n.json @@ -4,6 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "removing": "Removing {0}", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "removing": "\"{0}\" wird entfernt.", + "cmakelists.save.trigger.reconfigure": "Update für Einstellung \"cmake.sourceDirectory\" erkannt. Automatische Neukonfiguration wird versucht..." } \ No newline at end of file diff --git a/i18n/deu/src/drivers/cms-driver.i18n.json b/i18n/deu/src/drivers/cms-driver.i18n.json index 8ff6341ad..20ee2eced 100644 --- a/i18n/deu/src/drivers/cms-driver.i18n.json +++ b/i18n/deu/src/drivers/cms-driver.i18n.json @@ -11,5 +11,5 @@ "build.all.target": "Ein spezielles Ziel zum Erstellen aller verfügbaren Ziele", "install.all.target": "Ein spezielles Ziel zum Installieren aller verfügbaren Ziele", "utility.target": "Hilfsprogrammziel", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "cmakelists.save.trigger.reconfigure": "Update für Einstellung \"cmake.sourceDirectory\" erkannt. Automatische Neukonfiguration wird versucht..." } \ No newline at end of file diff --git a/i18n/deu/src/extension.i18n.json b/i18n/deu/src/extension.i18n.json index 40e08bc77..d8619851c 100644 --- a/i18n/deu/src/extension.i18n.json +++ b/i18n/deu/src/extension.i18n.json @@ -10,14 +10,14 @@ "yes.button": "Ja", "not.now.button": "Nicht jetzt", "always.configure.on.open": "Projekte beim Öffnen immer konfigurieren?", - "never.configure.on.open": "Configure projects on opening?", + "never.configure.on.open": "Projekte beim Öffnen konfigurieren?", "no.button": "Nein", - "never.button": "Never", - "never.for.this.workspace.button": "Not this workspace", + "never.button": "Nie", + "never.for.this.workspace.button": "Nicht dieser Arbeitsbereich", "persist.config.on.open.setting": "Einstellung \"config-on-open\" beibehalten", "configuring.workspace.on.open": "Arbeitsbereich wird beim Öffnen von {0} konfiguriert.", - "configure.now.button": "Configure Now", - "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", + "configure.now.button": "Jetzt konfigurieren", + "configure.recommended": "Nach dem Upgrade auf eine neue Definition der Kits wird eine Neukonfiguration empfohlen.", "update.code.model.for.cpptools": "Codemodell für cpptools aktualisieren", "filed.to.open.cache.file.on.code.model.update": "Fehler beim Öffnen der CMake-Cachedatei für das Codemodellupdate.", "opening.text.editor.for": "Der Text-Editor für \"{0}\" wird geöffnet.", diff --git a/i18n/deu/src/kit.i18n.json b/i18n/deu/src/kit.i18n.json index bcc8f9063..eeb21668b 100644 --- a/i18n/deu/src/kit.i18n.json +++ b/i18n/deu/src/kit.i18n.json @@ -34,7 +34,7 @@ "scanning.for.kits": "Es wird nach Kits gesucht.", "scanning.for.cmake.kits": "Es wird nach CMake-Kits gesucht...", "found.kit": "Kit gefunden: {0}", - "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", + "silent.kits.rescan": "Bei der Definition von Kits wurde eine Änderung der Version von \"{0}\" in \"{1}\" festgestellt. Es wird automatisch nach Kits gesucht.", "kit.for.toolchain.file": "Kit für Toolkettendatei \"{0}\"", "using.compilers.for": "Compiler für {0} werden verwendet ({1}-Architektur).", "using.compilers": "Compiler werden verwendet: {0}", diff --git a/i18n/deu/src/kitsController.i18n.json b/i18n/deu/src/kitsController.i18n.json index 9f0600aaa..c589ab0f9 100644 --- a/i18n/deu/src/kitsController.i18n.json +++ b/i18n/deu/src/kitsController.i18n.json @@ -11,7 +11,7 @@ "unsetting.kit": "Die Einstellung des Kits wird aufgehoben.", "loading.kit": "Kit \"{0}\" wird geladen.", "invalid.only.kit": "Nur ungültiges Kit. Erwartet: {0}", - "already.checking.kits": "Already checking kits. Please try again later.", + "already.checking.kits": "Kits werden bereits überprüft. Versuchen Sie es später noch mal.", "start.selection.of.kits": "Starten Sie die Auswahl der Kits. {0} Kits gefunden.", "opening.kit.selection": "QuickPick zur Kitauswahl wird geöffnet.", "scan.for.kits.button": "Nach Kits suchen", diff --git a/i18n/deu/src/status.i18n.json b/i18n/deu/src/status.i18n.json index 7855ff942..29cd6fb71 100644 --- a/i18n/deu/src/status.i18n.json +++ b/i18n/deu/src/status.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "click.to.select.workspace.tooltip": "Click to select the active folder", + "click.to.select.workspace.tooltip": "Hier klicken, um den aktiven Ordner auszuwählen", "unconfigured": "Nicht konfiguriert", "click.to.select.variant.tooltip": "Klicken Sie, um die aktuelle Buildvariante auszuwählen.", "loading.status": "Wird geladen...", @@ -14,12 +14,12 @@ "set.active.target.tooltip": "Aktives Ziel auf Build festlegen", "select.target.tooltip": "Zu startendes Ziel auswählen", "launch.debugger.tooltip": "Debugger für das ausgewählte Ziel starten", - "launch.tooltip": "Launch the selected target in the terminal window", + "launch.tooltip": "Ausgewähltes Ziel im Terminalfenster starten", "run.ctest.tests.tooltip": "CTest-Tests ausführen", "run.ctest": "CTest ausführen", "test.passing": "{0}/{1} Test erfolgreich", "tests.passing": "{0}/{1} Tests erfolgreich", - "build.tooltip": "Build the selected target", + "build.tooltip": "Ausgewähltes Ziel erstellen", "build": "Build", "stop": "Beenden" } \ No newline at end of file diff --git a/i18n/deu/src/tree.i18n.json b/i18n/deu/src/tree.i18n.json index 53564ace7..e127ff1c8 100644 --- a/i18n/deu/src/tree.i18n.json +++ b/i18n/deu/src/tree.i18n.json @@ -14,8 +14,8 @@ "item.render.issue": "Problem beim Rendern dieses Elements. Dies ist ein Fehler.", "empty.project": "Leeres Projekt", "update.project.with.mismatch": "Projekt mit nicht übereinstimmender name-Eigenschaft aktualisieren", - "workspace.active": "Active Workspace", - "workspace": "Workspace", - "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", + "workspace.active": "Aktiver Arbeitsbereich", + "workspace": "Arbeitsbereich", + "error.update.code.model.on.nonexist.folder": "Das Codemodell wird für einen Ordner aktualisiert, der noch nicht geladen wurde.", "error.rendering.children.nodes": "Fehler beim Rendern untergeordneter Knoten." } \ No newline at end of file diff --git a/i18n/esn/package.i18n.json b/i18n/esn/package.i18n.json index 97d6a2040..7799dbb64 100644 --- a/i18n/esn/package.i18n.json +++ b/i18n/esn/package.i18n.json @@ -104,19 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Directorios en los que se puede instalar Emscripten.", "cmake-tools.configuration.cmake.copyCompileCommands.description": "Copia compile_commands.json en esta ubicación después de una configuración correcta.", "cmake-tools.configuration.cmake.configureOnOpen.description": "Configura automáticamente los directorios del proyecto de CMake al abrirlos.", - "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", - "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", + "cmake-tools.configuration.cmake.configureOnEdit.description": "Configure automáticamente los directorios de proyectos de CMake cuando se guarde el contenido de cmake.sourceDirectory o CMakeLists.txt.", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Omite el proceso de configuración si la memoria caché está presente.", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "El protocolo que se usa para la comunicación entre la extensión y CMake.", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "No use las variables de entorno del kit al ejecutar comandos de CMake.", "cmake-tools.configuration.cmake.buildTask.description": "Use tasks.json para compilar en lugar del proceso interno.", "cmake-tools.configuration.cmake.outputLogEncoding.description": "Codificación de la salida de los comandos externos (por ejemplo, cmake -- build).", "cmake-tools.configuration.cmake.enableTraceLogging.description": "Habilita el registro de seguimiento para el archivo y la consola (con mucho ruido).", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "Selecciona la carpeta activa de forma automática.", - "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", - "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", - "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configura la forma en la que la extensión muestra los botones en la barra de estado.", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "Establece la configuración de los botones individuales de la barra de estado. Esta configuración sobrescribe el valor \"cmake.statusbar.visibility\", más general.", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configura la forma en la que la extensión muestra este botón en la barra de estado.", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Habilita un cambio de color para este botón en función de los resultados de pruebas", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configura la longitud máxima del texto visible en el modo \"compacto\".", "cmake-tools.configuration.views.cmake.folders.description": "Carpetas", "cmake-tools.configuration.views.cmake.outline.description": "Esquema del proyecto" } \ No newline at end of file diff --git a/i18n/esn/schemas/kits-schema.json.i18n.json b/i18n/esn/schemas/kits-schema.json.i18n.json index c6c4f2870..43aa21800 100644 --- a/i18n/esn/schemas/kits-schema.json.i18n.json +++ b/i18n/esn/schemas/kits-schema.json.i18n.json @@ -12,7 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Ruta de acceso a un archivo de cadena de herramientas", "schemas/kits-schema.json.items.properties.visualStudio": "Nombre del producto de Visual Studio", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Arquitectura de destino", - "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "Ruta de acceso absoluta a un script que modifica el entorno del kit", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Valor de la variable de entorno", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Valor para la configuración de CMake", "schemas/kits-schema.json.items.properties.preferredGenerator": "Establecer un generador de CMake preferido para el kit", diff --git a/i18n/esn/src/cmake-tools.i18n.json b/i18n/esn/src/cmake-tools.i18n.json index a1934e44b..525a6c34c 100644 --- a/i18n/esn/src/cmake-tools.i18n.json +++ b/i18n/esn/src/cmake-tools.i18n.json @@ -12,12 +12,12 @@ "configuration.already.in.progress": "La configuración ya está en curso.", "task.already.running": "Ya se está ejecutando una tarea de CMake. Deténgala antes de intentar ejecutar otra.", "no.source.directory.found": "No tiene ningún directorio de origen abierto.", - "quickstart.cmake.project": "Create", - "edit.setting": "Locate", - "ignore.activation": "Don't show again", - "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", - "reload.window": "Reload Window", - "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", + "quickstart.cmake.project": "Crear", + "edit.setting": "Buscar", + "ignore.activation": "No mostrar de nuevo", + "missing.cmakelists": "No se encontró CMakeLists.txt en la raíz de la carpeta \"{0}\". ¿Qué quiere hacer a continuación?", + "reload.window": "Recargar ventana", + "setting.sourceDirectory.failed.needs.reload.window": "Hubo un problema al actualizar la configuración de cmake.sourceDirectory. Ejecute el comando \"Recargar ventana\" para que el cambio surta efecto.", "starting.cmake.driver": "Iniciando el controlador de CMake", "bad.cmake.executable": "El ejecutable de CMake \"{0}\" es incorrecto.", "switch.to.serverapi": "No se admite el modo de comunicación file-api de CMake en las versiones anteriores a {0}. Cambiando al modo de comunicación del servidor de CMake.", @@ -29,9 +29,9 @@ "second.phase.init": "Empezando la inicialización de segunda fase de CMakeTools", "active.build.variant.changed": "Se ha cambiado la variante de la compilación activa.", "changing.build.variant": "Cambiando la variante de compilación", - "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", - "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", - "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", + "cmakelists.save.trigger.reconfigure": "Se ha detectado que CMakeLists.txt se ha guardado; intentando reconfigurar automáticamente...", + "cmakelists.save.could.not.reconfigure": "Se detectaron cambios en CMakeLists.txt, pero no se pudo volver a configurar el proyecto porque ya hay otra operación en curso.", + "needs.reconfigure": "Debe volver a configurarse el proyecto para que los cambios guardados en CMakeLists.txt surtan efecto.", "injecting.new.kit": "Insertando el nuevo kit en el controlador de CMake", "reloading.status": "Recargando...", "unable.to.set.kit": "No se puede establecer el kit \"{0}\".", @@ -64,7 +64,7 @@ "cannot.configure.no.kit": "No se puede configurar: no hay ningún kit activo para estas herramientas de CMake.", "waiting.on.variant": "Esperando a la selección de la variante", "no.variant.abort": "No se ha seleccionado ninguna variante. Anular la configuración", - "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", + "warn.skip.configure.when.cache.present": "La extensión determinó que se necesita una configuración en este momento, \\\n pero lo omitimos porque la configuración cmake.skipConfigureWhenCachePresent está ACTIVADA. \\\n Asegúrese de que la caché de CMake esté sincronizada con los últimos cambios de configuración.", "cmake.drive.died.during.tasksbuildcommend": "El controlador de CMake finalizó durante la aplicación de tasksBuildCommand.", "run.build": "Compilando la carpeta: {0}", "unable.to.configure": "Error de compilación: no se puede configurar el proyecto", diff --git a/i18n/esn/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/esn/src/drivers/cmakefileapi/api_helpers.i18n.json index 47562f0fc..5e2d781d2 100644 --- a/i18n/esn/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/esn/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "failed.writing.to.file": "Failed writing to file {0}", + "failed.writing.to.file": "No se pudo escribir en el archivo {0}", "cache.object.version": "La versión del objeto de caché ({0}.{1}) de cmake-file-api no es la esperada. Se esperaba ({2}.{3}). Puede que la configuración de IntelliSense no sea correcta.", "cache.entry.unknowntype": "Tipo de entrada de caché desconocido: {0}.", "code.model.version": "La versión del modelo de código ({0}.{1}) de cmake-file-api no es la esperada. Se esperaba ({2}.{3}). Puede que la configuración de IntelliSense no sea correcta." diff --git a/i18n/esn/src/drivers/cmfileapi-driver.i18n.json b/i18n/esn/src/drivers/cmfileapi-driver.i18n.json index 2ecf56655..fec374994 100644 --- a/i18n/esn/src/drivers/cmfileapi-driver.i18n.json +++ b/i18n/esn/src/drivers/cmfileapi-driver.i18n.json @@ -4,6 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "removing": "Removing {0}", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "removing": "Quitando {0}", + "cmakelists.save.trigger.reconfigure": "Se ha detectado una actualización de la configuración de \"cmake.sourceDirectory\"; intentando reconfigurar automáticamente..." } \ No newline at end of file diff --git a/i18n/esn/src/drivers/cms-driver.i18n.json b/i18n/esn/src/drivers/cms-driver.i18n.json index 75b439dea..86bf03b14 100644 --- a/i18n/esn/src/drivers/cms-driver.i18n.json +++ b/i18n/esn/src/drivers/cms-driver.i18n.json @@ -11,5 +11,5 @@ "build.all.target": "Un destino especial para compilar todos los destinos disponibles", "install.all.target": "Un destino especial para instalar todos los destinos disponibles", "utility.target": "Destino de la utilidad", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "cmakelists.save.trigger.reconfigure": "Se ha detectado una actualización de la configuración de \"cmake.sourceDirectory\"; intentando reconfigurar automáticamente..." } \ No newline at end of file diff --git a/i18n/esn/src/extension.i18n.json b/i18n/esn/src/extension.i18n.json index e88640175..27d47c050 100644 --- a/i18n/esn/src/extension.i18n.json +++ b/i18n/esn/src/extension.i18n.json @@ -10,14 +10,14 @@ "yes.button": "Sí", "not.now.button": "Ahora no", "always.configure.on.open": "¿Configurar siempre los proyectos al abrirlos?", - "never.configure.on.open": "Configure projects on opening?", + "never.configure.on.open": "¿Quiere configurar los proyectos al abrirlos?", "no.button": "No", - "never.button": "Never", - "never.for.this.workspace.button": "Not this workspace", + "never.button": "Nunca", + "never.for.this.workspace.button": "No en esta área de trabajo", "persist.config.on.open.setting": "Conservar los valores de configuración al abrir", "configuring.workspace.on.open": "Configuración del área de trabajo al abrir {0}", - "configure.now.button": "Configure Now", - "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", + "configure.now.button": "Configurar ahora", + "configure.recommended": "Se recomienda volver a configurar después de actualizar a una nueva definición de los kits.", "update.code.model.for.cpptools": "Actualizar el modelo de código para cpptools", "filed.to.open.cache.file.on.code.model.update": "No se pudo abrir el archivo caché de CMake en la actualización del modelo de código.", "opening.text.editor.for": "Abriendo el editor de texto para {0}", diff --git a/i18n/esn/src/kit.i18n.json b/i18n/esn/src/kit.i18n.json index ad59ef66f..60dc1b790 100644 --- a/i18n/esn/src/kit.i18n.json +++ b/i18n/esn/src/kit.i18n.json @@ -34,7 +34,7 @@ "scanning.for.kits": "Buscando kits", "scanning.for.cmake.kits": "Examinando los kits de CMake...", "found.kit": "Kit encontrado: {0}", - "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", + "silent.kits.rescan": "Se detectó un cambio de la versión de definición de los kits de {0} a {1}. Los kits se están examinando en modo silencioso.", "kit.for.toolchain.file": "Kit para el archivo de la cadena de herramientas {0}", "using.compilers.for": "Usando los compiladores para {0} (arquitectura {1})", "using.compilers": "Usando los compiladores: {0}", diff --git a/i18n/esn/src/kitsController.i18n.json b/i18n/esn/src/kitsController.i18n.json index 06c9525d7..d47e83d76 100644 --- a/i18n/esn/src/kitsController.i18n.json +++ b/i18n/esn/src/kitsController.i18n.json @@ -11,7 +11,7 @@ "unsetting.kit": "Anulando el kit", "loading.kit": "Cargando el kit {0}", "invalid.only.kit": "Solo un kit no válido. Se esperaba encontrar \"{0}\".", - "already.checking.kits": "Already checking kits. Please try again later.", + "already.checking.kits": "Ya se están comprobando los kits. Vuelva a intentarlo más tarde.", "start.selection.of.kits": "Iniciar la selección de kits. Kits encontrados: {0}.", "opening.kit.selection": "Abriendo la selección de kit de QuickPick", "scan.for.kits.button": "Buscar para kits", diff --git a/i18n/esn/src/status.i18n.json b/i18n/esn/src/status.i18n.json index 3a7d0ba49..a7fe560be 100644 --- a/i18n/esn/src/status.i18n.json +++ b/i18n/esn/src/status.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "click.to.select.workspace.tooltip": "Click to select the active folder", + "click.to.select.workspace.tooltip": "Hacer clic para seleccionar la carpeta activa", "unconfigured": "Sin configurar", "click.to.select.variant.tooltip": "Hacer clic para seleccionar la variante de compilación actual", "loading.status": "Cargando...", @@ -14,12 +14,12 @@ "set.active.target.tooltip": "Establecer el destino activo para compilar", "select.target.tooltip": "Seleccionar el destino para iniciar", "launch.debugger.tooltip": "Iniciar el depurador para el destino seleccionado", - "launch.tooltip": "Launch the selected target in the terminal window", + "launch.tooltip": "Iniciar el destino seleccionado en la ventana de terminal", "run.ctest.tests.tooltip": "Ejecutar pruebas de CTest", "run.ctest": "Ejecutar CTest", "test.passing": "Pruebas aprobadas: {0}/{1}", "tests.passing": "Pruebas aprobadas: {0}/{1}", - "build.tooltip": "Build the selected target", + "build.tooltip": "Compilar el destino seleccionado", "build": "Versión de compilación", "stop": "Detener" } \ No newline at end of file diff --git a/i18n/esn/src/tree.i18n.json b/i18n/esn/src/tree.i18n.json index 84a357a5a..1496c00f0 100644 --- a/i18n/esn/src/tree.i18n.json +++ b/i18n/esn/src/tree.i18n.json @@ -14,8 +14,8 @@ "item.render.issue": "Hubo un problema al representar este elemento. Esto es un error.", "empty.project": "Proyecto vacío", "update.project.with.mismatch": "Actualizar el proyecto con la propiedad del nombre no coincidente", - "workspace.active": "Active Workspace", - "workspace": "Workspace", - "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", + "workspace.active": "Área de trabajo activa", + "workspace": "Área de trabajo", + "error.update.code.model.on.nonexist.folder": "Actualizando el modelo de código en una carpeta que no se ha cargado aún.", "error.rendering.children.nodes": "Error al representar los nodos secundarios." } \ No newline at end of file diff --git a/i18n/ita/package.i18n.json b/i18n/ita/package.i18n.json index 219c5aa1b..06780666b 100644 --- a/i18n/ita/package.i18n.json +++ b/i18n/ita/package.i18n.json @@ -104,19 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Directory in cui è possibile installare Emscripten.", "cmake-tools.configuration.cmake.copyCompileCommands.description": "Copia compile_commands.json in questa posizione dopo una configurazione riuscita.", "cmake-tools.configuration.cmake.configureOnOpen.description": "Configura automaticamente le directory di progetto di CMake quando vengono aperte.", - "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", - "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", + "cmake-tools.configuration.cmake.configureOnEdit.description": "Configura automaticamente le directory del progetto CMake quando si salva cmake.sourceDirectory o il contenuto di CMakeLists.txt.", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Ignora il processo di configurazione se la cache è presente.", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "Protocollo usato per le comunicazioni tra l'estensione e CMake", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "Non usa le variabili di ambiente del kit durante l'esecuzione dei comandi di CMake.", "cmake-tools.configuration.cmake.buildTask.description": "Compila con tasks.json anziché il processo interno.", "cmake-tools.configuration.cmake.outputLogEncoding.description": "Codifica dell'output di comandi esterni (ad esempio cmake -- build).", "cmake-tools.configuration.cmake.enableTraceLogging.description": "Abilita la registrazione traccia in file e console (molto disturbata).", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "Seleziona automaticamente la cartella attiva", - "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", - "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", - "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configura il modo in cui l'estensione visualizza i pulsanti nella barra di stato", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configura le impostazioni per i singoli pulsanti della barra di stato. Queste impostazioni sovrascrivono l'impostazione più generale 'cmake.statusbar.visibility'.", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configura il modo in cui l'estensione visualizza questo pulsante nella barra di stato", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Abilita una modifica del colore per questo pulsante a seconda dei risultati del test", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configura la lunghezza massima del testo visibile in modalità 'compact'.", "cmake-tools.configuration.views.cmake.folders.description": "Cartelle", "cmake-tools.configuration.views.cmake.outline.description": "Struttura del progetto" } \ No newline at end of file diff --git a/i18n/ita/schemas/kits-schema.json.i18n.json b/i18n/ita/schemas/kits-schema.json.i18n.json index da4182959..16a09eaf9 100644 --- a/i18n/ita/schemas/kits-schema.json.i18n.json +++ b/i18n/ita/schemas/kits-schema.json.i18n.json @@ -12,7 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Percorso di un file della toolchain", "schemas/kits-schema.json.items.properties.visualStudio": "Nome del prodotto Visual Studio", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Architettura da usare come destinazione", - "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "Percorso assoluto di uno script che modifica l'ambiente per il kit", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Valore della variabile di ambiente", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Valore dell'impostazione di CMake", "schemas/kits-schema.json.items.properties.preferredGenerator": "Imposta un generatore CMake preferito per questo kit", diff --git a/i18n/ita/src/cmake-tools.i18n.json b/i18n/ita/src/cmake-tools.i18n.json index c05c7ec60..8ba5b8d5f 100644 --- a/i18n/ita/src/cmake-tools.i18n.json +++ b/i18n/ita/src/cmake-tools.i18n.json @@ -12,12 +12,12 @@ "configuration.already.in.progress": "La configurazione è già in corso.", "task.already.running": "Un'attività CMake è già in esecuzione. Arrestarla prima di provare a eseguire una nuova attività di CMake.", "no.source.directory.found": "Non è presente alcuna directory di origine aperta", - "quickstart.cmake.project": "Create", - "edit.setting": "Locate", - "ignore.activation": "Don't show again", - "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", - "reload.window": "Reload Window", - "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", + "quickstart.cmake.project": "Crea", + "edit.setting": "Individua", + "ignore.activation": "Non visualizzare più questo messaggio", + "missing.cmakelists": "CMakeLists.txt non è stato trovato nella radice della cartella '{0}'. Come si vuole procedere?", + "reload.window": "Ricarica finestra", + "setting.sourceDirectory.failed.needs.reload.window": "Si è verificato un errore durante l'aggiornamento dell'impostazione cmake.sourceDirectory. Eseguire il comando \"Ricarica finestra\" per rendere effettiva la modifica.", "starting.cmake.driver": "Avvio del driver di CMake", "bad.cmake.executable": "L'eseguibile di CMake \"{0}\" non è valido.", "switch.to.serverapi": "La modalità di comunicazione file-api di CMake non è supportata in versioni precedenti alla {0}. Verrà effettuato il passaggio alla modalità di comunicazione server di CMake.", @@ -29,9 +29,9 @@ "second.phase.init": "Avvio dell'inizializzazione della seconda fase di CMakeTools", "active.build.variant.changed": "La variante di compilazione attiva è stata modificata", "changing.build.variant": "Modifica della variante di compilazione", - "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", - "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", - "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", + "cmakelists.save.trigger.reconfigure": "È stato rilevato il salvataggio di CMakeLists.txt. Verrà effettuato un tentativo di riconfigurazione automatica...", + "cmakelists.save.could.not.reconfigure": "Sono state rilevate modifiche in CMakeLists.txt, ma non è stato possibile riconfigurare il progetto perché è già in corso un'altra operazione.", + "needs.reconfigure": "È necessario riconfigurare il progetto per rendere effettive le modifiche salvate in CMakeLists.txt.", "injecting.new.kit": "Inserimento del nuovo kit nel driver di CMake", "reloading.status": "Ricaricamento...", "unable.to.set.kit": "Non è possibile impostare il kit \"{0}\".", @@ -64,7 +64,7 @@ "cannot.configure.no.kit": "Non è possibile eseguire la configurazione: non ci sono kit attivi per questa istanza di CMake Tools", "waiting.on.variant": "In attesa della selezione della variante", "no.variant.abort": "Non è stata selezionata alcuna variante. Interrompere la configurazione", - "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", + "warn.skip.configure.when.cache.present": "L'estensione ha determinato che in questo momento è necessaria una configurazione, \\\n ma verrà ignorata perché cmake.skipConfigureWhenCachePresent è impostato su ON. \\\n Assicurarsi che la cache CMake sia sincronizzata con le ultime modifiche apportate alla configurazione.", "cmake.drive.died.during.tasksbuildcommend": "Il driver di CMake è stato arrestato durante tasksBuildCommand", "run.build": "Compilazione della cartella: {0}", "unable.to.configure": "Compilazione non riuscita: non è possibile configurare il progetto", diff --git a/i18n/ita/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/ita/src/drivers/cmakefileapi/api_helpers.i18n.json index b21bd4876..2e60acd88 100644 --- a/i18n/ita/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/ita/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "failed.writing.to.file": "Failed writing to file {0}", + "failed.writing.to.file": "Non è stato possibile scrivere nel file {0}", "cache.object.version": "La versione dell'oggetto cache ({0}.{1}) di cmake-file-api è imprevista. È prevista ({2}.{3}). La configurazione IntelliSense potrebbe essere errata.", "cache.entry.unknowntype": "Tipo di voce della cache sconosciuto: {0}.", "code.model.version": "La versione del modello di codice ({0}.{1}) di cmake-file-api è imprevista. È prevista ({2}.{3}). La configurazione IntelliSense potrebbe essere errata." diff --git a/i18n/ita/src/drivers/cmfileapi-driver.i18n.json b/i18n/ita/src/drivers/cmfileapi-driver.i18n.json index 2ecf56655..0a9803700 100644 --- a/i18n/ita/src/drivers/cmfileapi-driver.i18n.json +++ b/i18n/ita/src/drivers/cmfileapi-driver.i18n.json @@ -4,6 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "removing": "Removing {0}", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "removing": "Rimozione di {0}", + "cmakelists.save.trigger.reconfigure": "È stato rilevato un aggiornamento dell'impostazione 'cmake.sourceDirectory'. Verrà effettuato un tentativo di riconfigurazione automatica..." } \ No newline at end of file diff --git a/i18n/ita/src/drivers/cms-driver.i18n.json b/i18n/ita/src/drivers/cms-driver.i18n.json index db9a6f783..dccc51ae1 100644 --- a/i18n/ita/src/drivers/cms-driver.i18n.json +++ b/i18n/ita/src/drivers/cms-driver.i18n.json @@ -11,5 +11,5 @@ "build.all.target": "Destinazione speciale per la compilazione di tutte le destinazioni disponibili", "install.all.target": "Destinazione speciale per l'installazione di tutte le destinazioni disponibili", "utility.target": "Destinazione dell'utilità", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "cmakelists.save.trigger.reconfigure": "È stato rilevato un aggiornamento dell'impostazione 'cmake.sourceDirectory'. Verrà effettuato un tentativo di riconfigurazione automatica..." } \ No newline at end of file diff --git a/i18n/ita/src/extension.i18n.json b/i18n/ita/src/extension.i18n.json index 0709f08c2..8545e7031 100644 --- a/i18n/ita/src/extension.i18n.json +++ b/i18n/ita/src/extension.i18n.json @@ -10,14 +10,14 @@ "yes.button": "Sì", "not.now.button": "Non ora", "always.configure.on.open": "Configurare sempre i progetti all'apertura?", - "never.configure.on.open": "Configure projects on opening?", + "never.configure.on.open": "Configurare i progetti all'apertura?", "no.button": "No", - "never.button": "Never", - "never.for.this.workspace.button": "Not this workspace", + "never.button": "Mai", + "never.for.this.workspace.button": "Non questa area di lavoro", "persist.config.on.open.setting": "Rendi permanente l'impostazione di configurazione all'apertura", "configuring.workspace.on.open": "Configurazione dell'area di lavoro all'apertura di {0}", - "configure.now.button": "Configure Now", - "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", + "configure.now.button": "Configura ora", + "configure.recommended": "È consigliabile riconfigurare dopo l'aggiornamento a una nuova definizione dei kit.", "update.code.model.for.cpptools": "Aggiorna il modello di codice per cpptools", "filed.to.open.cache.file.on.code.model.update": "Non è stato possibile aprire il file di cache di CMake durante l'aggiornamento del modello di codice", "opening.text.editor.for": "Apertura dell'editor di testo per {0}", diff --git a/i18n/ita/src/kit.i18n.json b/i18n/ita/src/kit.i18n.json index 9bdce78f5..7560928a0 100644 --- a/i18n/ita/src/kit.i18n.json +++ b/i18n/ita/src/kit.i18n.json @@ -34,7 +34,7 @@ "scanning.for.kits": "Ricerca dei kit", "scanning.for.cmake.kits": "Ricerca dei kit CMake...", "found.kit": "Kit trovato: {0}", - "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", + "silent.kits.rescan": "È stata rilevata la modifica della versione della definizione dei kit da {0} a {1}. Verrà eseguita l'analisi dei kit senza avvisi.", "kit.for.toolchain.file": "Kit per il file di toolchain {0}", "using.compilers.for": "Uso dei compilatori per {0} (architettura {1})", "using.compilers": "Uso dei compilatori: {0}", diff --git a/i18n/ita/src/kitsController.i18n.json b/i18n/ita/src/kitsController.i18n.json index 1196470bf..15c916019 100644 --- a/i18n/ita/src/kitsController.i18n.json +++ b/i18n/ita/src/kitsController.i18n.json @@ -11,7 +11,7 @@ "unsetting.kit": "Annullamento dell'impostazione del kit", "loading.kit": "Caricamento del kit {0}", "invalid.only.kit": "Solo kit non valido. È previsto `{0}`", - "already.checking.kits": "Already checking kits. Please try again later.", + "already.checking.kits": "La verifica dei kit è già in corso. Riprovare più tardi.", "start.selection.of.kits": "Avvia la selezione dei kit. Sono stati trovati {0} kit.", "opening.kit.selection": "Apertura della selezione rapida per la selezione del kit", "scan.for.kits.button": "Cerca kit", diff --git a/i18n/ita/src/status.i18n.json b/i18n/ita/src/status.i18n.json index c1dacb76d..0b72e9c9b 100644 --- a/i18n/ita/src/status.i18n.json +++ b/i18n/ita/src/status.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "click.to.select.workspace.tooltip": "Click to select the active folder", + "click.to.select.workspace.tooltip": "Fare clic per selezionare la cartella attiva", "unconfigured": "Non configurato", "click.to.select.variant.tooltip": "Fare clic per selezionare la variante di compilazione corrente", "loading.status": "Caricamento in corso...", @@ -14,12 +14,12 @@ "set.active.target.tooltip": "Imposta la destinazione attiva per la compilazione", "select.target.tooltip": "Seleziona la destinazione per l'avvio", "launch.debugger.tooltip": "Avvia il debugger per la destinazione selezionata", - "launch.tooltip": "Launch the selected target in the terminal window", + "launch.tooltip": "Avvia la destinazione selezionata nella finestra del terminale", "run.ctest.tests.tooltip": "Esegui test di CTest", "run.ctest": "Esegui CTest", "test.passing": "{0}/{1} test superato", "tests.passing": "{0}/{1} test superati", - "build.tooltip": "Build the selected target", + "build.tooltip": "Compila la destinazione selezionata", "build": "Compila", "stop": "Arresta" } \ No newline at end of file diff --git a/i18n/ita/src/tree.i18n.json b/i18n/ita/src/tree.i18n.json index bd91449ac..6a22583a4 100644 --- a/i18n/ita/src/tree.i18n.json +++ b/i18n/ita/src/tree.i18n.json @@ -14,8 +14,8 @@ "item.render.issue": "Si è verificato un errore durante il rendering di questo elemento. Questo è un bug", "empty.project": "Progetto vuoto", "update.project.with.mismatch": "Aggiorna il progetto con la proprietà name non corrispondente", - "workspace.active": "Active Workspace", - "workspace": "Workspace", - "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", + "workspace.active": "Area di lavoro attiva", + "workspace": "Area di lavoro", + "error.update.code.model.on.nonexist.folder": "Aggiornamento del modello di codice nella cartella che non è stata ancora caricata.", "error.rendering.children.nodes": "Si è verificato un errore durante il rendering dei nodi figlio" } \ No newline at end of file diff --git a/i18n/jpn/package.i18n.json b/i18n/jpn/package.i18n.json index 1a687fa92..6f17c740a 100644 --- a/i18n/jpn/package.i18n.json +++ b/i18n/jpn/package.i18n.json @@ -104,19 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Emscripten がインストールされる可能性のあるディレクトリです。", "cmake-tools.configuration.cmake.copyCompileCommands.description": "構成が正常に完了したら、compile_commands.json をこの場所にコピーします。", "cmake-tools.configuration.cmake.configureOnOpen.description": "CMake プロジェクト ディレクトリを開いたときに自動的に構成します。", - "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", - "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", + "cmake-tools.configuration.cmake.configureOnEdit.description": "cmake.sourceDirectory または CMakeLists.txt のコンテンツの保存時に、CMake プロジェクトのディレクトリを自動的に構成します。", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "キャッシュが存在する場合は、構成プロセスをスキップします。", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "拡張機能と CMake の間の通信に使用されるプロトコル", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "CMake コマンドの実行時には、キットの環境変数を使用しないでください。", "cmake-tools.configuration.cmake.buildTask.description": "内部プロセスではなく tasks.json を使用してビルドします。", "cmake-tools.configuration.cmake.outputLogEncoding.description": "外部コマンドからの出力のエンコードです (例: cmake -- build)。", "cmake-tools.configuration.cmake.enableTraceLogging.description": "ファイルおよびコンソールへのトレース ログを有効にします (非常に煩雑になります)。", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "アクティブなフォルダーを自動的に選択します", - "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", - "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", - "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "拡張機能によってボタンがステータス バーにどのように表示されるかを構成します", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "個々のステータス バー ボタンの設定を構成します。これらの設定は、より一般的な 'cmake.statusbar.visibility' の設定を上書きします。", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "拡張機能によってこのボタンがステータス バーにどのように表示されるかを構成します", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "テスト結果に応じてこのボタンの色を変更することを有効にします", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "'compact' モードで表示されるテキストの最大長を構成します。", "cmake-tools.configuration.views.cmake.folders.description": "フォルダー", "cmake-tools.configuration.views.cmake.outline.description": "プロジェクトの概要" } \ No newline at end of file diff --git a/i18n/jpn/schemas/kits-schema.json.i18n.json b/i18n/jpn/schemas/kits-schema.json.i18n.json index cc365b680..cb91c1119 100644 --- a/i18n/jpn/schemas/kits-schema.json.i18n.json +++ b/i18n/jpn/schemas/kits-schema.json.i18n.json @@ -12,7 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "ツールチェーン ファイルへのパス", "schemas/kits-schema.json.items.properties.visualStudio": "Visual Studio 製品の名前", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "ターゲットにするアーキテクチャ", - "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "キットの環境を変更するスクリプトへの絶対パス", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "環境変数の値", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "CMake 設定の値", "schemas/kits-schema.json.items.properties.preferredGenerator": "このキットの優先 CMake ジェネレーターを設定します", diff --git a/i18n/jpn/src/cmake-tools.i18n.json b/i18n/jpn/src/cmake-tools.i18n.json index 1566af2bc..a809fc574 100644 --- a/i18n/jpn/src/cmake-tools.i18n.json +++ b/i18n/jpn/src/cmake-tools.i18n.json @@ -12,12 +12,12 @@ "configuration.already.in.progress": "構成は既に進行中です。", "task.already.running": "CMake タスクは既に実行されています。これを停止してから、新しい CMake タスクを実行してください。", "no.source.directory.found": "ソース ディレクトリが開かれていません", - "quickstart.cmake.project": "Create", - "edit.setting": "Locate", - "ignore.activation": "Don't show again", - "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", - "reload.window": "Reload Window", - "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", + "quickstart.cmake.project": "作成", + "edit.setting": "検索", + "ignore.activation": "今後表示しない", + "missing.cmakelists": "フォルダー '{0}' のルートに CMakeLists.txt が見つかりませんでした。どのように続行しますか?", + "reload.window": "ウィンドウの再読み込み", + "setting.sourceDirectory.failed.needs.reload.window": "cmake.sourceDirectory 設定の更新中に問題が発生しました。変更を有効にするには、\"ウィンドウの再読み込み\" コマンドを実行してください。", "starting.cmake.driver": "CMake ドライバーを開始しています", "bad.cmake.executable": "CMake 実行可能ファイル \"{0}\" が正しくありません。", "switch.to.serverapi": "CMake file-api 通信モードは {0} より前のバージョンではサポートされていません。CMake サーバー通信モードに切り替えています。", @@ -29,9 +29,9 @@ "second.phase.init": "CMakeTools の第 2 フェーズの初期化を開始しています", "active.build.variant.changed": "アクティブなビルドのバリアントが変更されました", "changing.build.variant": "ビルドのバリアントを変更しています", - "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", - "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", - "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", + "cmakelists.save.trigger.reconfigure": "CMakeLists.txt の保存が検出されました。自動再構成を試行しています...", + "cmakelists.save.could.not.reconfigure": "CMakeLists.txt で変更が検出されましたが、別の操作が既に進行中のため、プロジェクトを再構成できませんでした。", + "needs.reconfigure": "CMakeLists.txt に保存された変更が有効になるように、プロジェクトを再構成する必要があります。", "injecting.new.kit": "CMake ドライバーに新しいキットを挿入しています", "reloading.status": "再度読み込んでいます...", "unable.to.set.kit": "キット \"{0}\" を設定できません。", @@ -64,7 +64,7 @@ "cannot.configure.no.kit": "構成できません: この CMake Tools ではどのキットもアクティブではありません", "waiting.on.variant": "バリアントの選択を待機しています", "no.variant.abort": "バリアントが選択されていません。構成を中止します", - "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", + "warn.skip.configure.when.cache.present": "拡張機能によって、現時点で構成が必要であると判断されましたが、 \\\n 設定 cmake.skipConfigureWhenCachePresent がオンになっているため、スキップしています。\\\n CMake キャッシュが最新の構成変更と同期していることをご確認ください。", "cmake.drive.died.during.tasksbuildcommend": "tasksBuildCommand の実行中に CMake ドライバーが停止しました", "run.build": "フォルダーのビルド中: {0}", "unable.to.configure": "ビルドに失敗しました。プロジェクトを構成できません", diff --git a/i18n/jpn/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/jpn/src/drivers/cmakefileapi/api_helpers.i18n.json index a3c73411c..5e877fe14 100644 --- a/i18n/jpn/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/jpn/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "failed.writing.to.file": "Failed writing to file {0}", + "failed.writing.to.file": "ファイル {0} への書き込みが失敗しました", "cache.object.version": "cmake-file-api のキャッシュ オブジェクト バージョン ({0}.{1}) が予期されていません。({2}.{3}) が必要です。IntelliSense の構成が正しくない可能性があります。", "cache.entry.unknowntype": "不明なキャッシュ エントリの種類: {0}。", "code.model.version": "cmake-file-api のコード モデル バージョン ({1}.{0}) は予期されていません。({2}.{3}) が必要です。IntelliSense の構成が正しくない可能性があります。" diff --git a/i18n/jpn/src/drivers/cmfileapi-driver.i18n.json b/i18n/jpn/src/drivers/cmfileapi-driver.i18n.json index 2ecf56655..5f8c4dc8a 100644 --- a/i18n/jpn/src/drivers/cmfileapi-driver.i18n.json +++ b/i18n/jpn/src/drivers/cmfileapi-driver.i18n.json @@ -4,6 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "removing": "Removing {0}", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "removing": "{0} の削除", + "cmakelists.save.trigger.reconfigure": "'cmake.sourceDirectory' 設定の更新が検出されました。自動再構成を試行しています..." } \ No newline at end of file diff --git a/i18n/jpn/src/drivers/cms-driver.i18n.json b/i18n/jpn/src/drivers/cms-driver.i18n.json index 511ed27bb..3bd78404e 100644 --- a/i18n/jpn/src/drivers/cms-driver.i18n.json +++ b/i18n/jpn/src/drivers/cms-driver.i18n.json @@ -11,5 +11,5 @@ "build.all.target": "すべての使用可能なターゲットをビルドする特別なターゲット", "install.all.target": "すべての使用可能なターゲットをインストールする特別なターゲット", "utility.target": "ユーティリティのターゲット", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "cmakelists.save.trigger.reconfigure": "'cmake.sourceDirectory' 設定の更新が検出されました。自動再構成を試行しています..." } \ No newline at end of file diff --git a/i18n/jpn/src/extension.i18n.json b/i18n/jpn/src/extension.i18n.json index cd496e6bc..b818d4549 100644 --- a/i18n/jpn/src/extension.i18n.json +++ b/i18n/jpn/src/extension.i18n.json @@ -10,14 +10,14 @@ "yes.button": "はい", "not.now.button": "今はしない", "always.configure.on.open": "プロジェクトを開いたときに常に構成しますか?", - "never.configure.on.open": "Configure projects on opening?", + "never.configure.on.open": "プロジェクトを開くときに構成しますか?", "no.button": "いいえ", - "never.button": "Never", - "never.for.this.workspace.button": "Not this workspace", + "never.button": "なし", + "never.for.this.workspace.button": "このワークスペースではありません", "persist.config.on.open.setting": "開いたときに構成する設定を保持する", "configuring.workspace.on.open": "開いている {0} 上でワークスペースを構成しています", - "configure.now.button": "Configure Now", - "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", + "configure.now.button": "今すぐ構成", + "configure.recommended": "新しいキット定義にアップグレードした後に、再構成することをお勧めします。", "update.code.model.for.cpptools": "cpptools のコード モデルの更新", "filed.to.open.cache.file.on.code.model.update": "コード モデルの更新時に CMake キャッシュ ファイルを開くことができませんでした", "opening.text.editor.for": "{0} 用にテキスト エディターを開いています", diff --git a/i18n/jpn/src/kit.i18n.json b/i18n/jpn/src/kit.i18n.json index c148c7c03..ccbb026f0 100644 --- a/i18n/jpn/src/kit.i18n.json +++ b/i18n/jpn/src/kit.i18n.json @@ -34,7 +34,7 @@ "scanning.for.kits": "キットをスキャンしています", "scanning.for.cmake.kits": "CMake キットをスキャンしています...", "found.kit": "見つかったキット: {0}", - "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", + "silent.kits.rescan": "検出キット定義のバージョンが {0} から {1} に変更されました。メッセージを表示せずにキットをスキャンしています。", "kit.for.toolchain.file": "ツールチェーン ファイル {0} 用のキット", "using.compilers.for": "{0} 用のコンパイラ ({1} アーキテクチャ) を使用しています", "using.compilers": "コンパイラ {0} を使用しています", diff --git a/i18n/jpn/src/kitsController.i18n.json b/i18n/jpn/src/kitsController.i18n.json index a53f7f758..bfcb49490 100644 --- a/i18n/jpn/src/kitsController.i18n.json +++ b/i18n/jpn/src/kitsController.i18n.json @@ -11,7 +11,7 @@ "unsetting.kit": "キットの設定を解除しています", "loading.kit": "キット {0} を読み込んでいます", "invalid.only.kit": "キットのみ無効です。`{0}` が必要です", - "already.checking.kits": "Already checking kits. Please try again later.", + "already.checking.kits": "キットは既に確認中です。後でもう一度お試しください。", "start.selection.of.kits": "キットの選択を開始します。{0} 個のキットが見つかりました。", "opening.kit.selection": "キット選択 QuickPick を開いています", "scan.for.kits.button": "キットのスキャン", diff --git a/i18n/jpn/src/status.i18n.json b/i18n/jpn/src/status.i18n.json index 19b60901c..8d26fab4a 100644 --- a/i18n/jpn/src/status.i18n.json +++ b/i18n/jpn/src/status.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "click.to.select.workspace.tooltip": "Click to select the active folder", + "click.to.select.workspace.tooltip": "アクティブなフォルダーを選択する場合にクリックします", "unconfigured": "未構成", "click.to.select.variant.tooltip": "現在のビルド バリアントを選択するには、クリックします", "loading.status": "読み込み中...", @@ -14,12 +14,12 @@ "set.active.target.tooltip": "ビルドするアクティブ ターゲットを設定します", "select.target.tooltip": "起動するターゲットを選択します", "launch.debugger.tooltip": "選択したターゲットのデバッガーを起動します", - "launch.tooltip": "Launch the selected target in the terminal window", + "launch.tooltip": "選択したターゲットをターミナル ウィンドウで起動します", "run.ctest.tests.tooltip": "CTest テストを実行します", "run.ctest": "CTest の実行", "test.passing": "{0}/{1} 件のテストが成功", "tests.passing": "{0}/{1} 件のテストが成功", - "build.tooltip": "Build the selected target", + "build.tooltip": "選択したターゲットをビルドします", "build": "ビルド", "stop": "停止" } \ No newline at end of file diff --git a/i18n/jpn/src/tree.i18n.json b/i18n/jpn/src/tree.i18n.json index 1c6dfd0bb..f7299421f 100644 --- a/i18n/jpn/src/tree.i18n.json +++ b/i18n/jpn/src/tree.i18n.json @@ -14,8 +14,8 @@ "item.render.issue": "このアイテムのレンダリングで問題が発生しました。これはバグです", "empty.project": "空のプロジェクト", "update.project.with.mismatch": "一致しない名前プロパティを持つプロジェクトを更新する", - "workspace.active": "Active Workspace", - "workspace": "Workspace", - "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", + "workspace.active": "アクティブなワークスペース", + "workspace": "ワークスペース", + "error.update.code.model.on.nonexist.folder": "まだ読み込まれていないフォルダーでコード モデルを更新しています。", "error.rendering.children.nodes": "子ノードのレンダリング中にエラーが発生しました" } \ No newline at end of file diff --git a/i18n/kor/package.i18n.json b/i18n/kor/package.i18n.json index c1c546180..5ad656325 100644 --- a/i18n/kor/package.i18n.json +++ b/i18n/kor/package.i18n.json @@ -104,19 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Emscripten을 설치할 수 있는 디렉터리입니다.", "cmake-tools.configuration.cmake.copyCompileCommands.description": "구성에 성공한 후 compile_commands.json을 이 위치로 복사합니다.", "cmake-tools.configuration.cmake.configureOnOpen.description": "CMake 프로젝트 디렉터리를 열 때 자동으로 구성합니다.", - "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", - "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", + "cmake-tools.configuration.cmake.configureOnEdit.description": "cmake.sourceDirectory 또는 CMakeLists.txt 콘텐츠가 저장될 때 CMake 프로젝트 디렉터리를 자동으로 구성합니다.", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "캐시가 있으면 구성 프로세스를 건너뜁니다.", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "확장과 CMake 간 통신에 사용되는 프로토콜입니다.", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "CMake 명령을 실행할 때 키트 환경 변수를 사용하지 않습니다.", "cmake-tools.configuration.cmake.buildTask.description": "내부 프로세스 대신 tasks.json을 사용하여 빌드합니다.", "cmake-tools.configuration.cmake.outputLogEncoding.description": "외부 명령의 출력 인코딩입니다(예: cmake -- build).", "cmake-tools.configuration.cmake.enableTraceLogging.description": "파일 및 콘솔에 대한 추적 로깅을 사용합니다(매우 불안정함).", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "자동으로 활성 폴더 선택", - "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", - "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", - "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "확장이 상태 표시줄에 단추를 표시하는 방식을 구성합니다.", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "개별 상태 표시줄 단추에 대한 설정을 구성합니다. 이 설정은 더 일반적인 'cmake.statusbar.visibility' 설정을 덮어씁니다.", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "확장이 상태 표시줄에 이 단추를 표시하는 방식을 구성합니다.", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "테스트 결과에 따라 이 단추의 색을 변경합니다.", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "'컴팩트' 모드에서 표시되는 텍스트의 최대 길이를 구성합니다.", "cmake-tools.configuration.views.cmake.folders.description": "폴더", "cmake-tools.configuration.views.cmake.outline.description": "프로젝트 개요" } \ No newline at end of file diff --git a/i18n/kor/schemas/kits-schema.json.i18n.json b/i18n/kor/schemas/kits-schema.json.i18n.json index e20a92d1e..c53d9223f 100644 --- a/i18n/kor/schemas/kits-schema.json.i18n.json +++ b/i18n/kor/schemas/kits-schema.json.i18n.json @@ -12,7 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "도구 체인 파일 경로", "schemas/kits-schema.json.items.properties.visualStudio": "Visual Studio 제품 이름", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "대상에 대한 아키텍처", - "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "키트의 환경을 수정하는 스크립트의 절대 경로", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "환경 변수 값", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "CMake 설정 값", "schemas/kits-schema.json.items.properties.preferredGenerator": "이 키트의 기본 설정 CMake 생성기 설정", diff --git a/i18n/kor/src/cmake-tools.i18n.json b/i18n/kor/src/cmake-tools.i18n.json index 076686888..e2db6c447 100644 --- a/i18n/kor/src/cmake-tools.i18n.json +++ b/i18n/kor/src/cmake-tools.i18n.json @@ -12,12 +12,12 @@ "configuration.already.in.progress": "구성이 이미 진행 중입니다.", "task.already.running": "CMake 작업이 이미 실행 중입니다. 새 CMake 작업을 실행하려면 먼저 이전 작업을 중지합니다.", "no.source.directory.found": "열려 있는 소스 디렉터리가 없습니다.", - "quickstart.cmake.project": "Create", - "edit.setting": "Locate", - "ignore.activation": "Don't show again", - "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", - "reload.window": "Reload Window", - "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", + "quickstart.cmake.project": "만들기", + "edit.setting": "찾기", + "ignore.activation": "다시 표시 안 함", + "missing.cmakelists": "'{0}' 폴더의 루트에 CMakeLists.txt가 없습니다. 어떻게 진행하시겠습니까?", + "reload.window": "창 다시 로드", + "setting.sourceDirectory.failed.needs.reload.window": "cmake.sourceDirectory 설정을 업데이트하는 동안 문제가 발생했습니다. 변경 내용을 적용하려면 \"창 다시 로드\" 명령을 실행하세요.", "starting.cmake.driver": "CMake 드라이버를 시작하는 중", "bad.cmake.executable": "잘못된 CMake 실행 파일 \"{0}\".", "switch.to.serverapi": "{0} 이전 버전에서는 CMake file-api 통신 모드가 지원되지 않습니다. CMake 서버 통신 모드로 전환하는 중입니다.", @@ -29,9 +29,9 @@ "second.phase.init": "CMakeTools 2단계 초기화를 시작하는 중", "active.build.variant.changed": "활성 빌드 variant가 변경됨", "changing.build.variant": "빌드 variant를 변경하는 중", - "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", - "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", - "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", + "cmakelists.save.trigger.reconfigure": "CMakeLists.txt 저장이 검색되어 자동 다시 구성을 시도하는 중...", + "cmakelists.save.could.not.reconfigure": "CMakeLists.txt에서 변경 내용이 검색되었지만, 다른 작업이 이미 진행 중이므로 프로젝트를 다시 구성할 수 없습니다.", + "needs.reconfigure": "CMakeLists.txt에 저장된 변경 내용이 적용되도록 프로젝트를 다시 구성해야 합니다.", "injecting.new.kit": "CMake 드라이버에 새 키트를 삽입하는 중", "reloading.status": "다시 로드하는 중...", "unable.to.set.kit": "\"{0}\" 키트를 설정할 수 없습니다.", @@ -64,7 +64,7 @@ "cannot.configure.no.kit": "구성할 수 없음: 이 CMake 도구에 대해 활성 상태인 키트가 없음", "waiting.on.variant": "variant 선택을 기다리는 중", "no.variant.abort": "선택한 variant가 없으므로 구성을 중단합니다.", - "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", + "warn.skip.configure.when.cache.present": "확장에서 지금 구성이 필요한 것으로 확인했지만, \\\n cmake.skipConfigureWhenCachePresent 설정이 ON 상태여서 건너뜁니다. \\\n CMake 캐시가 최신 구성 변경 내용과 동기화 상태인지 확인하세요.", "cmake.drive.died.during.tasksbuildcommend": "tasksBuildCommand 중에 CMake 드라이버가 종료됨", "run.build": "폴더를 빌드하는 중: {0}", "unable.to.configure": "빌드 실패: 프로젝트를 구성할 수 없음", diff --git a/i18n/kor/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/kor/src/drivers/cmakefileapi/api_helpers.i18n.json index 35ebd4234..f1f21cb76 100644 --- a/i18n/kor/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/kor/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "failed.writing.to.file": "Failed writing to file {0}", + "failed.writing.to.file": "{0} 파일에 쓰지 못함", "cache.object.version": "cmake-file-api의 캐시 개체 버전({0}.{1})은(는) 필요하지 않습니다. ({2}.{3})이(가) 필요합니다. IntelliSense 구성이 잘못되었을 수 있습니다.", "cache.entry.unknowntype": "알 수 없는 캐시 항목 형식 {0}입니다.", "code.model.version": "cmake-file-api의 코드 모델 버전({0}.{1})은(는) 필요하지 않습니다. ({2}.{3})이(가) 필요합니다. IntelliSense 구성이 잘못되었을 수 있습니다." diff --git a/i18n/kor/src/drivers/cmfileapi-driver.i18n.json b/i18n/kor/src/drivers/cmfileapi-driver.i18n.json index 2ecf56655..59e5a562c 100644 --- a/i18n/kor/src/drivers/cmfileapi-driver.i18n.json +++ b/i18n/kor/src/drivers/cmfileapi-driver.i18n.json @@ -4,6 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "removing": "Removing {0}", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "removing": "{0}을(를) 제거하는 중", + "cmakelists.save.trigger.reconfigure": "'cmake.sourceDirectory' 설정 업데이트가 검색되어 자동 다시 구성을 시도하는 중..." } \ No newline at end of file diff --git a/i18n/kor/src/drivers/cms-driver.i18n.json b/i18n/kor/src/drivers/cms-driver.i18n.json index 0a8a40f48..67f7d84e6 100644 --- a/i18n/kor/src/drivers/cms-driver.i18n.json +++ b/i18n/kor/src/drivers/cms-driver.i18n.json @@ -11,5 +11,5 @@ "build.all.target": "사용 가능한 모든 대상을 빌드할 특수 대상", "install.all.target": "사용 가능한 모든 대상을 설치할 특수 대상", "utility.target": "유틸리티 대상", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "cmakelists.save.trigger.reconfigure": "'cmake.sourceDirectory' 설정 업데이트가 검색되어 자동 다시 구성을 시도하는 중..." } \ No newline at end of file diff --git a/i18n/kor/src/extension.i18n.json b/i18n/kor/src/extension.i18n.json index 7ad3e5b4b..93d6339cb 100644 --- a/i18n/kor/src/extension.i18n.json +++ b/i18n/kor/src/extension.i18n.json @@ -10,14 +10,14 @@ "yes.button": "예", "not.now.button": "나중에", "always.configure.on.open": "항상 프로젝트를 열 때 구성하시겠습니까?", - "never.configure.on.open": "Configure projects on opening?", + "never.configure.on.open": "프로젝트를 열 때 구성하시겠습니까?", "no.button": "아니요", - "never.button": "Never", - "never.for.this.workspace.button": "Not this workspace", + "never.button": "안 함", + "never.for.this.workspace.button": "이 작업 영역이 아님", "persist.config.on.open.setting": "config-on-open 설정 유지", "configuring.workspace.on.open": "열린 {0}에서 작업 영역을 구성하는 중", - "configure.now.button": "Configure Now", - "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", + "configure.now.button": "지금 구성", + "configure.recommended": "새 키트 정의로 업그레이드한 후 다시 구성하는 것이 좋습니다.", "update.code.model.for.cpptools": "cpptools에 대한 코드 모델 업데이트", "filed.to.open.cache.file.on.code.model.update": "코드 모델 업데이트에서 CMake 캐시 파일을 열지 못함", "opening.text.editor.for": "{0}의 텍스트 편집기를 여는 중", diff --git a/i18n/kor/src/kit.i18n.json b/i18n/kor/src/kit.i18n.json index cdef8d707..54ceefacb 100644 --- a/i18n/kor/src/kit.i18n.json +++ b/i18n/kor/src/kit.i18n.json @@ -34,7 +34,7 @@ "scanning.for.kits": "키트를 검색하는 중", "scanning.for.cmake.kits": "CMake 키트를 검색하는 중...", "found.kit": "찾은 키트: {0}", - "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", + "silent.kits.rescan": "{0}에서 {1}(으)로의 키트 정의 버전 변경이 검색되었습니다. 키트를 자동으로 검사합니다.", "kit.for.toolchain.file": "도구 체인 파일 {0}용 키트", "using.compilers.for": "{0}({1} 아키텍처)에 대한 컴파일러를 사용하는 중", "using.compilers": "컴파일러를 사용하는 중: {0}", diff --git a/i18n/kor/src/kitsController.i18n.json b/i18n/kor/src/kitsController.i18n.json index ec21e185e..9afb73e27 100644 --- a/i18n/kor/src/kitsController.i18n.json +++ b/i18n/kor/src/kitsController.i18n.json @@ -11,7 +11,7 @@ "unsetting.kit": "키트 설정을 해제하는 중", "loading.kit": "{0} 키트를 로드하는 중", "invalid.only.kit": "잘못된 키트. '{0}'을(를) 찾아야 함", - "already.checking.kits": "Already checking kits. Please try again later.", + "already.checking.kits": "이미 키트를 확인하고 있습니다. 나중에 다시 시도하세요.", "start.selection.of.kits": "키트 선택을 시작합니다. {0}개 키트를 찾았습니다.", "opening.kit.selection": "키트 선택 QuickPick을 여는 중", "scan.for.kits.button": "키트 검색", diff --git a/i18n/kor/src/status.i18n.json b/i18n/kor/src/status.i18n.json index 0d6b03be7..6111a6f1e 100644 --- a/i18n/kor/src/status.i18n.json +++ b/i18n/kor/src/status.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "click.to.select.workspace.tooltip": "Click to select the active folder", + "click.to.select.workspace.tooltip": "활성 폴더를 선택하려면 클릭", "unconfigured": "구성되지 않음", "click.to.select.variant.tooltip": "현재 빌드 variant를 선택하려면 클릭하세요.", "loading.status": "로드하는 중...", @@ -14,12 +14,12 @@ "set.active.target.tooltip": "빌드할 활성 대상 설정", "select.target.tooltip": "시작할 대상 선택", "launch.debugger.tooltip": "선택된 대상의 디버거 시작", - "launch.tooltip": "Launch the selected target in the terminal window", + "launch.tooltip": "터미널 창에서 선택한 대상 시작", "run.ctest.tests.tooltip": "CTest 테스트 실행", "run.ctest": "CTest 실행", "test.passing": "{0}/{1}개 테스트 통과", "tests.passing": "{0}/{1}개 테스트 통과", - "build.tooltip": "Build the selected target", + "build.tooltip": "선택한 대상 빌드", "build": "빌드", "stop": "중지" } \ No newline at end of file diff --git a/i18n/kor/src/tree.i18n.json b/i18n/kor/src/tree.i18n.json index 7d682dc62..29e896fd8 100644 --- a/i18n/kor/src/tree.i18n.json +++ b/i18n/kor/src/tree.i18n.json @@ -14,8 +14,8 @@ "item.render.issue": "이 항목을 렌더링하는 동안 버그로 인해 문제가 발생했습니다.", "empty.project": "빈 프로젝트", "update.project.with.mismatch": "일치하지 않는 이름 속성으로 프로젝트 업데이트", - "workspace.active": "Active Workspace", - "workspace": "Workspace", - "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", + "workspace.active": "활성 작업 영역", + "workspace": "작업 영역", + "error.update.code.model.on.nonexist.folder": "아직 로드되지 않은 폴더의 코드 모델을 업데이트하는 중입니다.", "error.rendering.children.nodes": "자식 노드를 렌더링하는 동안 오류 발생" } \ No newline at end of file diff --git a/i18n/plk/package.i18n.json b/i18n/plk/package.i18n.json index 31a891579..f23da79cd 100644 --- a/i18n/plk/package.i18n.json +++ b/i18n/plk/package.i18n.json @@ -104,19 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Katalogi, w których można zainstalować program Emscripten.", "cmake-tools.configuration.cmake.copyCompileCommands.description": "Kopiuj plik compile_commands.json do tej lokalizacji po pomyślnym skonfigurowaniu.", "cmake-tools.configuration.cmake.configureOnOpen.description": "Automatycznie konfiguruj katalogi projektu narzędzia CMake przy ich otwieraniu.", - "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", - "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", + "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatycznie konfiguruj katalogi projektu CMake po zapisaniu zawartości ustawienia cmake.sourceDirectory i pliku CMakeLists.txt.", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Pomiń proces konfigurowania, jeśli pamięć podręczna jest obecna.", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "Protokół używany do komunikacji między rozszerzeniem i narzędziem CMake", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "Nie używaj zmiennych środowiskowych zestawu podczas uruchamiania poleceń narzędzia CMake.", "cmake-tools.configuration.cmake.buildTask.description": "Kompiluj przy użyciu pliku tasks.json zamiast procesu wewnętrznego.", "cmake-tools.configuration.cmake.outputLogEncoding.description": "Kodowanie danych wyjściowych z poleceń zewnętrznych (np. cmake --build).", "cmake-tools.configuration.cmake.enableTraceLogging.description": "Włącz rejestrowanie śledzenia w pliku i na konsoli (bardzo dużo danych).", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "Wybierz aktywny folder automatycznie", - "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", - "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", - "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "Konfiguruje sposób wyświetlania przycisków na pasku stanu przez rozszerzenie", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "Konfiguruje ustawienia dla poszczególnych przycisków paska stanu. Te ustawienia zastępują bardziej ogólne ustawienie „cmake.statusbar.visibility”.", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Konfiguruje sposób wyświetlania tego przycisku na pasku stanu przez rozszerzenie", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Umożliwia zmianę koloru tego przycisku w zależności od wyników testu", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Konfiguruje maksymalną długość widocznego tekstu w trybie „kompaktowym”.", "cmake-tools.configuration.views.cmake.folders.description": "Foldery", "cmake-tools.configuration.views.cmake.outline.description": "Konspekt projektu" } \ No newline at end of file diff --git a/i18n/plk/schemas/kits-schema.json.i18n.json b/i18n/plk/schemas/kits-schema.json.i18n.json index 6594479d9..3f5ea2ad6 100644 --- a/i18n/plk/schemas/kits-schema.json.i18n.json +++ b/i18n/plk/schemas/kits-schema.json.i18n.json @@ -12,7 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Ścieżka do pliku łańcucha narzędzi", "schemas/kits-schema.json.items.properties.visualStudio": "Nazwa produktu Visual Studio", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Architektura docelowa", - "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "Ścieżka bezwzględna do skryptu, który modyfikuje środowisko zestawu", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Wartość zmiennej środowiskowej", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Wartość ustawienia narzędzia CMake", "schemas/kits-schema.json.items.properties.preferredGenerator": "Ustaw preferowany generator narzędzia CMake dla tego zestawu", diff --git a/i18n/plk/src/cmake-tools.i18n.json b/i18n/plk/src/cmake-tools.i18n.json index af13fc09f..58fa98262 100644 --- a/i18n/plk/src/cmake-tools.i18n.json +++ b/i18n/plk/src/cmake-tools.i18n.json @@ -12,12 +12,12 @@ "configuration.already.in.progress": "Konfiguracja jest już w toku.", "task.already.running": "Zadanie narzędzia CMake jest już uruchomione. Zatrzymaj je przed próbą uruchomienia nowego zadania narzędzia CMake.", "no.source.directory.found": "Nie masz otwartego katalogu źródłowego", - "quickstart.cmake.project": "Create", - "edit.setting": "Locate", - "ignore.activation": "Don't show again", - "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", + "quickstart.cmake.project": "Utwórz", + "edit.setting": "Lokalizuj", + "ignore.activation": "Nie pokazuj ponownie", + "missing.cmakelists": "Nie znaleziono pliku CMakeLists.txt w katalogu głównym folderu „{0}”. W jaki sposób chcesz kontynuować?", "reload.window": "Reload Window", - "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", + "setting.sourceDirectory.failed.needs.reload.window": "Wystąpił problem podczas aktualizowania ustawienia cmake.sourceDirectory. Uruchom polecenie „Reload Window”, aby zmiany zostały wprowadzone.", "starting.cmake.driver": "Uruchamianie sterownika narzędzia CMake", "bad.cmake.executable": "Nieprawidłowy plik wykonywalny narzędzia CMake „{0}”.", "switch.to.serverapi": "Tryb komunikacji interfejsu API pliku narzędzia CMake nie jest obsługiwany w wersjach wcześniejszych niż {0}. Przełączanie do trybu komunikacji serwera narzędzia CMake.", @@ -29,9 +29,9 @@ "second.phase.init": "Rozpoczynanie inicjowania drugiej fazy rozszerzenia CMakeTools", "active.build.variant.changed": "Zmieniono wariant aktywnej kompilacji", "changing.build.variant": "Zmienianie wariantu kompilacji", - "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", - "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", - "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", + "cmakelists.save.trigger.reconfigure": "Wykryto zapisanie pliku CMakeLists.txt. Trwa próba automatycznej zmiany konfiguracji...", + "cmakelists.save.could.not.reconfigure": "Wykryto zmiany w pliku CMakeLists.txt, ale nie można ponownie skonfigurować projektu, ponieważ inna operacja jest już w toku.", + "needs.reconfigure": "Należy zmienić konfigurację projektu tak, aby zostały wprowadzone zmiany w pliku CMakeLists.txt.", "injecting.new.kit": "Wstrzykiwanie nowego zestawu do sterownika narzędzia CMake", "reloading.status": "Trwa ponowne ładowanie...", "unable.to.set.kit": "Nie można ustawić zestawu „{0}”.", @@ -64,7 +64,7 @@ "cannot.configure.no.kit": "Nie można skonfigurować: żaden zestaw nie jest aktywny dla tych narzędzi CMake Tools", "waiting.on.variant": "Oczekiwanie przy wyborze wariantu", "no.variant.abort": "Nie wybrano wariantu. Przerwij konfigurowanie.", - "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", + "warn.skip.configure.when.cache.present": "Rozszerzenie określiło, że w tym momencie jest wymagana konfiguracja, \\\n ale pominiemy ją, ponieważ ustawienie cmake.skipConfigureWhenCachePresent jest włączone. \\\n Upewnij się, że pamięć podręczna narzędzia CMake jest zsynchronizowana z najnowszymi zmianami konfiguracji.", "cmake.drive.died.during.tasksbuildcommend": "Sterownik narzędzia CMake zakończył pracę podczas operacji tasksBuildCommand", "run.build": "Kompilowanie folderu: {0}", "unable.to.configure": "Kompilacja nie powiodła się: nie można skonfigurować projektu", diff --git a/i18n/plk/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/plk/src/drivers/cmakefileapi/api_helpers.i18n.json index 3f165ceaa..ab36cc039 100644 --- a/i18n/plk/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/plk/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "failed.writing.to.file": "Failed writing to file {0}", + "failed.writing.to.file": "Nie można zapisać do pliku: {0}", "cache.object.version": "Wersja obiektu pamięci podręcznej ({0}.{1}) interfejsu cmake-file-api jest nieoczekiwana. Oczekiwano wersji ({2}.{3}). Konfiguracja funkcji IntelliSense może być niepoprawna.", "cache.entry.unknowntype": "Nieznany typ wpisu w pamięci podręcznej: {0}.", "code.model.version": "Wersja modelu kodu ({0}.{1}) interfejsu cmake-file-api jest nieoczekiwana. Oczekiwano wersji ({2}.{3}). Konfiguracja funkcji IntelliSense może być niepoprawna." diff --git a/i18n/plk/src/drivers/cmfileapi-driver.i18n.json b/i18n/plk/src/drivers/cmfileapi-driver.i18n.json index 2ecf56655..f9e922808 100644 --- a/i18n/plk/src/drivers/cmfileapi-driver.i18n.json +++ b/i18n/plk/src/drivers/cmfileapi-driver.i18n.json @@ -4,6 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "removing": "Removing {0}", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "removing": "Usuwanie elementu {0}", + "cmakelists.save.trigger.reconfigure": "Wykryto aktualizację ustawienia „cmake.sourceDirectory”. Trwa próba automatycznej zmiany konfiguracji..." } \ No newline at end of file diff --git a/i18n/plk/src/drivers/cms-driver.i18n.json b/i18n/plk/src/drivers/cms-driver.i18n.json index a30aee6e6..e74687a50 100644 --- a/i18n/plk/src/drivers/cms-driver.i18n.json +++ b/i18n/plk/src/drivers/cms-driver.i18n.json @@ -11,5 +11,5 @@ "build.all.target": "Specjalny element docelowy umożliwiający kompilowanie wszystkich dostępnych elementów docelowych", "install.all.target": "Specjalny element docelowy umożliwiający zainstalowanie wszystkich dostępnych elementów docelowych", "utility.target": "Element docelowy narzędzia", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "cmakelists.save.trigger.reconfigure": "Wykryto aktualizację ustawienia „cmake.sourceDirectory”. Trwa próba automatycznej zmiany konfiguracji..." } \ No newline at end of file diff --git a/i18n/plk/src/extension.i18n.json b/i18n/plk/src/extension.i18n.json index cea9ef4b7..017e30205 100644 --- a/i18n/plk/src/extension.i18n.json +++ b/i18n/plk/src/extension.i18n.json @@ -10,14 +10,14 @@ "yes.button": "Tak", "not.now.button": "Nie teraz", "always.configure.on.open": "Czy zawsze konfigurować projekty przy otwieraniu?", - "never.configure.on.open": "Configure projects on opening?", + "never.configure.on.open": "Konfigurować projekty przy otwieraniu?", "no.button": "Nie", - "never.button": "Never", - "never.for.this.workspace.button": "Not this workspace", + "never.button": "Nigdy", + "never.for.this.workspace.button": "Nie ten obszar roboczy", "persist.config.on.open.setting": "Utrwal ustawienie konfiguracji przy otwieraniu", "configuring.workspace.on.open": "Konfigurowanie obszaru roboczego przy otwieraniu elementu {0}", - "configure.now.button": "Configure Now", - "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", + "configure.now.button": "Skonfiguruj teraz", + "configure.recommended": "Zaleca się przeprowadzenie ponownej konfiguracji po uaktualnieniu do nowej definicji zestawów.", "update.code.model.for.cpptools": "Aktualizuj model kodu dla narzędzi cpptools", "filed.to.open.cache.file.on.code.model.update": "Nie można otworzyć pliku pamięci podręcznej narzędzia CMake podczas aktualizacji modelu kodu", "opening.text.editor.for": "Otwieranie edytora tekstu dla pliku {0}", diff --git a/i18n/plk/src/kit.i18n.json b/i18n/plk/src/kit.i18n.json index 01822d7c4..dc768f42b 100644 --- a/i18n/plk/src/kit.i18n.json +++ b/i18n/plk/src/kit.i18n.json @@ -34,7 +34,7 @@ "scanning.for.kits": "Skanowanie w poszukiwaniu zestawów", "scanning.for.cmake.kits": "Trwa skanowanie w poszukiwaniu zestawów narzędzia CMake...", "found.kit": "Znaleziono zestaw: {0}", - "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", + "silent.kits.rescan": "Wykryto zmianę wersji definicji zestawów z {0} na {1}. Tras dyskretne skanowanie w poszukiwaniu zestawów.", "kit.for.toolchain.file": "Zestaw dla pliku łańcucha narzędzi {0}", "using.compilers.for": "Użycie kompilatorów dla elementu {0} (architektura {1})", "using.compilers": "Użycie kompilatorów: {0}", diff --git a/i18n/plk/src/kitsController.i18n.json b/i18n/plk/src/kitsController.i18n.json index b5d411186..09e44ae31 100644 --- a/i18n/plk/src/kitsController.i18n.json +++ b/i18n/plk/src/kitsController.i18n.json @@ -11,7 +11,7 @@ "unsetting.kit": "Cofanie ustawienia zestawu", "loading.kit": "Ładowanie zestawu {0}", "invalid.only.kit": "Jedyny zestaw jest nieprawidłowy. Oczekiwano znalezienia elementu „{0}”.", - "already.checking.kits": "Already checking kits. Please try again later.", + "already.checking.kits": "Sprawdzanie zestawów już trwa. Spróbuj ponownie później.", "start.selection.of.kits": "Rozpocznij wybieranie zestawów. Liczba znalezionych zestawów: {0}.", "opening.kit.selection": "Otwieranie elementu QuickPick wyboru zestawu", "scan.for.kits.button": "Skanuj w poszukiwaniu zestawów", diff --git a/i18n/plk/src/status.i18n.json b/i18n/plk/src/status.i18n.json index 98d7be905..10f22eb3a 100644 --- a/i18n/plk/src/status.i18n.json +++ b/i18n/plk/src/status.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "click.to.select.workspace.tooltip": "Click to select the active folder", + "click.to.select.workspace.tooltip": "Kliknij, aby wybrać aktywny folder", "unconfigured": "Brak konfiguracji", "click.to.select.variant.tooltip": "Kliknij, aby wybrać wariant bieżącej kompilacji", "loading.status": "Trwa ładowanie...", @@ -14,12 +14,12 @@ "set.active.target.tooltip": "Skonfiguruj aktywny element docelowy do skompilowania", "select.target.tooltip": "Wybierz element docelowy do uruchomienia", "launch.debugger.tooltip": "Uruchom debuger dla wybranego elementu docelowego", - "launch.tooltip": "Launch the selected target in the terminal window", + "launch.tooltip": "Uruchom wybrany element docelowy w oknie terminalu", "run.ctest.tests.tooltip": "Uruchom testy narzędzia CTest", "run.ctest": "Uruchom narzędzie CTest", "test.passing": "{0}/{1} testu zakończono powodzeniem", "tests.passing": "{0}/{1} testów zakończono powodzeniem", - "build.tooltip": "Build the selected target", + "build.tooltip": "Utwórz wybrany element docelowy", "build": "Kompilacja", "stop": "Zatrzymaj" } \ No newline at end of file diff --git a/i18n/plk/src/tree.i18n.json b/i18n/plk/src/tree.i18n.json index 1e73feb6f..b2712a1ab 100644 --- a/i18n/plk/src/tree.i18n.json +++ b/i18n/plk/src/tree.i18n.json @@ -14,8 +14,8 @@ "item.render.issue": "Wystąpił problem podczas renderowania tego elementu. To jest usterka.", "empty.project": "Pusty projekt", "update.project.with.mismatch": "Aktualizuj projekt z niezgodną właściwością nazwy", - "workspace.active": "Active Workspace", - "workspace": "Workspace", - "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", + "workspace.active": "Aktywny obszar roboczy", + "workspace": "Obszar roboczy", + "error.update.code.model.on.nonexist.folder": "Wykonywania jest aktualizacja modelu kodu w folderze, który nie został jeszcze załadowany.", "error.rendering.children.nodes": "Błąd podczas renderowania węzłów podrzędnych" } \ No newline at end of file diff --git a/i18n/rus/package.i18n.json b/i18n/rus/package.i18n.json index 25b2250d0..c2c7b3de7 100644 --- a/i18n/rus/package.i18n.json +++ b/i18n/rus/package.i18n.json @@ -104,19 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Каталоги, где возможна установка Emscripten.", "cmake-tools.configuration.cmake.copyCompileCommands.description": "Копирование сюда файла compile_commands.json после выполнения настройки.", "cmake-tools.configuration.cmake.configureOnOpen.description": "Автоматическая настройка каталогов проекта CMake при их открытии.", - "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", - "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", + "cmake-tools.configuration.cmake.configureOnEdit.description": "Автоматически настраивать каталоги проекта CMake при сохранении содержимого в каталоге cmake.sourceDirectory или в файле CMakeLists.txt.", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Пропустить процесс настройки при наличии кэша.", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "Протокол, используемый для взаимодействия между расширением и CMake", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "Отключение использования переменных среды при выполнении команд CMake.", "cmake-tools.configuration.cmake.buildTask.description": "Сборка с помощью tasks.json вместо внутреннего процесса.", "cmake-tools.configuration.cmake.outputLogEncoding.description": "Кодирование выходных данных из внешних команд (например, cmake --build).", "cmake-tools.configuration.cmake.enableTraceLogging.description": "Включение ведения журнала трассировки в файле и в консоли (большое число сообщений).", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "Автоматический выбор активной папки", - "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", - "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", - "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "Определяет, как расширение отображает кнопки в строке состояния.", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "Настраивает параметры для отдельных кнопок строки состояния. Эти параметры перезаписывают более общий параметр \"cmake.statusbar.visibility\".", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Определяет, как расширение отображает эту кнопку в строке состояния.", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Позволяет изменить цвет этой кнопки в зависимости от результатов теста.", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Настраивает максимальную длину видимого текста в \"компактном\" режиме.", "cmake-tools.configuration.views.cmake.folders.description": "Папки", "cmake-tools.configuration.views.cmake.outline.description": "Структура проекта" } \ No newline at end of file diff --git a/i18n/rus/schemas/kits-schema.json.i18n.json b/i18n/rus/schemas/kits-schema.json.i18n.json index 9df5f9ada..39128b100 100644 --- a/i18n/rus/schemas/kits-schema.json.i18n.json +++ b/i18n/rus/schemas/kits-schema.json.i18n.json @@ -12,7 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Путь к файлу цепочки инструментов", "schemas/kits-schema.json.items.properties.visualStudio": "Имя продукта Visual Studio", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Целевая архитектура", - "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "Абсолютный путь к сценарию, изменяющему среду для набора", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Значение переменной среды", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "Значение параметра CMake", "schemas/kits-schema.json.items.properties.preferredGenerator": "Установить предпочтительный генератор CMake для этого набора", diff --git a/i18n/rus/src/cmake-tools.i18n.json b/i18n/rus/src/cmake-tools.i18n.json index 0892de933..1106f56c5 100644 --- a/i18n/rus/src/cmake-tools.i18n.json +++ b/i18n/rus/src/cmake-tools.i18n.json @@ -12,12 +12,12 @@ "configuration.already.in.progress": "Настройка уже выполняется.", "task.already.running": "Задача CMake уже выполняется. Остановите ее перед запуском новой задачи CMake.", "no.source.directory.found": "У вас нет открытого каталога источника.", - "quickstart.cmake.project": "Create", - "edit.setting": "Locate", - "ignore.activation": "Don't show again", - "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", - "reload.window": "Reload Window", - "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", + "quickstart.cmake.project": "Создать", + "edit.setting": "Найти", + "ignore.activation": "Больше не показывать", + "missing.cmakelists": "Файл CMakeLists.txt не найден в корневом каталоге папки \"{0}\". Что вы хотели бы сделать?", + "reload.window": "Перезагрузить окно", + "setting.sourceDirectory.failed.needs.reload.window": "При обновлении параметра cmake.sourceDirectory произошла ошибка. Выполните команду \"Перезагрузить окно\", чтобы изменения вступили в силу.", "starting.cmake.driver": "Запуск драйвера CMake.", "bad.cmake.executable": "Неверный исполняемый файл CMake \"{0}\".", "switch.to.serverapi": "Режим взаимодействия file-api CMake не поддерживается в версиях ниже {0}. Переключение на режим взаимодействия сервера CMake.", @@ -29,9 +29,9 @@ "second.phase.init": "Запуск второго этапа инициализации CMakeTools.", "active.build.variant.changed": "Изменен активный вариант сборки.", "changing.build.variant": "Изменение варианта сборки", - "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", - "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", - "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", + "cmakelists.save.trigger.reconfigure": "Обнаружено сохранение файла CMakeLists.txt, выполняется попытка автоматической повторной настройки…", + "cmakelists.save.could.not.reconfigure": "В файле CMakeLists.txt были обнаружены изменения, но не удалось повторно настроить проект, поскольку уже выполняется другая операция.", + "needs.reconfigure": "Чтобы изменения, сохраненные в файле CMakeLists.txt, вступили в силу, необходимо повторно настроить проект.", "injecting.new.kit": "Внедрение нового набора в драйвер CMake.", "reloading.status": "Перезагрузка…", "unable.to.set.kit": "Не удалось установить набор \"{0}\".", @@ -64,7 +64,7 @@ "cannot.configure.no.kit": "Не удается выполнить настройку: отсутствуют активные наборы для этих Средств CMake.", "waiting.on.variant": "Ожидание выбора варианта.", "no.variant.abort": "Вариант не выбран. Прервите настройку.", - "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", + "warn.skip.configure.when.cache.present": "Расширение определило, что сейчас требуется выполнить настройку, \\\n но настройка будет пропущена, так как параметр cmake.skipConfigureWhenCachePresent установлен. \\\n Убедитесь, что кэш CMake синхронизирован с последними изменениями конфигурации.", "cmake.drive.died.during.tasksbuildcommend": "Драйвер CMake завершил работу во время tasksBuildCommand", "run.build": "Сборка папки: {0}", "unable.to.configure": "Сборка не выполнена: невозможно настроить проект.", diff --git a/i18n/rus/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/rus/src/drivers/cmakefileapi/api_helpers.i18n.json index aa77edd08..6ce9b10ac 100644 --- a/i18n/rus/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/rus/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "failed.writing.to.file": "Failed writing to file {0}", + "failed.writing.to.file": "Ошибка при записи в файл {0}", "cache.object.version": "Неожиданная версия объекта кэша cmake-file-api ({0}.{1}). Ожидаемая версия: ({2}.{3}). Возможно, конфигурация IntelliSense задана неправильно.", "cache.entry.unknowntype": "Неизвестный тип записи кэша: {0}.", "code.model.version": "Неожиданная версия модели кода cmake-file-api ({0}.{1}). Ожидаемая версия: ({2}.{3}). Возможно, конфигурация IntelliSense задана неправильно." diff --git a/i18n/rus/src/drivers/cmfileapi-driver.i18n.json b/i18n/rus/src/drivers/cmfileapi-driver.i18n.json index 2ecf56655..020dda6de 100644 --- a/i18n/rus/src/drivers/cmfileapi-driver.i18n.json +++ b/i18n/rus/src/drivers/cmfileapi-driver.i18n.json @@ -4,6 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "removing": "Removing {0}", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "removing": "Удаление {0}.", + "cmakelists.save.trigger.reconfigure": "Обнаружено обновление параметра \"cmake.sourceDirectory\", выполняется попытка автоматической повторной настройки…" } \ No newline at end of file diff --git a/i18n/rus/src/drivers/cms-driver.i18n.json b/i18n/rus/src/drivers/cms-driver.i18n.json index e885d5167..a15d29571 100644 --- a/i18n/rus/src/drivers/cms-driver.i18n.json +++ b/i18n/rus/src/drivers/cms-driver.i18n.json @@ -11,5 +11,5 @@ "build.all.target": "Специальный целевой объект для создания всех доступных целевых объектов", "install.all.target": "Специальный целевой объект для установки всех доступных целевых объектов", "utility.target": "Целевой объект служебной программы", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "cmakelists.save.trigger.reconfigure": "Обнаружено обновление параметра \"cmake.sourceDirectory\", выполняется попытка автоматической повторной настройки…" } \ No newline at end of file diff --git a/i18n/rus/src/extension.i18n.json b/i18n/rus/src/extension.i18n.json index bbe0b28af..19cd016b2 100644 --- a/i18n/rus/src/extension.i18n.json +++ b/i18n/rus/src/extension.i18n.json @@ -10,14 +10,14 @@ "yes.button": "Да", "not.now.button": "Не сейчас", "always.configure.on.open": "Всегда настраивать проекты при открытии?", - "never.configure.on.open": "Configure projects on opening?", + "never.configure.on.open": "Настроить проекты при открытии?", "no.button": "Нет", - "never.button": "Never", - "never.for.this.workspace.button": "Not this workspace", + "never.button": "Никогда", + "never.for.this.workspace.button": "Не в этой рабочей области", "persist.config.on.open.setting": "Сохранить параметр конфигурации при открытии", "configuring.workspace.on.open": "Настройка рабочей области в открытом {0}.", - "configure.now.button": "Configure Now", - "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", + "configure.now.button": "Настроить сейчас", + "configure.recommended": "Рекомендуется повторно настроить проект после обновления на новое определение наборов.", "update.code.model.for.cpptools": "Обновление модели кода для cpptools", "filed.to.open.cache.file.on.code.model.update": "Не удалось открыть файл кэша CMake при обновлении модели кода.", "opening.text.editor.for": "Открытие текстового редактора для {0}.", diff --git a/i18n/rus/src/kit.i18n.json b/i18n/rus/src/kit.i18n.json index be905be36..1973f0bea 100644 --- a/i18n/rus/src/kit.i18n.json +++ b/i18n/rus/src/kit.i18n.json @@ -34,7 +34,7 @@ "scanning.for.kits": "Поиск наборов.", "scanning.for.cmake.kits": "Поиск наборов CMake…", "found.kit": "Обнаруженный набор: {0}.", - "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", + "silent.kits.rescan": "Обнаружено изменение версии определения наборов с {0} на {1}. Выполняется автоматическая проверка наборов.", "kit.for.toolchain.file": "Набор для файла цепочки инструментов {0}", "using.compilers.for": "Использование компиляторов для {0} (архитектура {1}).", "using.compilers": "Использование компиляторов: {0}", diff --git a/i18n/rus/src/kitsController.i18n.json b/i18n/rus/src/kitsController.i18n.json index 8dda94e0c..70baab3a8 100644 --- a/i18n/rus/src/kitsController.i18n.json +++ b/i18n/rus/src/kitsController.i18n.json @@ -11,7 +11,7 @@ "unsetting.kit": "Отмена настройки набора.", "loading.kit": "Загрузка набора {0}.", "invalid.only.kit": "Недопустимый набор. Ожидаемый набор: \"{0}\".", - "already.checking.kits": "Already checking kits. Please try again later.", + "already.checking.kits": "Проверка наборов уже выполняется. Повторите попытку позже.", "start.selection.of.kits": "Начало выбора наборов. Обнаружено наборов: {0}.", "opening.kit.selection": "Открытие средства выбора наборов QuickPick.", "scan.for.kits.button": "Поиск наборов", diff --git a/i18n/rus/src/status.i18n.json b/i18n/rus/src/status.i18n.json index 721b73bd0..1804e72c0 100644 --- a/i18n/rus/src/status.i18n.json +++ b/i18n/rus/src/status.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "click.to.select.workspace.tooltip": "Click to select the active folder", + "click.to.select.workspace.tooltip": "Щелкните, чтобы выбрать активную папку.", "unconfigured": "Не настроено", "click.to.select.variant.tooltip": "Щелкните, чтобы выбрать вариант текущей сборки.", "loading.status": "Загрузка...", @@ -14,12 +14,12 @@ "set.active.target.tooltip": "Настройка активного целевого объекта для сборки", "select.target.tooltip": "Выбор целевого объекта для запуска.", "launch.debugger.tooltip": "Запуск отладчика для выбранного целевого объекта", - "launch.tooltip": "Launch the selected target in the terminal window", + "launch.tooltip": "Запуск выбранного целевого объекта в окне терминала", "run.ctest.tests.tooltip": "Запуск тестов CTest", "run.ctest": "Запустить CTest", "test.passing": "{0}/{1} тест пройден.", "tests.passing": "Тестов пройдено: {0}/{1}.", - "build.tooltip": "Build the selected target", + "build.tooltip": "Сборка выбранного целевого объекта", "build": "Сборка", "stop": "Остановка" } \ No newline at end of file diff --git a/i18n/rus/src/tree.i18n.json b/i18n/rus/src/tree.i18n.json index 5d8eaa5d4..1d9b18ef6 100644 --- a/i18n/rus/src/tree.i18n.json +++ b/i18n/rus/src/tree.i18n.json @@ -14,8 +14,8 @@ "item.render.issue": "Возникла проблема при отрисовке этого элемента. Это ошибка.", "empty.project": "Пустой проект", "update.project.with.mismatch": "Обновление проекта с несоответствующим свойством имени", - "workspace.active": "Active Workspace", - "workspace": "Workspace", - "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", + "workspace.active": "Активная рабочая область", + "workspace": "Рабочая область", + "error.update.code.model.on.nonexist.folder": "Обновление модели кода в папке, которая еще не загружена.", "error.rendering.children.nodes": "Ошибка при отображении дочерних узлов." } \ No newline at end of file diff --git a/i18n/trk/package.i18n.json b/i18n/trk/package.i18n.json index df50a756e..9db378780 100644 --- a/i18n/trk/package.i18n.json +++ b/i18n/trk/package.i18n.json @@ -104,19 +104,19 @@ "cmake-tools.configuration.cmake.emscriptenSearchDirs.description": "Emscripten'in yüklü olabileceği dizinler.", "cmake-tools.configuration.cmake.copyCompileCommands.description": "Başarılı bir yapılandırmadan sonra compile_commands.json dosyasını bu konuma kopyala.", "cmake-tools.configuration.cmake.configureOnOpen.description": "CMake proje dizinleri açıldığında bu dizinleri otomatik olarak yapılandır.", - "cmake-tools.configuration.cmake.configureOnEdit.description": "Automatically configure CMake project directories when cmake.sourceDirectory or CMakeLists.txt content are saved.", - "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Skip over the configure process if cache is present.", + "cmake-tools.configuration.cmake.configureOnEdit.description": "cmake.sourceDirectory veya CMakeLists.txt içeriği kaydedildiğinde CMake proje dizinlerini otomatik olarak yapılandırın.", + "cmake-tools.configuration.cmake.skipConfigureIfCachePresent.description": "Önbellek mevcutsa yapılandırma işlemini atlayın.", "cmake-tools.configuration.cmake.cmakeCommunicationMode": "Uzantı ve CMake arasında iletişim kurmak için kullanılan protokol", "cmake-tools.configuration.cmake.ignoreKitEnv.description": "CMake komutlarını çalıştırırken set ortamı değişkenlerini kullanmayın.", "cmake-tools.configuration.cmake.buildTask.description": "İç işlem yerine tasks.json kullanarak derle.", "cmake-tools.configuration.cmake.outputLogEncoding.description": "Dış komutlardan (ör. cmake -- build) gelen çıkışın kodlaması.", "cmake-tools.configuration.cmake.enableTraceLogging.description": "Dosya ve konsolda izleme günlüğünü etkinleştirin (çok gürültülü).", "cmake-tools.configuration.cmake.autoSelectActiveFolder.description": "Etkin klasörü otomatik olarak seç", - "cmake-tools.configuration.cmake.statusbar.visibility.description": "Configures how the extension displays the buttons in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.description": "Configures the settings for individual status bar buttons. These settings overwrite the more general 'cmake.statusbar.visibility' setting.", - "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Configures how the extension displays this button in the status bar", - "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Enables a change in color for this button depending on test results", - "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "Configures the maximum length of visible text in 'compact' mode.", + "cmake-tools.configuration.cmake.statusbar.visibility.description": "Uzantının, düğmeleri durum çubuğunda görüntüleme biçimini yapılandırır", + "cmake-tools.configuration.cmake.statusbar.advanced.description": "Tek tek durum çubuğu düğmeleri için ayarları yapılandırır. Bu ayarlar, daha genel 'cmake.statusbar.visibility' ayarının üzerine yazar.", + "cmake-tools.configuration.cmake.statusbar.advanced.visibility.description": "Uzantının, bu düğmeyi durum çubuğunda görüntüleme biçimini yapılandırır", + "cmake-tools.configuration.cmake.statusbar.advanced.ctest.color.description": "Test sonuçlarına bağlı olarak bu düğmenin renginde bir değişikliğe neden olur", + "cmake-tools.configuration.cmake.statusbar.advanced.length.description": "'Sıkıştırılmış' modda görünen metnin maksimum uzunluğunu yapılandırır.", "cmake-tools.configuration.views.cmake.folders.description": "Klasörler", "cmake-tools.configuration.views.cmake.outline.description": "Proje Ana Hattı" } \ No newline at end of file diff --git a/i18n/trk/schemas/kits-schema.json.i18n.json b/i18n/trk/schemas/kits-schema.json.i18n.json index 087731466..eb2bfac5b 100644 --- a/i18n/trk/schemas/kits-schema.json.i18n.json +++ b/i18n/trk/schemas/kits-schema.json.i18n.json @@ -12,7 +12,7 @@ "schemas/kits-schema.json.items.properties.toolchainFile": "Araç zinciri dosyasının yolu", "schemas/kits-schema.json.items.properties.visualStudio": "Visual Studio ürününün adı", "schemas/kits-schema.json.items.properties.visualStudioArchitecture": "Hedeflenecek mimari", - "schemas/kits-schema.json.items.properties.environmentSetupScript": "The absolute path to a script that modifies the environment for the Kit", + "schemas/kits-schema.json.items.properties.environmentSetupScript": "Set için ortamı değiştiren betiğin mutlak yolu", "schemas/kits-schema.json.items.properties.environmentVariables.patternProperties..*": "Ortam değişkeninin değeri", "schemas/kits-schema.json.items.properties.cmakeSettings.patternProperties..*": "CMake Ayarının değeri", "schemas/kits-schema.json.items.properties.preferredGenerator": "Bu Set için tercih edilen bir CMake oluşturucusu ayarlayın", diff --git a/i18n/trk/src/cmake-tools.i18n.json b/i18n/trk/src/cmake-tools.i18n.json index d2386c8f5..a89b00fc3 100644 --- a/i18n/trk/src/cmake-tools.i18n.json +++ b/i18n/trk/src/cmake-tools.i18n.json @@ -12,12 +12,12 @@ "configuration.already.in.progress": "Yapılandırma zaten devam ediyor.", "task.already.running": "Bir CMake görevi zaten çalışıyor. Yeni bir CMake görevi çalıştırmayı denemeden önce bunu durdurun.", "no.source.directory.found": "Açık bir kaynak dizininiz yok", - "quickstart.cmake.project": "Create", - "edit.setting": "Locate", - "ignore.activation": "Don't show again", - "missing.cmakelists": "CMakeLists.txt was not found in the root of the folder '{0}'. How would you like to proceed?", - "reload.window": "Reload Window", - "setting.sourceDirectory.failed.needs.reload.window": "Something went wrong while updating the cmake.sourceDirectory setting. Please run the \"Reload window\" command for the change to take effect.", + "quickstart.cmake.project": "Oluştur", + "edit.setting": "Bul", + "ignore.activation": "Bir daha gösterme", + "missing.cmakelists": "CMakeLists.txt, '{0}' klasörünün kökünde bulunamadı. Nasıl devam etmek istersiniz?", + "reload.window": "Pencereyi Yeniden Yükle", + "setting.sourceDirectory.failed.needs.reload.window": "cmake.sourceDirectory ayarı güncelleştirilirken bir hata oluştu. Değişikliğin etkili olması için lütfen \"Pencereyi yeniden yükle\" komutunu çalıştırın.", "starting.cmake.driver": "CMake sürücüsü başlatılıyor", "bad.cmake.executable": "Hatalı \"{0}\" CMake yürütülebilir dosyası.", "switch.to.serverapi": "CMake file-api iletişim modu, {0} öncesi sürümlerde desteklenmiyor. CMake server iletişimi moduna geçiliyor.", @@ -29,9 +29,9 @@ "second.phase.init": "CMake Araçları ikinci aşama başlatması başlatılıyor", "active.build.variant.changed": "Etkin derleme varyantı değiştirildi", "changing.build.variant": "Derleme varyantı değiştiriliyor", - "cmakelists.save.trigger.reconfigure": "Detected saving of CMakeLists.txt, attempting automatic reconfigure...", - "cmakelists.save.could.not.reconfigure": "Changes were detected in CMakeLists.txt but we could not reconfigure the project because another operation is already in progress.", - "needs.reconfigure": "The project needs to be reconfigured so that the changes saved in CMakeLists.txt have effect.", + "cmakelists.save.trigger.reconfigure": "CMakeLists.txt dosyasının kaydedildiği algılandı, otomatik olarak yeniden yapılandırılmaya çalışılıyor...", + "cmakelists.save.could.not.reconfigure": "CMakeLists.txt içinde değişiklikler algılandı ancak başka bir işlem zaten devam ettiğinden proje yeniden yapılandırılamadı.", + "needs.reconfigure": "CMakeLists.txt'e kaydedilen değişikliklerin geçerli olması için projenin yeniden yapılandırılması gerekiyor.", "injecting.new.kit": "CMake sürücüsüne yeni Set ekleniyor", "reloading.status": "Yeniden yükleniyor...", "unable.to.set.kit": "\"{0}\" seti ayarlanamıyor.", @@ -64,7 +64,7 @@ "cannot.configure.no.kit": "Yapılandırılamıyor: Bu CMake Araçları için etkin bir set yok", "waiting.on.variant": "Varyant seçimi bekleniyor", "no.variant.abort": "Seçilen varyant yok. Yapılandırmayı durdur", - "warn.skip.configure.when.cache.present": "The extension determined that a configuration is needed at this moment \\\r\n but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. \\\r\n Make sure the CMake cache is in sync with the latest configuration changes.", + "warn.skip.configure.when.cache.present": "Uzantı, şu anda bir yapılandırmanın gerektiğini belirledi \\\n ancak cmake.skipConfigureWhenCachePresent özelliği AÇIK olduğundan atlanıyor. \\\n CMake önbelleğinin en son yapılandırma değişiklikleriyle eşitlendiğinden emin olun.", "cmake.drive.died.during.tasksbuildcommend": "CMake sürücüsü tasksBuildCommand sırasında sonlandırıldı", "run.build": "Yapı klasörü: {0}", "unable.to.configure": "Derleme başarısız oldu: Proje yapılandırılamıyor", diff --git a/i18n/trk/src/drivers/cmakefileapi/api_helpers.i18n.json b/i18n/trk/src/drivers/cmakefileapi/api_helpers.i18n.json index 7903761ab..115a64017 100644 --- a/i18n/trk/src/drivers/cmakefileapi/api_helpers.i18n.json +++ b/i18n/trk/src/drivers/cmakefileapi/api_helpers.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "failed.writing.to.file": "Failed writing to file {0}", + "failed.writing.to.file": "{0} dosyasına yazılamadı", "cache.object.version": "cmake-file-api'nin önbellek nesne sürümü ({0}.{1}) beklenmiyordu. Beklenen ({2}.{3}). IntelliSense yapılandırması yanlış olabilir.", "cache.entry.unknowntype": "Bilinmeyen önbellek girdisi türü: {0}.", "code.model.version": "cmake-file-api'nin kod modeli sürümü ({0}.{1}) beklenmiyordu. Beklenen ({2}.{3}). IntelliSense yapılandırması yanlış olabilir." diff --git a/i18n/trk/src/drivers/cmfileapi-driver.i18n.json b/i18n/trk/src/drivers/cmfileapi-driver.i18n.json index 2ecf56655..9ebc6d2c5 100644 --- a/i18n/trk/src/drivers/cmfileapi-driver.i18n.json +++ b/i18n/trk/src/drivers/cmfileapi-driver.i18n.json @@ -4,6 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "removing": "Removing {0}", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "removing": "{0} kaldırılıyor", + "cmakelists.save.trigger.reconfigure": "'cmake.sourceDirectory' ayarı güncelleştirildi, otomatik olarak yeniden yapılandırılmaya çalışılıyor..." } \ No newline at end of file diff --git a/i18n/trk/src/drivers/cms-driver.i18n.json b/i18n/trk/src/drivers/cms-driver.i18n.json index 75449b42b..0b8e44186 100644 --- a/i18n/trk/src/drivers/cms-driver.i18n.json +++ b/i18n/trk/src/drivers/cms-driver.i18n.json @@ -11,5 +11,5 @@ "build.all.target": "Tüm kullanılabilir hedefleri derlemek için özel bir hedef", "install.all.target": "Tüm kullanılabilir hedefleri yüklemek için özel bir hedef", "utility.target": "Yardımcı program hedefi", - "cmakelists.save.trigger.reconfigure": "Detected 'cmake.sourceDirectory' setting update, attempting automatic reconfigure..." + "cmakelists.save.trigger.reconfigure": "'cmake.sourceDirectory' ayarı güncelleştirildi, otomatik olarak yeniden yapılandırılmaya çalışılıyor..." } \ No newline at end of file diff --git a/i18n/trk/src/extension.i18n.json b/i18n/trk/src/extension.i18n.json index 58e089a85..e4acee102 100644 --- a/i18n/trk/src/extension.i18n.json +++ b/i18n/trk/src/extension.i18n.json @@ -10,14 +10,14 @@ "yes.button": "Evet", "not.now.button": "Şimdi değil", "always.configure.on.open": "Projeler her zaman açıldıktan sonra mı yapılandırılsın?", - "never.configure.on.open": "Configure projects on opening?", + "never.configure.on.open": "Projeler açıldıktan sonra yapılandırılsın mı?", "no.button": "Hayır", - "never.button": "Never", - "never.for.this.workspace.button": "Not this workspace", + "never.button": "Hiçbir Zaman", + "never.for.this.workspace.button": "Bu çalışma alanı değil", "persist.config.on.open.setting": "Açılışta yapılandır ayarını kalıcı yap", "configuring.workspace.on.open": "Açık {0} konumunda çalışma alanı yapılandırılıyor", - "configure.now.button": "Configure Now", - "configure.recommended": "It is recommended to reconfigure after upgrading to a new kits definition.", + "configure.now.button": "Şimdi Yapılandır", + "configure.recommended": "Yeni bir set tanımına yükselttikten sonra yeniden yapılandırmanız önerilir.", "update.code.model.for.cpptools": "cpptools için kod modelini güncelleştir", "filed.to.open.cache.file.on.code.model.update": "Kod modeli güncelleştirmesinde CMake önbellek dosyası açılamadı", "opening.text.editor.for": "{0} için metin düzenleyici açılıyor", diff --git a/i18n/trk/src/kit.i18n.json b/i18n/trk/src/kit.i18n.json index 224b1d247..a434b3411 100644 --- a/i18n/trk/src/kit.i18n.json +++ b/i18n/trk/src/kit.i18n.json @@ -34,7 +34,7 @@ "scanning.for.kits": "Setler için taranıyor", "scanning.for.cmake.kits": "CMake setleri için taranıyor...", "found.kit": "{0} Seti Bulundu", - "silent.kits.rescan": "Detected kits definition version change from {0} to {1}. Silently scanning for kits.", + "silent.kits.rescan": "{0} olan set tanımı sürümünün {1} olarak değiştirildiği algılandı. Setler sessizce taranıyor.", "kit.for.toolchain.file": "{0} araç zinciri dosyası için set", "using.compilers.for": "{0} için derleyiciler kullanılıyor ({1} mimarisi)", "using.compilers": "{0} derleyicileri kullanılıyor", diff --git a/i18n/trk/src/kitsController.i18n.json b/i18n/trk/src/kitsController.i18n.json index 9af01967b..7d2d52977 100644 --- a/i18n/trk/src/kitsController.i18n.json +++ b/i18n/trk/src/kitsController.i18n.json @@ -11,7 +11,7 @@ "unsetting.kit": "Set ayarı kaldırılıyor", "loading.kit": "{0} seti yükleniyor", "invalid.only.kit": "Yalnızca set geçersiz. `{0}` bulunması bekleniyordu", - "already.checking.kits": "Already checking kits. Please try again later.", + "already.checking.kits": "Setler zaten denetleniyor. Lütfen daha sonra yeniden deneyin.", "start.selection.of.kits": "Set seçimi başladı. {0} set bulundu.", "opening.kit.selection": "QuickPick set seçimi açılıyor", "scan.for.kits.button": "Setler için tara", diff --git a/i18n/trk/src/status.i18n.json b/i18n/trk/src/status.i18n.json index 6e80e1b4f..536a98ffa 100644 --- a/i18n/trk/src/status.i18n.json +++ b/i18n/trk/src/status.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "click.to.select.workspace.tooltip": "Click to select the active folder", + "click.to.select.workspace.tooltip": "Etkin klasörü seçmek için tıklayın", "unconfigured": "Yapılandırılmamış", "click.to.select.variant.tooltip": "Geçerli derleme varyantını seçmek için tıklayın", "loading.status": "Yükleniyor...", @@ -14,12 +14,12 @@ "set.active.target.tooltip": "Derlenecek etkin hedefi ayarlayın", "select.target.tooltip": "Başlatılacak hedefi seçin", "launch.debugger.tooltip": "Seçili hedef için hata ayıklayıcısını başlat", - "launch.tooltip": "Launch the selected target in the terminal window", + "launch.tooltip": "Seçili hedefi terminal penceresinde başlatın", "run.ctest.tests.tooltip": "CTest testlerini çalıştır", "run.ctest": "CTest'i çalıştır", "test.passing": "{0}/{1} test geçiriliyor", "tests.passing": "{0}/{1} test geçiriliyor", - "build.tooltip": "Build the selected target", + "build.tooltip": "Seçili hedefi derleyin", "build": "Derleme", "stop": "Durdur" } \ No newline at end of file diff --git a/i18n/trk/src/tree.i18n.json b/i18n/trk/src/tree.i18n.json index 00aa204cb..0f0360283 100644 --- a/i18n/trk/src/tree.i18n.json +++ b/i18n/trk/src/tree.i18n.json @@ -14,8 +14,8 @@ "item.render.issue": "Bu öğe işlenirken bir sorun oluştu. Bu bir hatadır", "empty.project": "Boş proje", "update.project.with.mismatch": "Eşleşmeyen ad özelliğine sahip projeyi güncelleştir", - "workspace.active": "Active Workspace", - "workspace": "Workspace", - "error.update.code.model.on.nonexist.folder": "Updating code model on folder that has not yet been loaded.", + "workspace.active": "Etkin Çalışma Alanı", + "workspace": "Çalışma alanı", + "error.update.code.model.on.nonexist.folder": "Henüz yüklenmeyen klasördeki kod modeli güncelleştiriliyor.", "error.rendering.children.nodes": "Alt düğümler işlenirken hata oluştu" } \ No newline at end of file From 9d693d7e1e8b9ddc6bdf86b9abc8179b3f7052d4 Mon Sep 17 00:00:00 2001 From: Bob Brown Date: Tue, 7 Jul 2020 10:23:19 -0700 Subject: [PATCH 12/26] Debian clang version not detected (#1331) --- src/kit.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/kit.ts b/src/kit.ts index c5844300e..67202553d 100644 --- a/src/kit.ts +++ b/src/kit.ts @@ -129,7 +129,7 @@ async function getClangVersion(binPath: string): Promise { return null; } const lines = exec.stderr.split('\n'); - const version_re = /^(?:Apple LLVM|Apple clang|clang) version ([^\s-]+)[\s-]/; + const version_re = /^(?:Apple LLVM|.*clang) version ([^\s-]+)[\s-]/; let version: string = ""; let fullVersion: string = ""; for (const line of lines) { From bc9fc00ebdf27fe55c8d04ed9632c568a45ba3ba Mon Sep 17 00:00:00 2001 From: Ethan Bailey Date: Tue, 7 Jul 2020 13:52:53 -0400 Subject: [PATCH 13/26] Add launchTargetFilename command (#1261) --- package.json | 1 + src/api.ts | 5 +++++ src/cmake-tools.ts | 12 ++++++++++++ src/extension.ts | 3 +++ .../successful-build/test/debugger.test.ts | 9 +++++++++ 5 files changed, 30 insertions(+) diff --git a/package.json b/package.json index 6ca097435..bed999f99 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "onCommand:cmake.launchTargetAll", "onCommand:cmake.launchTargetPath", "onCommand:cmake.launchTargetDirectory", + "onCommand:cmake.launchTargetFilename", "onCommand:cmake.buildType", "onCommand:cmake.buildDirectory", "onCommand:cmake.executableTargets", diff --git a/src/api.ts b/src/api.ts index 7fddb1174..bfc6b595a 100644 --- a/src/api.ts +++ b/src/api.ts @@ -289,6 +289,11 @@ export interface CMakeToolsAPI extends Disposable { */ launchTargetDirectory(): Thenable; + /** + * Get the filename of the active launch target + */ + launchTargetFilename(): Thenable; + /** * Get the selected build type */ diff --git a/src/cmake-tools.ts b/src/cmake-tools.ts index bd859fd0e..e86aa73ec 100644 --- a/src/cmake-tools.ts +++ b/src/cmake-tools.ts @@ -1184,6 +1184,18 @@ export class CMakeTools implements vscode.Disposable, api.CMakeToolsAPI { return path.dirname(targetPath); } + /** + * Implementation of `cmake.launchTargetFilename`. It just calls launchTargetPath and + * extracts the filename form the result. + */ + async launchTargetFilename(): Promise { + const targetPath = await this.launchTargetPath(); + if (targetPath === null) { + return null; + } + return path.basename(targetPath); + } + /** * Implementation of `cmake.buildType` */ diff --git a/src/extension.ts b/src/extension.ts index 6e3e0207a..d71d06dd7 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -887,6 +887,8 @@ class ExtensionManager implements vscode.Disposable { launchTargetDirectory(folder?: vscode.WorkspaceFolder | string) { return this.mapQueryCMakeTools(cmt => cmt.launchTargetDirectory(), folder); } + launchTargetFilename(folder?: vscode.WorkspaceFolder | string) { return this.mapQueryCMakeTools(cmt => cmt.launchTargetFilename(), folder); } + buildType(folder?: vscode.WorkspaceFolder | string) { return this.mapQueryCMakeTools(cmt => cmt.currentBuildType(), folder); } buildDirectory(folder?: vscode.WorkspaceFolder | string) { return this.mapQueryCMakeTools(cmt => cmt.buildDirectory(), folder); } @@ -1023,6 +1025,7 @@ async function setup(context: vscode.ExtensionContext, progress: ProgressHandle) 'quickStart', 'launchTargetPath', 'launchTargetDirectory', + 'launchTargetFilename', 'buildKit', 'buildType', 'buildDirectory', diff --git a/test/extension-tests/successful-build/test/debugger.test.ts b/test/extension-tests/successful-build/test/debugger.test.ts index b15706f63..68ef76b5d 100644 --- a/test/extension-tests/successful-build/test/debugger.test.ts +++ b/test/extension-tests/successful-build/test/debugger.test.ts @@ -53,6 +53,15 @@ suite('[Debug/Launch interface]', async () => { expect(await cmt.launchTargetDirectory()).to.be.eq(path.dirname(executablesTargets[0].path)); }); + test('Test launchTargetFilename for use in other extensions or launch.json', async () => { + const executablesTargets = await cmt.executableTargets; + expect(executablesTargets.length).to.be.not.eq(0); + + await cmt.setLaunchTargetByName(executablesTargets[0].name); + + expect(await cmt.launchTargetFilename()).to.be.eq(path.basename(executablesTargets[0].path)); + }); + test('Test build on launch (default)', async () => { testEnv.config.updatePartial({buildBeforeRun: undefined}); From c271903ac976661e6fc60e407ed8df2c6a10e84a Mon Sep 17 00:00:00 2001 From: SE2Dev Date: Mon, 13 Jul 2020 13:00:06 -0400 Subject: [PATCH 14/26] Fix i18n Typo (#1363) --- package.nls.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.nls.json b/package.nls.json index 9fb9f0d09..e37694868 100644 --- a/package.nls.json +++ b/package.nls.json @@ -67,7 +67,7 @@ "cmake-tools.configuration.cmake.ctestPath.description": "Path to CTest executable. If null, will be inferred from cmake.cmakePath (recommended to leave null).", "cmake-tools.configuration.cmake.ctest.parallelJobs.description": "The number of parallel test jobs. Use zero to use the value of cmake.parallelJobs.", "cmake-tools.configuration.cmake.parseBuildDiagnostics.description": "Parse compiler output for warnings and errors.", - "cmake-tools.configuration.cmake.enabledOutputParsers.description": "Output parsers to use. Supported parsers 'cmake', 'gcc', 'gnuld' for GNULD-style inker output, 'msvc' for Microsoft Visual C++, and 'ghs' for the Green Hills compiler with --no_wrap_diagnostics --brief_diagnostics.", + "cmake-tools.configuration.cmake.enabledOutputParsers.description": "Output parsers to use. Supported parsers 'cmake', 'gcc', 'gnuld' for GNULD-style linker output, 'msvc' for Microsoft Visual C++, and 'ghs' for the Green Hills compiler with --no_wrap_diagnostics --brief_diagnostics.", "cmake-tools.configuration.cmake.debugConfig.description": "The debug configuration to use when debugging a target.", "cmake-tools.configuration.cmake.debugConfig.symbolSearchPath.description": "Visual Studio debugger symbol search paths.", "cmake-tools.configuration.cmake.debugConfig.additionalSOLibSearchPath.description": "Paths for GDB or LLDB to search for .so files.", From eb5d0dd483702bb1b1d5a53d10f6db56b4f77e4c Mon Sep 17 00:00:00 2001 From: Bob Brown Date: Mon, 13 Jul 2020 16:31:54 -0700 Subject: [PATCH 15/26] Fix top crash - "Encoding not recognized: 'DOS-862' (searched as: 'dos862')" (#1367) --- package.json | 4 ++-- src/proc.ts | 2 +- yarn.lock | 29 ++++++++++++++++++----------- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index bed999f99..2d29d76e9 100644 --- a/package.json +++ b/package.json @@ -1603,7 +1603,7 @@ "typedoc": "^0.15.3", "typescript": "^3.7.2", "vscode": "^1.1.36", - "vscode-nls-dev": "^3.2.6", + "vscode-nls-dev": "^3.3.2", "webpack": "^4.39.2", "webpack-cli": "^3.3.7" }, @@ -1612,7 +1612,7 @@ "chokidar": "^3.3.0", "es6-promisify": "~5.0.0", "handlebars": "^4.5.3", - "iconv-lite": "^0.4.21", + "iconv-lite": "^0.6.2", "js-yaml": "^3.6.1", "json5": "^0.5.1", "open": "^6.4.0", diff --git a/src/proc.ts b/src/proc.ts index 6674c4bcd..356765233 100644 --- a/src/proc.ts +++ b/src/proc.ts @@ -161,7 +161,7 @@ export function execute(command: string, if (options.encoding) child.stdout.setEncoding(options.encoding); - const encoding = options.outputEncoding ? options.outputEncoding:'utf8'; + const encoding = options.outputEncoding && iconv.encodingExists(options.outputEncoding) ? options.outputEncoding : 'utf8'; result = new Promise(resolve => { if (child) { diff --git a/yarn.lock b/yarn.lock index b4bda4d08..3a080b3f8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2445,13 +2445,20 @@ https-proxy-agent@^2.2.1, https-proxy-agent@^2.2.4: agent-base "^4.3.0" debug "^3.1.0" -iconv-lite@^0.4.19, iconv-lite@^0.4.21: +iconv-lite@^0.4.19: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" + integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + ieee754@^1.1.4: version "1.1.13" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" @@ -4206,7 +4213,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -4908,10 +4915,10 @@ typescript@3.7.x, typescript@^3.7.2: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.5.tgz#0692e21f65fd4108b9330238aac11dd2e177a1ae" integrity sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw== -typescript@^2.6.2: - version "2.9.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" - integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w== +typescript@^3.9.5: + version "3.9.6" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.6.tgz#8f3e0198a34c3ae17091b35571d3afd31999365a" + integrity sha512-Pspx3oKAPJtjNwE92YS05HQoY7z2SFyOpHo9MqJor3BXAGNaPUs83CuVp9VISFkSjyRfiTpmKuAYGJB7S7hOxw== uglify-js@^3.1.4: version "3.7.5" @@ -5164,10 +5171,10 @@ vscode-extension-telemetry@^0.1.2: dependencies: applicationinsights "1.4.0" -vscode-nls-dev@^3.2.6: - version "3.3.1" - resolved "https://registry.yarnpkg.com/vscode-nls-dev/-/vscode-nls-dev-3.3.1.tgz#15fc03e0c9ca5a150abb838690d9554ac06f77e4" - integrity sha512-fug18D7CXb8pv8JoQ0D0JmZaIYDQoKLiyZxkAy5P8Cln/FwlNsdzwQILDph62EdGY5pvsJ2Jd1T5qgHAExe/tg== +vscode-nls-dev@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/vscode-nls-dev/-/vscode-nls-dev-3.3.2.tgz#f15e0b627f948224a96dc0288da3c3b9c6dfae81" + integrity sha512-/YJY/LegZ0jsWFd8BforDmXpwWKprM7L3rL0kLEvjQxOJw6qtmnoUJorLIv0ZXjebeyhI3mc8hjmQr479ykLIQ== dependencies: ansi-colors "^3.2.3" clone "^2.1.1" @@ -5177,7 +5184,7 @@ vscode-nls-dev@^3.2.6: iconv-lite "^0.4.19" is "^3.2.1" source-map "^0.6.1" - typescript "^2.6.2" + typescript "^3.9.5" vinyl "^2.1.0" xml2js "^0.4.19" yargs "^13.2.4" From a265d47e8fe83012b8696665d244b0d262804c26 Mon Sep 17 00:00:00 2001 From: Sergej Sawazki Date: Thu, 16 Jul 2020 00:20:55 +0200 Subject: [PATCH 16/26] Add output parser for Wind River Diab compiler (#1267) Co-authored-by: Sergej Sawazki --- package.json | 6 ++-- package.nls.json | 2 +- src/diagnostics/build.ts | 4 +++ src/diagnostics/diab.ts | 36 +++++++++++++++++++ test/unit-tests/diagnostics.test.ts | 54 +++++++++++++++++++++++++++++ 5 files changed, 99 insertions(+), 3 deletions(-) create mode 100644 src/diagnostics/diab.ts diff --git a/package.json b/package.json index 2d29d76e9..32998de1f 100644 --- a/package.json +++ b/package.json @@ -974,7 +974,8 @@ "gcc", "gnuld", "msvc", - "ghs" + "ghs", + "diab" ] }, "default": [ @@ -982,7 +983,8 @@ "gcc", "gnuld", "msvc", - "ghs" + "ghs", + "diab" ], "scope": "resource" }, diff --git a/package.nls.json b/package.nls.json index e37694868..6689b4167 100644 --- a/package.nls.json +++ b/package.nls.json @@ -67,7 +67,7 @@ "cmake-tools.configuration.cmake.ctestPath.description": "Path to CTest executable. If null, will be inferred from cmake.cmakePath (recommended to leave null).", "cmake-tools.configuration.cmake.ctest.parallelJobs.description": "The number of parallel test jobs. Use zero to use the value of cmake.parallelJobs.", "cmake-tools.configuration.cmake.parseBuildDiagnostics.description": "Parse compiler output for warnings and errors.", - "cmake-tools.configuration.cmake.enabledOutputParsers.description": "Output parsers to use. Supported parsers 'cmake', 'gcc', 'gnuld' for GNULD-style linker output, 'msvc' for Microsoft Visual C++, and 'ghs' for the Green Hills compiler with --no_wrap_diagnostics --brief_diagnostics.", + "cmake-tools.configuration.cmake.enabledOutputParsers.description": "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.", "cmake-tools.configuration.cmake.debugConfig.description": "The debug configuration to use when debugging a target.", "cmake-tools.configuration.cmake.debugConfig.symbolSearchPath.description": "Visual Studio debugger symbol search paths.", "cmake-tools.configuration.cmake.debugConfig.additionalSOLibSearchPath.description": "Paths for GDB or LLDB to search for .so files.", diff --git a/src/diagnostics/build.ts b/src/diagnostics/build.ts index cf637e251..1e8ebe2c4 100644 --- a/src/diagnostics/build.ts +++ b/src/diagnostics/build.ts @@ -11,6 +11,7 @@ import * as vscode from 'vscode'; import * as gcc from './gcc'; import * as ghs from './ghs'; +import * as diab from './diab'; import * as gnu_ld from './gnu-ld'; import * as mvsc from './msvc'; import {FileDiagnostic, RawDiagnosticParser} from './util'; @@ -20,6 +21,7 @@ export class Compilers { gcc = new gcc.Parser(); ghs = new ghs.Parser(); + diab = new diab.Parser(); gnuLD = new gnu_ld.Parser(); msvc = new mvsc.Parser(); } @@ -45,6 +47,7 @@ export class CompileOutputConsumer implements OutputConsumer { switch (p) { case 'warning': return vscode.DiagnosticSeverity.Warning; + case 'catastrophic error': case 'fatal error': case 'error': return vscode.DiagnosticSeverity.Error; @@ -60,6 +63,7 @@ export class CompileOutputConsumer implements OutputConsumer { GCC: this.compilers.gcc.diagnostics, MSVC: this.compilers.msvc.diagnostics, GHS: this.compilers.ghs.diagnostics, + DIAB: this.compilers.diab.diagnostics, link: this.compilers.gnuLD.diagnostics, }; const arrs = util.objectPairs(by_source).map(([source, diags]) => { diff --git a/src/diagnostics/diab.ts b/src/diagnostics/diab.ts new file mode 100644 index 000000000..cb2a831db --- /dev/null +++ b/src/diagnostics/diab.ts @@ -0,0 +1,36 @@ +/** + * Module for parsing Wind River Diab diagnostics + */ /** */ + + +import * as vscode from 'vscode'; + +import {oneLess, RawDiagnosticParser, FeedLineResult} from './util'; + +export const REGEX + = /^\"(.*)\",\s+(?:line\s+(\d+):\s+)?(info|warning|(?:|fatal |catastrophic )error)\s+\((.*)\):\s+(.*)$/; + +export class Parser extends RawDiagnosticParser { + doHandleLine(line: string) { + const mat = REGEX.exec(line); + if (!mat) { + // Nothing to see on this line of output... + return FeedLineResult.NotMine; + } + + const [full, file, lineno = '1', severity, code, message] = mat; + const column = '1'; + if (file && severity && message) { + return { + full, + file, + location: new vscode.Range(oneLess(lineno), oneLess(column), oneLess(lineno), 999), + severity, + code, + message, + related: [], + }; + } + return FeedLineResult.NotMine; + } +} diff --git a/test/unit-tests/diagnostics.test.ts b/test/unit-tests/diagnostics.test.ts index 4d070cf92..72384aa49 100644 --- a/test/unit-tests/diagnostics.test.ts +++ b/test/unit-tests/diagnostics.test.ts @@ -315,6 +315,60 @@ suite('Diagnostics', async () => { expect(path.win32.isAbsolute(diag.file)).to.be.true; }); + test('Parsing DIAB Diagnostics', () => { + const lines = [ + '"C:\\path\\source\\debug\\debug.c", line 631: warning (dcc:1518): variable i is never used' + ]; + feedLines(build_consumer, [], lines); + expect(build_consumer.compilers.diab.diagnostics).to.have.length(1); + const diag = build_consumer.compilers.diab.diagnostics[0]; + + expect(diag.location.start.line).to.eq(630); + expect(diag.location.start.character).to.eq(0); + expect(diag.message).to.eq('variable i is never used'); + expect(diag.file).to.eq('C:\\path\\source\\debug\\debug.c'); + expect(diag.code).to.eq('dcc:1518'); + expect(diag.severity).to.eq('warning'); + expect(path.win32.normalize(diag.file)).to.eq(diag.file); + expect(path.win32.isAbsolute(diag.file)).to.be.true; + }); + + test('Parsing DIAB Diagnostics catastrophic error', () => { + const lines = [ + '"C:\\path\\source\\debug\\debug.c", line 631: catastrophic error (etoa:5711): cannot open source file "../debug.h"' + ]; + feedLines(build_consumer, [], lines); + expect(build_consumer.compilers.diab.diagnostics).to.have.length(1); + const diag = build_consumer.compilers.diab.diagnostics[0]; + + expect(diag.location.start.line).to.eq(630); + expect(diag.location.start.character).to.eq(0); + expect(diag.message).to.eq('cannot open source file "../debug.h"'); + expect(diag.file).to.eq('C:\\path\\source\\debug\\debug.c'); + expect(diag.code).to.eq('etoa:5711'); + expect(diag.severity).to.eq('catastrophic error'); + expect(path.win32.normalize(diag.file)).to.eq(diag.file); + expect(path.win32.isAbsolute(diag.file)).to.be.true; + }); + + test('Parsing DIAB Diagnostics fatal error without line number', () => { + const lines = [ + '"C:\\path\\source\\debug\\debug.c", fatal error (etoa:1635): License error: FLEXlm error: License server machine is down or not responding.' + ]; + feedLines(build_consumer, [], lines); + expect(build_consumer.compilers.diab.diagnostics).to.have.length(1); + const diag = build_consumer.compilers.diab.diagnostics[0]; + + expect(diag.location.start.line).to.eq(0); + expect(diag.location.start.character).to.eq(0); + expect(diag.message).to.eq('License error: FLEXlm error: License server machine is down or not responding.'); + expect(diag.file).to.eq('C:\\path\\source\\debug\\debug.c'); + expect(diag.code).to.eq('etoa:1635'); + expect(diag.severity).to.eq('fatal error'); + expect(path.win32.normalize(diag.file)).to.eq(diag.file); + expect(path.win32.isAbsolute(diag.file)).to.be.true; + }); + test('No parsing Make errors', () => { const lines = [ `make[2]: *** [CMakeFiles/myApp.dir/build.make:87: CMakeFiles/myApp.dir/app.cpp.o] Error 1`, From 8fa4508026452f01d1861f8d566209b3f8f1eb5b Mon Sep 17 00:00:00 2001 From: Yonggang Luo Date: Thu, 16 Jul 2020 06:23:24 +0800 Subject: [PATCH 17/26] detecting gdb for msys2 mingw properly (#1338) --- src/debugger.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/debugger.ts b/src/debugger.ts index c1a350d4a..14177e678 100644 --- a/src/debugger.ts +++ b/src/debugger.ts @@ -5,6 +5,7 @@ import {createLogger} from './logging'; import * as nls from 'vscode-nls'; import * as path from 'path'; import * as vscode from 'vscode'; +import { fs } from './pr'; nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })(); const localize: nls.LocalizeFunc = nls.loadMessageBundle(); @@ -185,7 +186,13 @@ export async function getDebugConfigurationFromCache(cache: CMakeCache, target: const debugger_name = platform == 'darwin' ? 'lldb' : 'gdb'; const description = DEBUG_GEN[debugger_name]; const gcc_compiler_regex = /([cg]\+\+|g?cc)(?=[^\/\\]*$)/gi; - const gdb_debugger_path = debuggerPathOverride || compiler_path.replace(gcc_compiler_regex, description.miMode); + let gdb_debugger_path = debuggerPathOverride || compiler_path.replace(gcc_compiler_regex, description.miMode); + if (path.isAbsolute(gdb_debugger_path) && !await fs.exists(gdb_debugger_path)) { + gdb_debugger_path = path.join(path.dirname(compiler_path), description.miMode); + if (process.platform === 'win32') { + gdb_debugger_path = gdb_debugger_path + '.exe'; + } + } if (gdb_debugger_path.search(new RegExp(description.miMode)) != -1) { return description.createConfig(gdb_debugger_path, target); } From 43b19635b6d96ee4809350cb6c558c4d10370936 Mon Sep 17 00:00:00 2001 From: Bob Brown Date: Thu, 16 Jul 2020 10:02:52 -0700 Subject: [PATCH 18/26] Update contribute.md --- docs/contribute.md | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/docs/contribute.md b/docs/contribute.md index c0c287ea8..39f41a39d 100644 --- a/docs/contribute.md +++ b/docs/contribute.md @@ -8,21 +8,13 @@ Documentation for the code is kept within the code, and is extracted via `TypeDo ## Build the CMake Tools extension -As with most VS Code extensions, you'll need `Node.JS ` installed. +As with most VS Code extensions, you'll need `Node.JS ` installed. We use [yarn](https://yarnpkg.com/getting-started/install) to compile the code. The process is: -1. Install dependencies +1. Open the repo in VS Code -```bash -$ npm install -``` - -1. Compile the code: - -```bash -$ npm install -``` +2. Press F5 to build and run the extension ## Coding guidelines From d2e29b57863a1c9ecd298dd94b3838d2c663b134 Mon Sep 17 00:00:00 2001 From: Bob Brown Date: Thu, 16 Jul 2020 10:52:14 -0700 Subject: [PATCH 19/26] Update contribute.md --- docs/contribute.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/docs/contribute.md b/docs/contribute.md index 39f41a39d..0d7df5329 100644 --- a/docs/contribute.md +++ b/docs/contribute.md @@ -2,13 +2,9 @@ This article is for developers who want to contribute to the CMake Tools open source project. -## Developer Reference - -Documentation for the code is kept within the code, and is extracted via `TypeDoc`. - ## Build the CMake Tools extension -As with most VS Code extensions, you'll need `Node.JS ` installed. We use [yarn](https://yarnpkg.com/getting-started/install) to compile the code. +As with most VS Code extensions, you'll need [Node.JS](https://nodejs.org/en/) installed. We use [yarn](https://yarnpkg.com/getting-started/install) to compile the code. The process is: From f0ef42ce880eaaad61ea2eea27a98930330ec266 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Jul 2020 16:13:27 -0700 Subject: [PATCH 20/26] Bump lodash from 4.17.15 to 4.17.19 (#1368) --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 3a080b3f8..ae380d01f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3005,9 +3005,9 @@ lodash.uniq@^4.5.0: integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= lodash@^4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + version "4.17.19" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" + integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== lolex@^2.4.2: version "2.7.5" From 8faa5dad3f7a07f7ddc83f069e1ce1c88fee3a2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2020 10:38:26 -0700 Subject: [PATCH 21/26] Bump elliptic from 6.5.2 to 6.5.3 (#1391) Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.2 to 6.5.3. - [Release notes](https://github.com/indutny/elliptic/releases) - [Commits](https://github.com/indutny/elliptic/compare/v6.5.2...v6.5.3) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index ae380d01f..ca21aa6c5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -790,9 +790,9 @@ bluebird@^3.5.5: integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + version "4.11.9" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" + integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== brace-expansion@^1.1.7: version "1.1.11" @@ -1565,9 +1565,9 @@ ecc-jsbn@~0.1.1: safer-buffer "^2.1.0" elliptic@^6.0.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" - integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== + version "6.5.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" + integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== dependencies: bn.js "^4.4.0" brorand "^1.0.1" From 1def55f2ad3d866a57cfdee257b721911736a987 Mon Sep 17 00:00:00 2001 From: Hennadii Chernyshchyk Date: Sat, 22 Aug 2020 02:56:32 +0300 Subject: [PATCH 22/26] Set application run directory to executable path (#1397) --- src/cmake-tools.ts | 1 + src/debugger.ts | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/cmake-tools.ts b/src/cmake-tools.ts index e86aa73ec..4b036995b 100644 --- a/src/cmake-tools.ts +++ b/src/cmake-tools.ts @@ -1370,6 +1370,7 @@ export class CMakeTools implements vscode.Disposable, api.CMakeToolsAPI { } const termOptions: vscode.TerminalOptions = { name: 'CMake/Launch', + cwd: path.dirname(executable.path), }; if (process.platform == 'win32') { // Use cmd.exe on Windows diff --git a/src/debugger.ts b/src/debugger.ts index 14177e678..526476d4a 100644 --- a/src/debugger.ts +++ b/src/debugger.ts @@ -60,7 +60,7 @@ async function createGDBDebugConfiguration(debuggerPath: string, target: Executa type: 'cppdbg', name: `Debug ${target.name}`, request: 'launch', - cwd: '${workspaceFolder}', + cwd: path.dirname(target.path), args: [], MIMode: 'gdb', miDebuggerPath: debuggerPath, @@ -84,7 +84,7 @@ async function createLLDBDebugConfiguration(debuggerPath: string, target: Execut type: 'cppdbg', name: `Debug ${target.name}`, request: 'launch', - cwd: '${workspaceFolder}', + cwd: path.dirname(target.path), args: [], MIMode: 'lldb', miDebuggerPath: debuggerPath, @@ -97,7 +97,7 @@ function createMSVCDebugConfiguration(target: ExecutableTarget): Configuration { type: 'cppvsdbg', name: `Debug ${target.name}`, request: 'launch', - cwd: '${workspaceFolder}', + cwd: path.dirname(target.path), args: [], program: target.path }; From 3b2cca6c62643afc0a924ef7a5df35bb327ab32d Mon Sep 17 00:00:00 2001 From: xisui-MSFT <44103947+xisui-MSFT@users.noreply.github.com> Date: Fri, 11 Sep 2020 13:37:01 -0700 Subject: [PATCH 23/26] Message must bet set for vscode.Diagnostic in 1.49.0 (#1433) --- src/diagnostics/cmake.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/diagnostics/cmake.ts b/src/diagnostics/cmake.ts index 4da757018..03af3ce00 100644 --- a/src/diagnostics/cmake.ts +++ b/src/diagnostics/cmake.ts @@ -85,15 +85,14 @@ export class CMakeOutputConsumer implements OutputConsumer { const result = re.exec(line); if (result) { // We have encountered and error - const [_full, level, filename, linestr, command] = result; + const [full, level, filename, linestr, command] = result; // tslint:disable-next-line - _full; // unused const lineno = oneLess(linestr); const diagmap: {[k: string]: vscode.DiagnosticSeverity} = { Warning: vscode.DiagnosticSeverity.Warning, Error: vscode.DiagnosticSeverity.Error, }; - const vsdiag = new vscode.Diagnostic(new vscode.Range(lineno, 0, lineno, 9999), '', diagmap[level]); + const vsdiag = new vscode.Diagnostic(new vscode.Range(lineno, 0, lineno, 9999), full, diagmap[level]); vsdiag.source = `CMake (${command})`; vsdiag.relatedInformation = []; const filepath = util.resolvePath(filename, this.sourceDir); From 14589449f1033eb341a2dc46f5761d747665cbd9 Mon Sep 17 00:00:00 2001 From: "Bob Brown (DEVDIV)" Date: Fri, 11 Sep 2020 13:38:06 -0700 Subject: [PATCH 24/26] Update version number --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 32998de1f..bc67ea65b 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "cmake-tools", "displayName": "CMake Tools", "description": "Extended CMake support in Visual Studio Code", - "version": "1.4.1", + "version": "1.4.2", "publisher": "ms-vscode", "repository": { "type": "git", From 9f00be48843a45a0e54b31fcfe6f4597ff7c1db0 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Fri, 11 Sep 2020 17:04:26 -0700 Subject: [PATCH 25/26] Update dependencies. (#1426) * Update dependencies. --- package.json | 7 ++++-- yarn.lock | 68 ++++++++++++++++++++++------------------------------ 2 files changed, 34 insertions(+), 41 deletions(-) diff --git a/package.json b/package.json index bc67ea65b..7d5d34086 100644 --- a/package.json +++ b/package.json @@ -1629,8 +1629,11 @@ "resolutions": { "marked": "^0.7.0", "diff": "^3.5.0", - "handlebars": "^4.5.3", "https-proxy-agent": "^2.2.4", - "serialize-javascript": "^2.1.1" + "**/minimist": "^0.2.1", + "webpack/acorn": "^6.4.1", + "webpack/terser-webpack-plugin": "^1.4.5", + "yargs-parser": "^15.0.1", + "node-fetch": "^2.6.1" } } diff --git a/yarn.lock b/yarn.lock index ca21aa6c5..d278d13c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -375,10 +375,10 @@ acorn@5.X, acorn@^5.0.3: resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== -acorn@^6.2.1: - version "6.4.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" - integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== +acorn@^6.2.1, acorn@^6.4.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== agent-base@4, agent-base@^4.3.0: version "4.3.0" @@ -3226,21 +3226,16 @@ minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= +minimist@0.0.8, minimist@^0.2.1, minimist@^1.2.0, minimist@~0.0.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.2.1.tgz#827ba4e7593464e7c221e8c5bed930904ee2c455" + integrity sha512-GY8fANSrTMfBVfInqJAY41QkOM+upUTytK1jZ0c8+3HdHrJxBJ3rF5i9moClXTE8uUSnUo8cAsCoxDXvSY4DHg== -minimist@^1.2.0, minimist@^1.2.3: +minimist@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.3.tgz#3db5c0765545ab8637be71f333a104a965a9ca3f" integrity sha512-+bMdgqjMN/Z77a6NlY/I3U5LlRDbnmaAk6lDveAPKwSpcPM4tKAuYsvYF8xjhOPXhOYGe/73vVLVez5PW+jqhw== -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= - mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -3396,10 +3391,10 @@ nise@^1.3.3: lolex "^5.0.1" path-to-regexp "^1.7.0" -node-fetch@^2.3.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== +node-fetch@^2.3.0, node-fetch@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== node-libs-browser@^2.2.1: version "2.2.1" @@ -3953,7 +3948,7 @@ querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== @@ -4254,10 +4249,12 @@ semver@^6.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -serialize-javascript@^2.1.1, serialize-javascript@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" - integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" set-blocking@^2.0.0: version "2.0.0" @@ -4651,16 +4648,16 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -terser-webpack-plugin@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" - integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== +terser-webpack-plugin@^1.4.3, terser-webpack-plugin@^1.4.5: + version "1.4.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== dependencies: cacache "^12.0.2" find-cache-dir "^2.1.0" is-wsl "^1.1.0" schema-utils "^1.0.0" - serialize-javascript "^2.1.2" + serialize-javascript "^4.0.0" source-map "^0.6.1" terser "^4.1.2" webpack-sources "^1.4.0" @@ -5369,21 +5366,14 @@ yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yargs-parser@^13.1.0, yargs-parser@^13.1.1: - version "13.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" - integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== +yargs-parser@^13.1.0, yargs-parser@^13.1.1, yargs-parser@^15.0.1, yargs-parser@^5.0.0: + version "15.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" + integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" - integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= - dependencies: - camelcase "^3.0.0" - yargs@13.2.4: version "13.2.4" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" From c0724429920bb266510f6ae1be2e954d23317064 Mon Sep 17 00:00:00 2001 From: Bob Brown Date: Wed, 16 Sep 2020 14:40:40 -0700 Subject: [PATCH 26/26] update changelog for 1.4.2 (#1437) --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 25c458663..d74e0338e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # What's New? +## 1.4.2 +Improvements: +- Added new variable substitution command: `${command:cmake.launchTargetFilename}`. [#632](https://github.com/microsoft/vscode-cmake-tools/issues/632) [@ebai101](https://github.com/ebai101) +- Add output parser for Wind River Diab compiler. [PR #1267](https://github.com/microsoft/vscode-cmake-tools/issues/1267) [@ce3a](https://github.com/ce3a) +- Set application run directory to executable path. [#1395](https://github.com/microsoft/vscode-cmake-tools/issues/1395) [@Shatur95](https://github.com/Shatur95) + +Bug Fixes: +- Allow minor version of File API protocol to be greater than expected. [#1341](https://github.com/microsoft/vscode-cmake-tools/issues/1341) [@KyleFromKitware](https://github.com/KyleFromKitware) +- Fix high-hitting crash related to output stream encoding. [PR #1367](https://github.com/microsoft/vscode-cmake-tools/issues/1367) +- Fix high-hitting crash: "message must be set" introduced by VS Code 1.49.0. [#1432](https://github.com/microsoft/vscode-cmake-tools/issues/1432) +- Fix detection of clang 10 on Debian. [#1330](https://github.com/microsoft/vscode-cmake-tools/issues/1330) +- Detect gdb for msys2 MinGW properly. [PR #1338](https://github.com/microsoft/vscode-cmake-tools/issues/1338) [@lygstate](https://github.com/lygstate) + ## 1.4.1 Bug Fixes: - VS environment not set correctly. [#1243](https://github.com/microsoft/vscode-cmake-tools/issues/1243)