Skip to content

Commit 42e65c1

Browse files
authored
Merge pull request #1864 from MicrosoftDocs/master
3/22/2019 AM Publish
2 parents c1f646c + 48b0ac5 commit 42e65c1

15 files changed

+62
-58
lines changed

docs/build/arm64-windows-abi-conventions.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: "Overview of ARM64 ABI conventions"
3-
ms.date: "07/11/2018"
3+
ms.date: "03/22/2019"
44
---
55
# Overview of ARM64 ABI conventions
66

@@ -185,7 +185,7 @@ For return-by-value that cannot be passed via registers, the caller shall reserv
185185

186186
Following the ABI put forth by ARM, the stack must remain 16-byte aligned at all times. AArch64 contains a hardware feature that generates stack alignment faults whenever an SP-relative load or store is done and the SP is not 16-byte aligned. Windows runs with this feature enabled at all times.
187187

188-
Functions which allocate 4k or more worth of stack must ensure that each page prior to the final page is touched in order, thus ensuring no code can “leap over” the guard pages that Windows uses to expand the stack. Typically this is done by the `__chkstk` helper, which has a custom calling convention that passes the total stack allocation divided by 16 in x8.
188+
Functions which allocate 4k or more worth of stack must ensure that each page prior to the final page is touched in order, thus ensuring no code can “leap over” the guard pages that Windows uses to expand the stack. Typically this is done by the `__chkstk` helper, which has a custom calling convention that passes the total stack allocation divided by 16 in x15.
189189

190190
## Red zone
191191

docs/build/cmake-projects-in-visual-studio.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ CMake is a cross-platform, open-source tool for defining build processes that ru
1010

1111
In Visual Studio 2015, Visual Studio users can use a [CMake generator](https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html) to generate MSBuild project files, which the IDE then consumes for IntelliSense, browsing, and compilation.
1212

13-
Visual Studio 2017 introduces rich support for CMake, including [cross-platform CMake projects](../linux/cmake-linux-project.md). The **Visual C++ Tools for CMake** component uses the **Open Folder** feature to enable the IDE to consume CMake project files (such as CMakeLists.txt) directly for the purposes of IntelliSense and browsing. Both Ninja and Visual Studio generators are supported. If you use a Visual Studio generator, a temporary project file is generated and passed to msbuild.exe, but is never loaded for IntelliSense or browsing purposes. You can import an existing CMake cache; Visual Studio automatically extracts customized variables and creates a pre-populated `CMakeSettings.json` file.
13+
Visual Studio 2017 introduces rich support for CMake, including [cross-platform CMake projects](../linux/cmake-linux-project.md). The **Visual C++ Tools for CMake** component uses the **Open Folder** feature to enable the IDE to consume CMake project files (such as CMakeLists.txt) directly for the purposes of IntelliSense and browsing. Both Ninja and Visual Studio generators are supported. If you use a Visual Studio generator, a temporary project file is generated and passed to msbuild.exe, but is never loaded for IntelliSense or browsing purposes. You can import an existing CMake cache; Visual Studio automatically extracts customized variables and creates a pre-populated **CMakeSettings.json** file.
1414

1515
## Installation
1616

@@ -40,18 +40,18 @@ You can also view your projects organized logically by targets. Choose **Targets
4040

4141
![CMake targets view button](media/cmake-targets-view.png)
4242

43-
Visual Studio uses a file called `CMakeSettings.json` to store environment variables or command-line options for Cmake.exe. `CMakeSettings.json` also enables you to define and store multiple CMake build configurations and conveniently switch between them in the IDE.
43+
Visual Studio uses a file called **CMakeSettings.json** to store environment variables or command-line options for Cmake.exe. **CMakeSettings.json** also enables you to define and store multiple CMake build configurations and conveniently switch between them in the IDE.
4444

45-
Otherwise, use the `CMakeLists.txt` just as you would in any CMake project to specify source files, find libraries, set compiler and linker options, and specify other build system related information.
45+
Otherwise, use the **CMakeLists.txt** just as you would in any CMake project to specify source files, find libraries, set compiler and linker options, and specify other build system related information.
4646

47-
If you need to pass arguments to an executable at debug time, you can use another file called `launch.vs.json`. In some scenarios, Visual Studio will automatically generate these files; you can edit them manually. You can also create the file yourself.
47+
If you need to pass arguments to an executable at debug time, you can use another file called **launch.vs.json**. In some scenarios, Visual Studio will automatically generate these files; you can edit them manually. You can also create the file yourself.
4848

