Skip to content

Commit aa3921e

Browse files
author
mikeblome
committed
more edits
1 parent cc64cdf commit aa3921e

6 files changed

Lines changed: 367 additions & 21 deletions

docs/ide/TOC.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
# [CMake projects](cmake-tools-for-visual-cpp.md)
1515
## [Customize CMake settings](customize-cmake-settings.md)
1616
## [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md)
17+
## [CMake predefined configuration schema reference](cmake-predefined-configuration-reference.md)
1718
# [MSBuild Projects](creating-and-managing-visual-cpp-projects.md)
1819
## [Project Types in Visual C++](visual-cpp-project-types.md)
1920
## [Add New Item Templates in Visual C++](using-visual-cpp-add-new-item-templates.md)
Lines changed: 340 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,340 @@
1+
---
2+
title: "CMake predefined configuration reference"
3+
ms.description: "Visual Studio provides several predefined build configurations for CMake projects on Linux, Windows, ARM, and IoT."
4+
ms.date: "11/13/2018"
5+
helpviewer_keywords: ["CMake redefined configurations"]
6+
---
7+
8+
# CMake predefined build configurations
9+
10+
In a CMake project, build configurations are stored in a CMakeSettings.json file. When you choose **Manage Configurations** from the build configuration dropdown in the main toolbar, a dialog appears that shows the default CMake configurations available in Visual Studio:
11+
- x86 Debug
12+
- x86 Release
13+
- x64 Debug
14+
- x64 Release
15+
- Linux-Debug
16+
- Linux-Release
17+
- IoT Debug
18+
- IoT Release
19+
- MinGW Debug
20+
- MinGW Release
21+
22+
When you choose a configuration, it is added to the CMakeSettings.json file in the project's root folder. You can then use it to build your project.
23+
24+
25+
## Linux predefined build configurations:
26+
27+
```json
28+
{
29+
"name": "Linux-Debug",
30+
"generator": "Unix Makefiles",
31+
"remoteMachineName": "user@host",
32+
"configurationType": "Debug",
33+
"remoteCMakeListsRoot": "/var/tmp/src/${workspaceHash}/${name}",
34+
"cmakeExecutable": "/usr/local/bin/cmake",
35+
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
36+
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
37+
"remoteBuildRoot": "/var/tmp/build/${workspaceHash}/build/${name}",
38+
"remoteInstallRoot": "/var/tmp/build/${workspaceHash}/install/${name}",
39+
"remoteCopySources": true,
40+
"remoteCopySourcesOutputVerbosity": "Normal",
41+
"remoteCopySourcesConcurrentCopies": "10",
42+
"remoteCopySourcesMethod": "rsync",
43+
"remoteCopySourcesExclusionList": [
44+
".vs",
45+
".git"
46+
],
47+
"rsyncCommandArgs": "-t --delete --delete-excluded",
48+
"remoteCopyBuildOutput": false,
49+
"cmakeCommandArgs": "",
50+
"buildCommandArgs": "",
51+
"ctestCommandArgs": "",
52+
"inheritEnvironments": [
53+
"linux_x64"
54+
]
55+
}
56+
57+
{
58+
"name": "Linux-Release",
59+
"generator": "Unix Makefiles",
60+
"remoteMachineName": "${defaultRemoteMachineName}",
61+
"configurationType": "RelWithDebInfo",
62+
"remoteCMakeListsRoot": "/var/tmp/src/${workspaceHash}/${name}",
63+
"cmakeExecutable": "/usr/local/bin/cmake",
64+
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
65+
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
66+
"remoteBuildRoot": "/var/tmp/build/${workspaceHash}/build/${name}",
67+
"remoteInstallRoot": "/var/tmp/build/${workspaceHash}/install/${name}",
68+
"remoteCopySources": true,
69+
"remoteCopySourcesOutputVerbosity": "Normal",
70+
"remoteCopySourcesConcurrentCopies": "10",
71+
"remoteCopySourcesMethod": "rsync",
72+
"remoteCopySourcesExclusionList": [
73+
".vs",
74+
".git"
75+
],
76+
"rsyncCommandArgs": "-t --delete --delete-excluded",
77+
"remoteCopyBuildOutput": false,
78+
"cmakeCommandArgs": "",
79+
"buildCommandArgs": "",
80+
"ctestCommandArgs": "",
81+
"inheritEnvironments": [
82+
"linux_x64"
83+
]
84+
},
85+
```
86+
87+
88+
You can use these optional settings for more control:
89+
90+
```json
91+
{
92+
"remotePreBuildCommand": "",
93+
"remotePreGenerateCommand": "",
94+
"remotePostBuildCommand": "",
95+
}
96+
```
97+
98+
These options allow you to run commands on the remote system before and after building, and before CMake generation. The values can be any command that is valid on the remote system. The output is piped back to Visual Studio.
99+
100+
## IoT predefined build configurations
101+
102+
```json
103+
{
104+
"name": "IoT-Debug",
105+
"generator": "Ninja",
106+
"configurationType": "Debug",
107+
"inheritEnvironments": [
108+
"gcc-arm"
109+
],
110+
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
111+
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
112+
"cmakeCommandArgs": "",
113+
"buildCommandArgs": "-v",
114+
"ctestCommandArgs": "",
115+
"intelliSenseMode": "linux-gcc-arm",
116+
"variables": [
117+
{
118+
"name": "CMAKE_C_COMPILER",
119+
"value": "arm-none-eabi-gcc.exe"
120+
},
121+
{
122+
"name": "CMAKE_CXX_COMPILER",
123+
"value": "arm-none-eabi-g++.exe"
124+
},
125+
{
126+
"name": "CMAKE_C_FLAGS",
127+
"value": "-nostartfiles"
128+
},
129+
{
130+
"name": "CMAKE_CXX_FLAGS",
131+
"value": "-nostartfiles -fno-rtti -fno-exceptions"
132+
},
133+
{
134+
"name": "CMAKE_CXX_STANDARD",
135+
"value": "14"
136+
},
137+
{
138+
"name": "CMAKE_SYSTEM_NAME",
139+
"value": "Generic"
140+
},
141+
{
142+
"name": "CMAKE_SYSTEM_PROCESSOR",
143+
"value": "arm"
144+
}
145+
]
146+
},
147+
{
148+
"name": "IoT-Release",
149+
"generator": "Ninja",
150+
"configurationType": "Release",
151+
"inheritEnvironments": [
152+
"gcc-arm"
153+
],
154+
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
155+
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
156+
"cmakeCommandArgs": "",
157+
"buildCommandArgs": "-v",
158+
"ctestCommandArgs": "",
159+
"intelliSenseMode": "linux-gcc-arm",
160+
"variables": [
161+
{
162+
"name": "CMAKE_C_COMPILER",
163+
"value": "arm-none-eabi-gcc.exe"
164+
},
165+
{
166+
"name": "CMAKE_CXX_COMPILER",
167+
"value": "arm-none-eabi-g++.exe"
168+
},
169+
{
170+
"name": "CMAKE_C_FLAGS",
171+
"value": "-nostartfiles"
172+
},
173+
{
174+
"name": "CMAKE_CXX_FLAGS",
175+
"value": "-nostartfiles -fno-rtti -fno-exceptions"
176+
},
177+
{
178+
"name": "CMAKE_CXX_STANDARD",
179+
"value": "14"
180+
},
181+
{
182+
"name": "CMAKE_SYSTEM_NAME",
183+
"value": "Generic"
184+
},
185+
{
186+
"name": "CMAKE_SYSTEM_PROCESSOR",
187+
"value": "arm"
188+
}
189+
]
190+
}
191+
```
192+
193+
## MinGW predefined build configurations
194+
195+
```json
196+
{
197+
"environments": [
198+
{
199+
"MINGW64_ROOT": "C:\\msys64\\mingw64",
200+
"BIN_ROOT": "${env.MINGW64_ROOT}\\bin",
201+
"FLAVOR": "x86_64-w64-mingw32",
202+
"TOOLSET_VERSION": "7.3.0",
203+
"PATH": "${env.MINGW64_ROOT}\\bin;${env.MINGW64_ROOT}\\..\\usr\\local\\bin;${env.MINGW64_ROOT}\\..\\usr\\bin;${env.MINGW64_ROOT}\\..\\bin;${env.PATH}",
204+
"INCLUDE": "${env.INCLUDE};${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION};${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\tr1;${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\${env.FLAVOR}",
205+
"environment": "mingw_64"
206+
}
207+
],
208+
"name": "Mingw64-Debug",
209+
"generator": "Ninja",
210+
"configurationType": "Debug",
211+
"inheritEnvironments": [
212+
"mingw_64"
213+
],
214+
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
215+
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
216+
"cmakeCommandArgs": "",
217+
"buildCommandArgs": "-v",
218+
"ctestCommandArgs": "",
219+
"intelliSenseMode": "linux-gcc-x64",
220+
"variables": [
221+
{
222+
"name": "CMAKE_C_COMPILER",
223+
"value": "${env.BIN_ROOT}\\gcc.exe"
224+
},
225+
{
226+
"name": "CMAKE_CXX_COMPILER",
227+
"value": "${env.BIN_ROOT}\\g++.exe"
228+
}
229+
]
230+
}
231+
232+
{
233+
"environments": [
234+
{
235+
"MINGW64_ROOT": "C:\\msys64\\mingw64",
236+
"BIN_ROOT": "${env.MINGW64_ROOT}\\bin",
237+
"FLAVOR": "x86_64-w64-mingw32",
238+
"TOOLSET_VERSION": "7.3.0",
239+
"PATH": "${env.MINGW64_ROOT}\\bin;${env.MINGW64_ROOT}\\..\\usr\\local\\bin;${env.MINGW64_ROOT}\\..\\usr\\bin;${env.MINGW64_ROOT}\\..\\bin;${env.PATH}",
240+
"INCLUDE": "${env.INCLUDE};${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION};${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\tr1;${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\${env.FLAVOR}",
241+
"environment": "mingw_64"
242+
}
243+
],
244+
"name": "Mingw64-Release",
245+
"generator": "Ninja",
246+
"configurationType": "RelWithDebInfo",
247+
"inheritEnvironments": [
248+
"mingw_64"
249+
],
250+
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
251+
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
252+
"cmakeCommandArgs": "",
253+
"buildCommandArgs": "-v",
254+
"ctestCommandArgs": "",
255+
"intelliSenseMode": "linux-gcc-x64",
256+
"variables": [
257+
{
258+
"name": "CMAKE_C_COMPILER",
259+
"value": "${env.BIN_ROOT}\\gcc.exe"
260+
},
261+
{
262+
"name": "CMAKE_CXX_COMPILER",
263+
"value": "${env.BIN_ROOT}\\g++.exe"
264+
}
265+
]
266+
}
267+
```
268+
269+
## x86-64 predefined build configurations
270+
271+
```json
272+
{
273+
"name": "x86-Debug",
274+
"generator": "Ninja",
275+
"configurationType": "Debug",
276+
"inheritEnvironments": [
277+
"msvc_x86"
278+
],
279+
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
280+
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
281+
"cmakeCommandArgs": "",
282+
"buildCommandArgs": "-v",
283+
"ctestCommandArgs": ""
284+
},
285+
{
286+
"name": "x86-Release",
287+
"generator": "Ninja",
288+
"configurationType": "RelWithDebInfo",
289+
"inheritEnvironments": [
290+
"msvc_x86"
291+
],
292+
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
293+
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
294+
"cmakeCommandArgs": "",
295+
"buildCommandArgs": "-v",
296+
"ctestCommandArgs": ""
297+
},
298+
{
299+
"name": "x64-Debug",
300+
"generator": "Ninja",
301+
"configurationType": "Debug",
302+
"inheritEnvironments": [
303+
"msvc_x64_x64"
304+
],
305+
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
306+
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
307+
"cmakeCommandArgs": "",
308+
"buildCommandArgs": "-v",
309+
"ctestCommandArgs": ""
310+
},
311+
{
312+
"name": "x64-Release",
313+
"generator": "Ninja",
314+
"configurationType": "RelWithDebInfo",
315+
"inheritEnvironments": [
316+
"msvc_x64_x64"
317+
],
318+
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
319+
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
320+
"cmakeCommandArgs": "",
321+
"buildCommandArgs": "-v",
322+
"ctestCommandArgs": ""
323+
},
324+
{
325+
"name": "x86-Release2",
326+
"generator": "Ninja",
327+
"configurationType": "RelWithDebInfo",
328+
"inheritEnvironments": [
329+
"msvc_x86"
330+
],
331+
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
332+
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
333+
"cmakeCommandArgs": "",
334+
"buildCommandArgs": "-v",
335+
"ctestCommandArgs": ""
336+
}
337+
]
338+
}
339+
```
340+

docs/ide/cmake-tools-for-visual-cpp.md

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,7 @@ To build a CMake project, you have these choices:
8282

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

85-
You can customize configurations and environment variables without modifying the CMakeLists.txt file by using the CMakeSettings.json file. For more information, see [Customize CMake settings](customize-cmake-settings.md).
86-
87-
When a Visual Studio generator is selected for the active configuration, MSBuild.exe is invoked with `-m -v:minimal` arguments. To customize the build, inside the CMakeSettings.json file, you can specify additional [MSBuild command line arguments](../build/msbuild-visual-cpp-overview.md) to be passed to the build system via the `buildCommandArgs` property:
88-
89-
```json
90-
"buildCommandArgs": "-m:8 -v:minimal -p:PreferredToolArchitecture=x64"
91-
```
85+
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).
9286

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

0 commit comments

Comments
 (0)