3 SPDX-FileCopyrightText: Copyright The SCons Foundation (https://scons.org)
4 SPDX-License-Identifier: MIT
5 SPDX-FileType: DOCUMENTATION
7 This file is processed by the bin/SConsDoc.py module.
11 <!ENTITY % scons SYSTEM "../../doc/scons.mod">
13 <!ENTITY % builders-mod SYSTEM "../../doc/generated/builders.mod">
15 <!ENTITY % functions-mod SYSTEM "../../doc/generated/functions.mod">
17 <!ENTITY % tools-mod SYSTEM "../../doc/generated/tools.mod">
19 <!ENTITY % variables-mod SYSTEM "../../doc/generated/variables.mod">
22 <sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0" xmlns:ns="http://www.scons.org/dbxsd/v1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
25 <para>Sets &consvars; for Microsoft Visual Studio.</para>
28 <item>MSVSPROJECTCOM</item>
29 <item>MSVSSOLUTIONCOM</item>
30 <item>MSVSSCONSCRIPT</item>
31 <item>MSVSSCONS</item>
32 <item>MSVSSCONSFLAGS</item>
33 <item>MSVSSCONSCOM</item>
34 <item>MSVSBUILDCOM</item>
35 <item>MSVSREBUILDCOM</item>
36 <item>MSVSCLEANCOM</item>
37 <item>MSVSENCODING</item>
41 <builder name="MSVSProject">
44 Build a &MSVC; project file and solution file.
47 Builds a &MSVC; project file based on the
48 version of Visual Studio (or to be more precise, of
49 <application>MSBuild</application>)
50 that is configured: either the latest installed version,
51 or the version specified by
52 &cv-link-MSVC_VERSION; in the current &consenv;.
53 For Visual Studio 6.0 a <filename>.dsp</filename> file is generated.
54 For Visual Studio versions 2002-2008,
55 a <filename>.vcproj</filename> file is generated.
56 For Visual Studio 2010 and later a <filename>.vcxproj</filename>
58 Note there are multiple versioning schemes involved in
59 the Microsoft compilation environment -
60 see the description of &cv-link-MSVC_VERSION; for equivalences.
61 Note &SCons; does not know how to construct project files for
62 other languages (e.g. <filename>.csproj</filename> for C#,
63 <filename>.vbproj</filename> for Visual Basic or
64 <filename>.pyproject</filename> for Python).
67 For the <filename>.vcxproj</filename> file, the underlying
68 format is the MSBuild XML Schema, and the details conform to:
69 <ulink url="https://learn.microsoft.com/en-us/cpp/build/reference/vcxproj-file-structure">
70 https://learn.microsoft.com/en-us/cpp/build/reference/vcxproj-file-structure</ulink>.
71 The generated solution file enables Visual Studio to
72 understand the project structure, and allows building it
73 using <application>MSBuild</application> to call back to &SCons;.
74 The project file encodes a toolset version that has been
75 selected by &SCons; as described above. Since recent Visual
76 Studio versions support multiple concurrent toolsets,
77 use &cv-link-MSVC_VERSION; to select the desired one if
78 it does not match the &SCons; default.
79 The project file also includes entries which describe
80 how to call &SCons; to build the project from within Visual Studio
81 (or from an <application>MSBuild</application> command line).
82 In some situations &SCons; may generate this incorrectly -
83 notably when using the <emphasis>scons-local</emphasis>
84 distribution, which is not installed in a way that that
85 matches the default invocation line.
86 If so, the &cv-link-SCONS_HOME; &consvar; can be used to describe
87 the right way to locate the &SCons; code so that it can be imported.
90 By default, a matching solution file for the project is also generated.
91 This behavior may be disabled by
92 specifying <parameter>auto_build_solution=0</parameter>
93 to the &b-MSVSProject; builder.
94 The solution file can also be independently
95 generated by calling the &b-MSVSSolution; builder,
96 such as in the case where a solution should describe
98 See the &b-link-MSVSSolution; description for further information.
101 The &b-MSVSProject; builder accepts several keyword arguments
102 describing lists of filenames to be placed into the project file.
104 <parameter>srcs</parameter>,
105 <parameter>incs</parameter>,
106 <parameter>localincs</parameter>,
107 <parameter>resources</parameter>,
108 and <parameter>misc</parameter>
110 The names are intended to be self-explanatory, but note that the
111 filenames need to be specified as strings, <emphasis>not</emphasis>
112 as &SCons; File Nodes
113 (for example if you generate files for inclusion by using the
114 &f-link-Glob; function, the results should be converted to
115 a list of strings before passing them to &b-MSVSProject;).
116 This is because Visual Studio and
117 <application>MSBuild</application> know nothing about &SCons;
119 Each of the filename lists are individually optional, but at
120 least one list must be specified for the resulting project file to
124 In addition to the above lists of values, the following values
125 may be specified as keyword arguments:
129 <term><parameter>target</parameter></term>
132 The name of the target <filename>.dsp</filename>
133 or <filename>.vcproj</filename> file.
134 The correct suffix for the version of Visual Studio
135 must be used, but the &cv-link-MSVSPROJECTSUFFIX;
136 &consvar; will be defined to the correct
137 value (see example below).
142 <term><parameter>variant</parameter></term>
145 The name of this particular variant. Except for Visual Studio 6
146 projects, this can also be a list of variant names. These
147 are typically things like "Debug" or "Release", but
148 really can be anything you want. For Visual Studio
149 7 projects, they may also specify a target platform
150 separated from the variant name by a <literal>|</literal>
151 (vertical pipe) character: <literal>Debug|Xbox</literal>.
152 The default target platform is Win32. Multiple calls
153 to &b-MSVSProject; with different variants are allowed;
154 all variants will be added to the project file with
155 their appropriate build targets and sources.
160 <term><parameter>cmdargs</parameter></term>
163 Additional command line arguments
164 for the different variants. The number of
165 <parameter>cmdargs</parameter> entries must match the number
166 of <parameter>variant</parameter> entries, or be empty (not
167 specified). If you give only one, it will automatically
168 be propagated to all variants.
173 <term><parameter>cppdefines</parameter></term>
176 Preprocessor definitions for the different variants.
177 The number of <parameter>cppdefines</parameter> entries
178 must match the number of <parameter>variant</parameter>
179 entries, or be empty (not specified). If you give
180 only one, it will automatically be propagated to all
181 variants. If you don't give this parameter, &SCons;
182 will use the invoking environment's
183 &cv-link-CPPDEFINES; entry for all variants.
188 <term><parameter>cppflags</parameter></term>
191 Compiler flags for the different variants.
192 If a <option>/std:c++</option> flag is found then
193 <option>/Zc:__cplusplus</option> is appended to the
194 flags if not already found, this ensures that Intellisense
195 uses the <option>/std:c++</option> switch.
196 The number of <parameter>cppflags</parameter> entries
197 must match the number of <parameter>variant</parameter>
198 entries, or be empty (not specified). If you give
199 only one, it will automatically be propagated to all
200 variants. If you don't give this parameter, SCons
201 will combine the invoking environment's
202 &cv-link-CCFLAGS;, &cv-link-CXXFLAGS;,
203 &cv-link-CPPFLAGS; entries for all variants.
208 <term><parameter>cpppaths</parameter></term>
211 Compiler include paths for the different variants.
212 The number of <parameter>cpppaths</parameter> entries
213 must match the number of <parameter>variant</parameter>
214 entries, or be empty (not specified). If you give
215 only one, it will automatically be propagated to all
216 variants. If you don't give this parameter, SCons
217 will use the invoking environment's
218 &cv-link-CPPPATH; entry for all variants.
223 <term><parameter>buildtarget</parameter></term>
226 An optional string, node, or list of strings
227 or nodes (one per build variant), to tell
228 the Visual Studio debugger what output target
229 to use in what build variant. The number of
230 <parameter>buildtarget</parameter> entries must match the
231 number of <parameter>variant</parameter> entries.
236 <term><parameter>runfile</parameter></term>
239 The name of the file that Visual Studio 7 and
240 later will run and debug. This appears as the
241 value of the <parameter>Output</parameter> field in the
242 resulting &MSVC; project file. If this is not
243 specified, the default is the same as the specified
244 <parameter>buildtarget</parameter> value.
251 &SCons; and Microsoft Visual Studio understand projects in
252 different ways, and the mapping is sometimes imperfect:
255 Because &SCons; always executes its build commands
256 from the directory in which the &SConstruct; file is located,
257 if you generate a project file in a different directory
258 than the directory of the &SConstruct; file, users will not be able to
259 double-click on the file name in compilation error messages
260 displayed in the Visual Studio console output window. This can
261 be remedied by adding the &MSVC; <option>/FC</option>
262 compiler option to the &cv-link-CCFLAGS; variable so that
263 the compiler will print the full path name of any files that
264 cause compilation errors.
267 If the project file is only used to teach the Visual Studio
268 project browser about the file layout there should be no issues,
269 However, Visual Studio should not be used to make changes
270 to the project structure, build options, etc. as these will
271 (a) not feed back to the &SCons; description of the project
272 and (b) be lost if &SCons; regenerates the project file.
273 The SConscript files should remain the definitive description
277 If the project file is used to drive
278 <application>MSBuild</application> (such as selecting
279 "build" from the Visual Studio interface) you lose the direct
280 control of target selection and command-line options you would
281 have if launching the build directly from &SCons;,
282 because these will be hard-coded in the project file to the
283 values specified in the &b-MSVSProject; call.
284 You can regain some of this control by defining multiple variants,
285 using multiple &b-MSVSProject; calls to arrange different build
286 targets, arguments, defines, flags and paths for different variants.
289 If the build is divided into a solution with multiple
290 <application>MSBuild</application>
291 projects the mapping is further strained. In this case,
292 it is important not to set Visual Studio to do parallel builds,
293 as it will then launch the separate project builds in parallel,
294 and &SCons; does not work well if called that way.
295 Instead, you can set up the &SCons; build for parallel building -
296 see the &f-link-SetOption; function for how to do this with
297 <parameter>num_jobs</parameter>.
301 <para>Example usage:</para>
303 barsrcs = ['bar.cpp']
305 barlocalincs = ['StdAfx.h']
306 barresources = ['bar.rc', 'resource.h']
307 barmisc = ['bar_readme.txt']
309 dll = env.SharedLibrary(target='bar.dll', source=barsrcs)
310 buildtarget = [s for s in dll if str(s).endswith('dll')]
312 target='Bar' + env['MSVSPROJECTSUFFIX'],
315 localincs=barlocalincs,
316 resources=barresources,
318 buildtarget=buildtarget,
325 <term><parameter>DebugSettings</parameter></term>
328 A dictionary of debug settings that get written
329 to the <filename>.vcproj.user</filename> or the
330 <filename>.vcxproj.user</filename> file, depending on the
331 version installed. As for <parameter>cmdargs</parameter>,
332 you can specify a <parameter>DebugSettings</parameter>
333 dictionary per variant. If you give only one, it will
334 be propagated to all variants.
337 <emphasis>Changed in version 2.4:</emphasis>
338 Added the optional <parameter>DebugSettings</parameter> parameter.
344 Currently, only Visual Studio v9.0 and Visual Studio
345 version v11 are implemented, for other versions no file
346 is generated. To generate the user file, you just need to
347 add a <parameter>DebugSettings</parameter> dictionary to the
348 environment with the right parameters for your MSVS version. If
349 the dictionary is empty, or does not contain any good value,
350 no file will be generated.
353 Following is a more contrived example, involving the setup
354 of a project for variants and DebugSettings:
357 # Assuming you store your defaults in a file
358 vars = Variables('variables.py')
359 msvcver = vars.args.get('vc', '9')
361 # Check command args to force one Microsoft Visual Studio version
362 if msvcver == '9' or msvcver == '11':
363 env = Environment(MSVC_VERSION=msvcver + '.0', MSVC_BATCH=False)
372 help="Create Visual C++ project file",
376 # 1. Configure your Debug Setting dictionary with options you want in the list
377 # of allowed options, for instance if you want to create a user file to launch
378 # a specific application for testing your dll with Microsoft Visual Studio 2008 (v9):
381 'Command': 'c:\\myapp\\using\\thisdll.exe',
382 'WorkingDirectory': 'c:\\myapp\\using\\',
383 'CommandArguments': '-p password',
385 # 'DebuggerType':'3',
387 # 'RemoteMachine': None,
388 # 'RemoteCommand': None,
391 # 'SQLDebugging': None,
393 # 'EnvironmentMerge':'true',
394 # 'DebuggerFlavor': None,
395 # 'MPIRunCommand': None,
396 # 'MPIRunArguments': None,
397 # 'MPIRunWorkingDirectory': None,
398 # 'ApplicationCommand': None,
399 # 'ApplicationArguments': None,
400 # 'ShimCommand': None,
401 # 'MPIAcceptMode': None,
402 # 'MPIAcceptFilter': None,
406 # 2. Because there are a lot of different options depending on the Microsoft
407 # Visual Studio version, if you use more than one version you have to
408 # define a dictionary per version, for instance if you want to create a user
409 # file to launch a specific application for testing your dll with Microsoft
410 # Visual Studio 2012 (v11):
413 'LocalDebuggerCommand': 'c:\\myapp\\using\\thisdll.exe',
414 'LocalDebuggerWorkingDirectory': 'c:\\myapp\\using\\',
415 'LocalDebuggerCommandArguments': '-p password',
416 # 'LocalDebuggerEnvironment': None,
417 # 'DebuggerFlavor': 'WindowsLocalDebugger',
418 # 'LocalDebuggerAttach': None,
419 # 'LocalDebuggerDebuggerType': None,
420 # 'LocalDebuggerMergeEnvironment': None,
421 # 'LocalDebuggerSQLDebugging': None,
422 # 'RemoteDebuggerCommand': None,
423 # 'RemoteDebuggerCommandArguments': None,
424 # 'RemoteDebuggerWorkingDirectory': None,
425 # 'RemoteDebuggerServerName': None,
426 # 'RemoteDebuggerConnection': None,
427 # 'RemoteDebuggerDebuggerType': None,
428 # 'RemoteDebuggerAttach': None,
429 # 'RemoteDebuggerSQLDebugging': None,
430 # 'DeploymentDirectory': None,
431 # 'AdditionalFiles': None,
432 # 'RemoteDebuggerDeployDebugCppRuntime': None,
433 # 'WebBrowserDebuggerHttpUrl': None,
434 # 'WebBrowserDebuggerDebuggerType': None,
435 # 'WebServiceDebuggerHttpUrl': None,
436 # 'WebServiceDebuggerDebuggerType': None,
437 # 'WebServiceDebuggerSQLDebugging': None,
441 # 3. Select the dictionary you want depending on the version of Visual Studio
442 # Files you want to generate.
444 if not env.GetOption('userfile'):
446 elif env.get('MSVC_VERSION', None) == '9.0':
447 dbgSettings = V9DebugSettings
448 elif env.get('MSVC_VERSION', None) == '11.0':
449 dbgSettings = V10DebugSettings
454 # 4. Add the dictionary to the DebugSettings keyword.
456 barsrcs = ['bar.cpp', 'dllmain.cpp', 'stdafx.cpp']
457 barincs = ['targetver.h']
458 barlocalincs = ['StdAfx.h']
459 barresources = ['bar.rc', 'resource.h']
460 barmisc = ['ReadMe.txt']
462 dll = env.SharedLibrary(target='bar.dll', source=barsrcs)
465 target='Bar' + env['MSVSPROJECTSUFFIX'],
468 localincs=barlocalincs,
469 resources=barresources,
471 buildtarget=[dll[0]] * 2,
472 variant=('Debug|Win32', 'Release|Win32'),
473 cmdargs=f'vc={msvcver}',
474 DebugSettings=(dbgSettings, {}),
479 <builder name="MSVSSolution">
481 <para>Build a Microsoft Visual Studio Solution file.</para>
483 Builds a Visual Studio solution file based on the
484 version of Visual Studio that is configured: either the
485 latest installed version, or the version specified by
486 &cv-link-MSVC_VERSION; in the &consenv;. For
487 Visual Studio 6, a <filename>.dsw</filename> file is generated.
488 For Visual Studio .NET 2002 and later,
489 it will generate a <filename>.sln</filename> file.
490 Note there are multiple versioning schemes involved in
491 the Microsoft compilation environment -
492 see the description of &cv-link-MSVC_VERSION; for equivalences.
495 The solution file is a container for one or more projects,
496 and follows the format described at
497 <ulink url="https://learn.microsoft.com/en-us/visualstudio/extensibility/internals/solution-dot-sln-file">
498 https://learn.microsoft.com/en-us/visualstudio/extensibility/internals/solution-dot-sln-file</ulink>.
500 <para>The following values must be specified:</para>
503 <term><parameter>target</parameter></term>
506 The name of the target <filename>.dsw</filename> or
507 <filename>.sln</filename> file. The correct
508 suffix for the version of Visual Studio must be used,
509 but the value &cv-link-MSVSSOLUTIONSUFFIX; will be
510 defined to the correct value (see example below).
515 <term><parameter>variant</parameter></term>
518 The name of this particular variant, or a list of
519 variant names (the latter is only supported for MSVS
520 7 solutions). These are typically things like "Debug"
521 or "Release", but really can be anything you want. For
522 MSVS 7 they may also specify target platform, like this
523 <literal>"Debug|Xbox"</literal>. Default platform is Win32.
528 <term><parameter>projects</parameter></term>
531 A list of project file names, or Project nodes returned
532 by calls to the &b-link-MSVSProject; Builder, to be placed
533 into the solution file.
534 Note that these filenames need to be specified as strings,
535 NOT as &SCons; File Nodes.
536 This is because the solution file will be interpreted by
537 <application>MSBuild</application>
538 and by Visual Studio, which know nothing about &SCons; Node types.
544 In addition to the mandatory arguments above, the following optional
545 values may be specified as keyword arguments:
549 <term><parameter>auto_filter_projects</parameter></term>
552 Under certain circumstances, solution file names or
553 solution file nodes may be present in the
554 <parameter>projects</parameter> argument list.
555 When solution file names or nodes are present in the
556 <parameter>projects</parameter> argument list, the generated
557 solution file may contain erroneous Project records resulting
558 in VS IDE error messages when opening the generated solution
560 By default, an exception is raised when a solution file
561 name or solution file node is detected in the
562 <parameter>projects</parameter> argument list.
565 The accepted values for <parameter>auto_filter_projects</parameter>
570 <term><parameter>None</parameter></term>
573 An exception is raised when a solution file name or solution
574 file node is detected in the <parameter>projects</parameter>
578 <parameter>None</parameter> is the default value.
583 <term><parameter>True or evaluates True</parameter></term>
586 Automatically remove solution file names and solution file
587 nodes from the <parameter>projects</parameter> argument list.
592 <term><parameter>False or evaluates False</parameter></term>
595 Leave the solution file names and solution file nodes
596 in the <parameter>projects</parameter> argument list.
597 An exception is not raised.
600 When opening the generated solution file with the VS IDE,
601 the VS IDE will likely report that there are erroneous
602 Project records that are not supported or that need to be
611 <para>Example Usage:</para>
614 target="Bar" + env["MSVSSOLUTIONSUFFIX"],
615 projects=["bar" + env["MSVSPROJECTSUFFIX"]],
620 </builder> <cvar name="MSVS">
623 When the Microsoft Visual Studio tools are initialized,
624 they set up this dictionary with the following keys:
630 <para>the version of MSVS being used (can be set via
631 &cv-link-MSVC_VERSION;)</para>
635 <term>VERSIONS</term>
637 <para>the available versions of MSVS installed</para>
641 <term>VCINSTALLDIR</term>
643 <para>installed directory of &MSVC;</para>
647 <term>VSINSTALLDIR</term>
649 <para>installed directory of Visual Studio</para>
653 <term>FRAMEWORKDIR</term>
655 <para>installed directory of the .NET framework</para>
659 <term>FRAMEWORKVERSIONS</term>
662 list of installed versions of the .NET framework,
663 sorted latest to oldest.
668 <term>FRAMEWORKVERSION</term>
670 <para>latest installed version of the .NET framework</para>
674 <term>FRAMEWORKSDKDIR</term>
676 <para>installed location of the .NET SDK.</para>
680 <term>PLATFORMSDKDIR</term>
682 <para>installed location of the Platform SDK.</para>
686 <term>PLATFORMSDK_MODULES</term>
689 dictionary of installed Platform SDK modules, where the
690 dictionary keys are keywords for the various modules,
691 and the values are 2-tuples where the first is the
692 release date, and the second is the version number.
697 <para>If a value is not set, it was not available in the registry.
698 Visual Studio 2017 and later do not use the registry for
699 primary storage of this information, so typically for these
700 versions only <literal>PROJECTSUFFIX</literal> and
701 <literal>SOLUTIONSUFFIX</literal> will be set.
704 </cvar> <cvar name="MSVS_ARCH">
706 <para>Sets the architecture for which the generated project(s) should build.</para>
708 The default value is <literal>x86</literal>.
709 <literal>amd64</literal> is also supported by &SCons; for
710 most Visual Studio versions. Since Visual Studio 2015
711 <literal>arm</literal> is supported, and since Visual Studio
712 2017 <literal>arm64</literal> is supported.
713 Trying to set &cv-MSVS_ARCH;
714 to an architecture that's not supported for a given Visual
715 Studio version will generate an error.
718 </cvar> <cvar name="MSVS_PROJECT_GUID">
721 The string placed in a generated
722 &MSVC; project file as the value of the
723 <literal>ProjectGUID</literal> attribute. There is no default
724 value. If not defined, a new GUID is generated.
727 </cvar> <cvar name="MSVS_SCC_AUX_PATH">
730 The path name placed in a generated
731 &MSVC; project file as the value of the
732 <literal>SccAuxPath</literal> attribute if the
733 <envar>MSVS_SCC_PROVIDER</envar> &consvar; is
734 also set. There is no default value.
737 </cvar> <cvar name="MSVS_SCC_CONNECTION_ROOT">
740 The root path of projects in your SCC workspace, i.e the
741 path under which all project and solution files will be
742 generated. It is used as a reference path from which the
743 relative paths of the generated &MSVC; project
744 and solution files are computed. The relative project file path
745 is placed as the value of the <literal>SccLocalPath</literal>
746 attribute of the project file and as the values of the
747 <literal>SccProjectFilePathRelativizedFromConnection[i]</literal>
748 (where [i] ranges from 0 to the number of projects in the solution)
749 attributes of the <literal>GlobalSection(SourceCodeControl)</literal>
750 section of the Microsoft Visual Studio solution file. Similarly,
751 the relative solution file path is placed as the values of the
752 <literal>SccLocalPath[i]</literal> (where [i] ranges from 0
753 to the number of projects in the solution) attributes of the
754 <literal>GlobalSection(SourceCodeControl)</literal> section of
755 the Microsoft Visual Studio solution file. This is used only if
756 the <envar>MSVS_SCC_PROVIDER</envar> &consvar; is
757 also set. The default value is the current working directory.
760 </cvar> <cvar name="MSVS_SCC_PROJECT_NAME">
763 The project name placed in a generated &MSVC;
764 project file as the value of the
765 <literal>SccProjectName</literal> attribute if the
766 <envar>MSVS_SCC_PROVIDER</envar> &consvar;
767 is also set. In this case the string is also placed in
768 the <literal>SccProjectName0</literal> attribute of the
769 <literal>GlobalSection(SourceCodeControl)</literal> section
770 of the Microsoft Visual Studio solution file. There is no
774 </cvar> <cvar name="MSVS_SCC_PROVIDER">
777 The string placed in a generated &MSVC;
778 project file as the value of the
779 <literal>SccProvider</literal> attribute. The string is
780 also placed in the <literal>SccProvider0</literal> attribute
781 of the <literal>GlobalSection(SourceCodeControl)</literal>
782 section of the Microsoft Visual Studio solution file. There
786 </cvar> <cvar name="MSVS_VERSION">
788 <para>Set the preferred version of Microsoft Visual Studio to use.</para>
790 If &cv-MSVS_VERSION; is not set, &SCons; will (by default)
791 select the latest version of Visual Studio installed on your
792 system. So, if you have version 6 and version 7 (MSVS .NET)
793 installed, it will prefer version 7. You can override this by
794 specifying the &cv-link-MSVS_VERSION; variable when
795 initializing the Environment, setting it to the appropriate
796 version ('6.0' or '7.0', for example). If the specified
797 version isn't installed, tool initialization will fail.
800 <emphasis>Deprecated since 1.3.0:</emphasis>
801 &cv-MSVS_VERSION; is deprecated in favor of &cv-link-MSVC_VERSION;.
802 As a transitional aid, if &cv-MSVS_VERSION; is set
803 and &cv-MSVC_VERSION; is not,
804 &cv-MSVC_VERSION; will be initialized to the value
805 of &cv-MSVS_VERSION;.
806 An error is raised if both are set and have different values.
810 <cvar name="MSVSBUILDCOM">
813 The build command line placed in a generated &MSVC;
814 project file. The default is to have Visual Studio
815 invoke &SCons; with any specified build targets.
819 <cvar name="MSVSCLEANCOM">
822 The clean command line placed in a generated &MSVC;
823 project file. The default is to have Visual Studio
824 invoke &SCons; with the <option>-c</option> option to remove
825 any specified targets.
828 </cvar> <cvar name="MSVSENCODING">
831 The encoding string placed in a generated &MSVC;
832 project file. The default is encoding
833 <literal>Windows-1252</literal>.
837 <cvar name="MSVSPROJECTCOM">
839 <para>The action used to generate &MSVC; project files.</para>
842 <cvar name="MSVSPROJECTSUFFIX">
845 The suffix used for &MSVC; project (DSP)
846 files. The default value is
847 <filename>.vcxproj</filename> when using Visual Studio 2010
848 and later, <filename>.vcproj</filename>
849 when using Visual Studio versions between 2002 and 2008,
850 and <filename>.dsp</filename> when using Visual Studio 6.0.
854 <cvar name="MSVSREBUILDCOM">
857 The rebuild command line placed in a generated &MSVC;
858 project file. The default is to have Visual
859 Studio invoke &SCons; with any specified rebuild targets.
864 <cvar name="MSVSSCONS">
867 The &SCons; used in generated &MSVC; project
868 files. The default is the version of &SCons; being used to
869 generate the project file.
873 <cvar name="MSVSSCONSFLAGS">
876 The &SCons; flags used in generated &MSVC; project files.
880 <cvar name="MSVSSCONSCOM">
883 The default &SCons; command used in generated &MSVC; project files.
887 <cvar name="MSVSSCONSCRIPT">
890 The sconscript file (that is, &SConstruct; or &SConscript;
891 file) that will be invoked by &MSVC; project files
892 (through the &cv-link-MSVSSCONSCOM; variable). The default
893 is the same sconscript file that contains the call to
894 &b-link-MSVSProject; to build the project file.
898 <cvar name="MSVSSOLUTIONCOM">
900 <para>The action used to generate Microsoft Visual Studio solution files.</para>
902 </cvar> <cvar name="MSVSSOLUTIONSUFFIX">
905 The suffix used for Microsoft Visual Studio solution (DSW)
906 files. The default value is <filename>.sln</filename>
907 when using Visual Studio version 7.x (.NET 2002) and later,
908 and <filename>.dsw</filename> when using Visual Studio 6.0.
912 <cvar name="SCONS_HOME">
915 The (optional) path to the &SCons; library directory,
916 initialized from the external environment. If set, this is
917 used to construct a shorter and more efficient search path in
918 the &cv-link-MSVSSCONS; command line executed from C++