4949
> [!NOTE]
50-
> For other kinds of Open Folder projects, two additional JSON files are used: `CppProperties.json` and `tasks.vs.json`. Neither of these are relevant for CMake projects.
50+
> For other kinds of Open Folder projects, two additional JSON files are used: **CppProperties.json** and **tasks.vs.json**. Neither of these are relevant for CMake projects.
5151
5252
## Import an existing cache
5353

54-
When you import an existing CMakeCache.txt file, Visual Studio automatically extracts customized variables and creates a pre-populated [ `CMakeSettings.json`](#cmake_settings) file based on them. The original cache is not modified in any way and can still be used from the command line or with whatever tool or IDE was used to generate it. The new `CMakeSettings.json` file is placed alongside the project’s root CMakeLists.txt. Visual Studio generates a new cache based the settings file. You can override automatic cache generation in the **Tools | Options | CMake | General** dialog.
54+
When you import an existing CMakeCache.txt file, Visual Studio automatically extracts customized variables and creates a pre-populated [ **CMakeSettings.json**](#cmake_settings) file based on them. The original cache is not modified in any way and can still be used from the command line or with whatever tool or IDE was used to generate it. The new **CMakeSettings.json** file is placed alongside the project’s root CMakeLists.txt. Visual Studio generates a new cache based the settings file. You can override automatic cache generation in the **Tools | Options | CMake | General** dialog.
5555

5656
Not everything in the cache is imported. Properties such as the generator and the location of the compilers are replaced with defaults that are known to work well with the IDE.
5757

@@ -81,7 +81,7 @@ To build a CMake project, you have these choices:
8181

8282
![CMake build menu command](media/cmake-build-menu.png "CMake build command menu")
8383

84-
You can customize build configurations, environment variables, command line arguments, and other settings without modifying the CMakeLists.txt file by using the `CMakeSettings.json` file. For more information, see [Customize CMake settings](customize-cmake-settings.md).
84+
You can customize build configurations, environment variables, command line arguments, and other settings without modifying the CMakeLists.txt file by using the **CMakeSettings.json** file. For more information, see [Customize CMake settings](customize-cmake-settings.md).
8585

8686
As you would expect, build results are shown in the **Output Window** and **Error List**.
8787

@@ -97,7 +97,7 @@ To debug a CMake project, choose the desired configuration and press **F5**, or
9797

9898
The **Run** or **F5** commands first build the project if changes have been made since the previous build.
9999

100-
You can customize a CMake debugging session by setting properties in the `launch.vs.json` file. For more information, see [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md).
100+
You can customize a CMake debugging session by setting properties in the **launch.vs.json** file. For more information, see [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md).
101101

102102

103103
## Editing CMakeLists.txt files
@@ -113,13 +113,13 @@ As soon as you save the file, the configuration step automatically runs again an
113113

114114
## CMake configure step
115115

116-
When significant changes are made to the `CMakeSettings.json` or to CMakeLists.txt files, Visual Studio automatically reruns the CMake configure step. If the configure step finishes without errors, the information that is collected is available in C++ IntelliSense and language services and also in build and debug operations.
116+
When significant changes are made to the **CMakeSettings.json** or to CMakeLists.txt files, Visual Studio automatically reruns the CMake configure step. If the configure step finishes without errors, the information that is collected is available in C++ IntelliSense and language services and also in build and debug operations.
117117

118118
When multiple CMake projects use the same CMake configuration name (for example, x86-Debug), all of them are configured and built (in their own build root folder) when that configuration is selected. You can debug the targets from all of the CMake projects that participate in that CMake configuration.
119119

120120
![CMake Build Only menu item](media/cmake-build-only.png "CMake Build Only menu item")
121121

122-
To limit builds and debug sessions to a subset of the projects in the workspace, create a new configuration with a unique name in the `CMakeSettings.json` file and apply it to those projects only. When that configuration is selected, the IntelliSense and build and debug commands are enabled only for those specified projects.
122+
To limit builds and debug sessions to a subset of the projects in the workspace, create a new configuration with a unique name in the **CMakeSettings.json** file and apply it to those projects only. When that configuration is selected, the IntelliSense and build and debug commands are enabled only for those specified projects.
123123

124124
## Troubleshooting CMake cache errors
125125

docs/build/cmakesettings-reference.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ ms.assetid: 444d50df-215e-4d31-933a-b41841f186f8
66
---
77
# CMakeSettings.json schema reference
88

9-
The `cmakesettings.json` file contains information that specifies how Visual Studio should interact with CMake to build a project for a specified platform. Use this file to store information such as environment variables or arguments for the cmake.exe environment .
9+
The **cmakesettings.json**` file contains information that specifies how Visual Studio should interact with CMake to build a project for a specified platform. Use this file to store information such as environment variables or arguments for the cmake.exe environment .
1010

1111
## Environments
1212

docs/build/configure-cmake-debugging-sessions.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: "Configure CMake debugging sessions in Visual Studio"
3-
ms.date: "03/05/2019"
3+
ms.date: "03/21/2019"
44
helpviewer_keywords: ["CMake debugging"]
55
---
66
# Configure CMake debugging sessions
@@ -13,7 +13,7 @@ You can also start a debug session from the CMake menus.
1313

1414
## Customize debugger settings
1515

16-
To customize the debugger settings for any executable CMake target in your project, right-click on the specific CMakeLists.txt file and select **Debug and Launch Settings**. When you select a CMake target in the submenu, a file called `launch.vs.json` is created. This file is pre-populated with information about the CMake target you have selected and allows you to specify additional parameters such as program arguments or debugger type. To reference any key in a `CMakeSettings.json` file, preface it with `cmake.` in `launch.vs.json`. The following example shows a simple `launch.vs.json` file that pulls in the value of the `remoteCopySources` key in the `CMakeSettings.json` file for the currently selected configuration:
16+
To customize the debugger settings for any executable CMake target in your project, right-click on the specific CMakeLists.txt file and select **Debug and Launch Settings**. (Or select a target in **Targets View** in **Solution Explorer**.) When you select a CMake target in the submenu, a file called **launch.vs.json** is created. This file is pre-populated with information about the CMake target you have selected and allows you to specify additional parameters such as program arguments or debugger type. To reference any key in a **CMakeSettings.json** file, preface it with `cmake.` in **launch.vs.json**. The following example shows a simple **launch.vs.json** file that pulls in the value of the `remoteCopySources` key in the **CMakeSettings.json** file for the currently selected configuration:
1717

1818
```json
1919
{
@@ -31,11 +31,11 @@ To customize the debugger settings for any executable CMake target in your proje
3131
}
3232
```
3333

34-
As soon as you save the `launch.vs.json` file, an entry is created in the **Startup Item** dropdown with the new name. By editing the `launch.vs.json` file, you can create as many debug configurations as you like for any number of CMake targets.
34+
As soon as you save the **launch.vs.json** file, an entry is created in the **Startup Item** dropdown with the new name. By editing the **launch.vs.json** file, you can create as many debug configurations as you like for any number of CMake targets.
3535

3636
## Support for CMakeSettings variables
3737

38-
`Launch.vs.json` supports variables that are declared in `CMakeSettings.json` (see below) and that are applicable to the currently-selected configuration. It also has a key named `currentDir`, which sets the current directory of the launching app:
38+
**Launch.vs.json** supports variables that are declared in **CMakeSettings.json** (see below) and that are applicable to the currently-selected configuration. It also has a key named `currentDir`, which sets the current directory of the launching app:
3939

4040
```json
4141
{

docs/build/cppproperties-schema-reference.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: "CppProperties.json schema reference"
3-
ms.date: "03/05/2019"
3+
ms.date: "03/21/2019"
44
helpviewer_keywords: ["CMake in Visual C++"]
55
---
66

@@ -109,7 +109,9 @@ A configuration may have any of the following properties:
109109
|`compilerSwitches`|One or more additional switches that can influence IntelliSense behavior|
110110
|`forcedInclude`|Header to be automatically included in every compilation unit (maps to /FI for MSVC or -include for clang)|
111111
|`undefines`|The list of macros to be undefined (maps to /U for MSVC)|
112-
|`intelliSenseMode`|The IntelliSense engine to be used. You can specify the architecture specific variants for MSVC, gcc or Clang:<br/><br/>- msvc-x86 (default)<br/>- msvc-x64<br/>- msvc-arm<br/>- windows-clang-x86<br/>- windows-clang-x64<br/>- windows-clang-arm<br/>- Linux-x64<br/>- Linux-x86<br/>- Linux-arm<br/>- gccarm|
112+
|`intelliSenseMode`|The IntelliSense engine to be used. You can specify the architecture specific variants for MSVC, gcc or Clang:<br/><br/>- windows-msvc-x86 (default)<br/>- windows-msvc-x64<br/>- msvc-arm<br/>- windows-clang-x86<br/>- windows-clang-x64<br/>- windows-clang-arm<br/>- Linux-x64<br/>- Linux-x86<br/>- Linux-arm<br/>- gccarm|
113+
114+
Note: The values `msvc-x86` and `msvc-x64` are supported for legacy reasons only. Please use the `windows-msvc*` variants.
113115

114116
## Custom configurations
115117

@@ -180,7 +182,7 @@ You can define custom environment variables in `CppProperties.json` either globa
180182
"${env.INCLUDE}"
181183
],
182184
"defines": [ "WIN32", "_DEBUG", "UNICODE", "_UNICODE" ],
183-
"intelliSenseMode": "msvc-x86"
185+
"intelliSenseMode": "windows-msvc-x86"
184186
},
185187
{
186188
"inheritEnvironments": [
@@ -193,7 +195,7 @@ You can define custom environment variables in `CppProperties.json` either globa
193195
"${env.INCLUDE}"
194196
],
195197
"defines": [ "WIN32", "_DEBUG", "UNICODE", "_UNICODE" ],
196-
"intelliSenseMode": "msvc-x64"
198+
"intelliSenseMode": "windows-msvc-x64"
197199
}
198200
]
199201
}
@@ -221,7 +223,7 @@ You can also define an **environments** property inside a configuration, so that
221223
"${env.INCLUDE}"
222224
],
223225
"defines": [ "WIN32", "_DEBUG", "UNICODE", "_UNICODE" ],
224-
"intelliSenseMode": "msvc-x86"
226+
"intelliSenseMode": "windows-msvc-x86"
225227
},
226228
{
227229
"environments": [
@@ -240,7 +242,7 @@ You can also define an **environments** property inside a configuration, so that
240242
"${env.INCLUDE}"
241243
],
242244
"defines": [ "WIN32", "_DEBUG", "UNICODE", "_UNICODE" ],
243-
"intelliSenseMode": "msvc-x64"
245+
"intelliSenseMode": "windows-msvc-x64"
244246
}
245247
]
246248
}

