You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/build/arm64-windows-abi-conventions.md
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
title: "Overview of ARM64 ABI conventions"
3
-
ms.date: "07/11/2018"
3
+
ms.date: "03/22/2019"
4
4
---
5
5
# Overview of ARM64 ABI conventions
6
6
@@ -185,7 +185,7 @@ For return-by-value that cannot be passed via registers, the caller shall reserv
185
185
186
186
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.
187
187
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.
Copy file name to clipboardExpand all lines: docs/build/cmake-projects-in-visual-studio.md
+10-10Lines changed: 10 additions & 10 deletions
Original file line number
Diff line number
Diff line change
@@ -10,7 +10,7 @@ CMake is a cross-platform, open-source tool for defining build processes that ru
10
10
11
11
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.
12
12
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.
14
14
15
15
## Installation
16
16
@@ -40,18 +40,18 @@ You can also view your projects organized logically by targets. Choose **Targets
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.
44
44
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.
46
46
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.
48
48
49
49
> [!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.
51
51
52
52
## Import an existing cache
53
53
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.
55
55
56
56
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.
57
57
@@ -81,7 +81,7 @@ To build a CMake project, you have these choices:
81
81
82
82

83
83
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).
85
85
86
86
As you would expect, build results are shown in the **Output Window** and **Error List**.
87
87
@@ -97,7 +97,7 @@ To debug a CMake project, choose the desired configuration and press **F5**, or
97
97
98
98
The **Run** or **F5** commands first build the project if changes have been made since the previous build.
99
99
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).
101
101
102
102
103
103
## Editing CMakeLists.txt files
@@ -113,13 +113,13 @@ As soon as you save the file, the configuration step automatically runs again an
113
113
114
114
## CMake configure step
115
115
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.
117
117
118
118
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.
119
119
120
120

121
121
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.
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 .
Copy file name to clipboardExpand all lines: docs/build/configure-cmake-debugging-sessions.md
+4-4Lines changed: 4 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
title: "Configure CMake debugging sessions in Visual Studio"
3
-
ms.date: "03/05/2019"
3
+
ms.date: "03/21/2019"
4
4
helpviewer_keywords: ["CMake debugging"]
5
5
---
6
6
# Configure CMake debugging sessions
@@ -13,7 +13,7 @@ You can also start a debug session from the CMake menus.
13
13
14
14
## Customize debugger settings
15
15
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:
17
17
18
18
```json
19
19
{
@@ -31,11 +31,11 @@ To customize the debugger settings for any executable CMake target in your proje
31
31
}
32
32
```
33
33
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.
35
35
36
36
## Support for CMakeSettings variables
37
37
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:
Copy file name to clipboardExpand all lines: docs/build/cppproperties-schema-reference.md
+8-6Lines changed: 8 additions & 6 deletions
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
title: "CppProperties.json schema reference"
3
-
ms.date: "03/05/2019"
3
+
ms.date: "03/21/2019"
4
4
helpviewer_keywords: ["CMake in Visual C++"]
5
5
---
6
6
@@ -109,7 +109,9 @@ A configuration may have any of the following properties:
109
109
|`compilerSwitches`|One or more additional switches that can influence IntelliSense behavior|
110
110
|`forcedInclude`|Header to be automatically included in every compilation unit (maps to /FI for MSVC or -include for clang)|
111
111
|`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.
113
115
114
116
## Custom configurations
115
117
@@ -180,7 +182,7 @@ You can define custom environment variables in `CppProperties.json` either globa
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.
62
62
63
63
```json
64
64
{
@@ -81,7 +81,7 @@ For more information, see [Tasks.vs.json schema reference](tasks-vs-json-schema-
81
81
82
82
### Configure debugging parameters with launch.vs.json
83
83
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.
85
85
86
86
To specify additional arguments, just add them in the `args` JSON array as shown in the following example:
0 commit comments