docs/build/open-folder-projects-cpp.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: "Open Folder support for C++ build systems in Visual Studio"
3-
ms.date: "01/21/2019"
3+
ms.date: "03/21/2019"
44
helpviewer_keywords: ["Open Folder Projects in Visual C++"]
55
ms.assetid: abd1985e-3717-4338-9e80-869db5435175
66
---
@@ -43,7 +43,7 @@ IntelliSense and browsing behavior partly depends on the active build configurat
4343
"includePath": [ "include" ],
4444
"defines": [ "_DEBUG" ],
4545
"compilerSwitches": "/std:c++17",
46-
"intelliSenseMode": "msvc-x64",
46+
"intelliSenseMode": "windows-msvc-x64",
4747
"forcedInclude": [ "pch.h" ],
4848
"undefines": []
4949
}
@@ -58,7 +58,7 @@ You can automate build scripts or any other external operations on the files you
5858

5959
![Open Folder Configure Tasks](media/open-folder-config-tasks.png)
6060

61-
This creates (or opens) the `tasks.vs.json` file in the .vs folder which Visual Studio creates in your root project folder. You can define any arbitrary task in this file and then invoke it from the **Solution Explorer** context menu. The following example shows a tasks.vs.json file that defines a single task. `taskName` defines the name that appears in the context menu. `appliesTo` defines which files the command can be performed on. The `command` property refers to the COMSPEC environment variable, which identifies the path for the console (cmd.exe on Windows). You can also reference environment variables that are declared in CppProperties.json or CMakeSettings.json. The `args` property specifies the command line to be invoked. The `${file}` macro retrieves the selected file in **Solution Explorer**. The following example will display the filename of the currently selected .cpp file.
61+
This creates (or opens) the **tasks.vs.json** file in the .vs folder which Visual Studio creates in your root project folder. You can define any arbitrary task in this file and then invoke it from the **Solution Explorer** context menu. The following example shows a tasks.vs.json file that defines a single task. `taskName` defines the name that appears in the context menu. `appliesTo` defines which files the command can be performed on. The `command` property refers to the COMSPEC environment variable, which identifies the path for the console (cmd.exe on Windows). You can also reference environment variables that are declared in CppProperties.json or CMakeSettings.json. The `args` property specifies the command line to be invoked. The `${file}` macro retrieves the selected file in **Solution Explorer**. The following example will display the filename of the currently selected .cpp file.
6262

6363
```json
6464
{
@@ -81,7 +81,7 @@ For more information, see [Tasks.vs.json schema reference](tasks-vs-json-schema-
8181

8282
### Configure debugging parameters with launch.vs.json
8383

84-
To customize your program’s command line arguments, right-click on the executable in **Solution Explorer** and select **Debug and Launch Settings**. This will open an existing `launch.vs.json` file, or if none exists, it will create a new file prepopulated with the information about the program you have selected.
84+
To customize your program’s command line arguments, right-click on the executable in **Solution Explorer** and select **Debug and Launch Settings**. This will open an existing **launch.vs.json** file, or if none exists, it will create a new file prepopulated with the information about the program you have selected.
8585

8686
To specify additional arguments, just add them in the `args` JSON array as shown in the following example:
8787

0 commit comments

Comments
 (0)