MSVS: Erroneous solution file generation with MSVSSolution and variant_dir
When using MSVSSolution with a variant build directory, the actual solution file is generated in the build directory instead of the source directory.
The expected result is that a placeholder solution file is generated in the build directory and the actual solution file is generated in the source directory.
Test configuration:
-
Layout
748 B Test-Folder 62 B ├─ SConstruct 686 B └─ src 686 B └─ SConscript 1 directory, 2 files
-
SConstruct File
SConscript('src/SConscript', variant_dir='Build', duplicate=0) -
src\SConscript File
project_base = 'Test' env=Environment( tools=['msvs'], MSVS_VERSION='14.3', HOST_ARCH='amd64', ) testsrc = ['test1.cpp', 'test2.cpp'] testincs = [r'sdk_dir\\sdk.h'] testlocalincs = ['test.h'] testresources = ['test.rc'] testmisc = ['readme.txt'] p1 = env.MSVSProject( target = project_base + '.vcxproj', srcs = testsrc, incs = testincs, localincs = testlocalincs, resources = testresources, misc = testmisc, buildtarget = project_base + '.exe', variant = 'Release', auto_build_solution = 0, ) sln = env.MSVSSolution( target = project_base + '.sln', projects = [p1], variant = 'Release', )
Test results:
-
Output Layout
8787 B Test-I1-P1S1NV-M 62 B ├─ SConstruct 938 B ├─ Build 818 B │ ├─ Test.sln 120 B │ └─ Test.vcxproj 7787 B └─ src 686 B ├─ SConscript 5387 B ├─ Test.vcxproj 1714 B └─ Test.vcxproj.filters 2 directories, 6 files
-
Build\Test.sln Fragment:
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Test.vcxproj", "Test.vcxproj", "{813AB1DC-1B07-56AA-A473-DEA1E63B968A}" -
Build\Test.vcxproj Fragment:
This is just a placeholder file. The real project file is here: -
src\Test.vcxproj Fragment:
<PropertyGroup Label="Globals"> <ProjectGuid>{E0C70307-259D-5A4A-B1B3-FB5220DB38F3}</ProjectGuid>
Notes:
- The actual solution file is generated in the Build folder. A placeholder file should be generated in the Build folder and the actual solution file should be generated in the src folder.
- When using the SCons project GUID generation, the generated solution file and the generated project file have different GUIDs so the sln file cannot be copied into the src directory:
{813AB1DC-1B07-56AA-A473-DEA1E63B968A}{E0C70307-259D-5A4A-B1B3-FB5220DB38F3}
Required information:
- Link to SCons Users thread discussing your issue.
n/a - Version of SCons
4.8.1 Master (SHA-1: fc36781173e80c99774284c653557c6cb9675c88) - Version of Python
3.11.3 - Which python distribution if applicable (python.org, cygwin, anaconda, macports, brew,etc)
WinPython - How you installed SCons
filesystem git repository master branch - What Platform are you on? (Linux/Windows and which version)
Win 10 - How to reproduce your issue? Please include a small self contained reproducer. Likely a SConstruct should do for most issues.
See above - How you invoke scons (The command line you're using "scons --flags some_arguments")
python PathToSconsRoot/scripts/scons.py from test folder root
Addressed in PR #4610
Tests results:
-
Output Layout:
8897 B Test-I1-P1S1NV-B 62 B ├─ SConstruct 238 B ├─ Build 118 B │ ├─ Test.sln 120 B │ └─ Test.vcxproj 8597 B └─ src 686 B ├─ SConscript 810 B ├─ Test.sln 5387 B ├─ Test.vcxproj 1714 B └─ Test.vcxproj.filters 2 directories, 7 files
-
Build\Test.sln Fragment:
This is just a placeholder file. The real workspace file is here: -
Build\Test.vcxproj Fragment:
This is just a placeholder file. The real project file is here: -
src\Test.sln Fragment:
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Test", "Test.vcxproj", "{E0C70307-259D-5A4A-B1B3-FB5220DB38F3}" -
src\Test.vcxproj Fragment:
<PropertyGroup Label="Globals"> <ProjectGuid>{E0C70307-259D-5A4A-B1B3-FB5220DB38F3}</ProjectGuid>
When using MSVSSolution with a variant build directory, the actual solution file is generated in the build directory instead of the source directory.
There are seemingly endless cases of mishandling of files that aren't actual build products (put in the wrong places and/or not tracked properly) when variantdir is involved - see Fortran module files, msvc PDB files, etc. And now you're telling us that when it's behaving as designed (variantdir means everything goes there) that's not correct either?
And now you're telling us that when it's behaving as designed (variantdir means everything goes there) that's not correct either?
The msvs tool for MSVSProject and MSVSSolution are designed to generate the solution and project files in the source directory (presumably with the c/c++ files) and placeholder files in the build directory.
In terms of solution file generation locations, the following should be equivalent when using a variantdir:
- scenario 1
env.MSVSProject(..., auto_build_solution=1) - scenario 2
p = env.MSVSProject(..., auto_build_solution=0) s = env.MSVSSolution(... projects=[p])
However, the results are not the same.
Current results:
-
scenario 1:
- build
- placeholder solution
- placeholder project
- src
- actual solution
- actual project
- build
-
scenario 2:
- build:
- actual solution [SHOULD BE PLACEHOLDER]
- placeholder project
- src:
- actual project
- [ACTUAL SOLUTION MISSING]
- build:
When using auto_build_solution=1 with MSVSProject, the solution placeholder and actual files are generated in the correct locations.
However, using auto_build_solution=0 with MSVSProject the project files are correct but the MSVSSolution generated file and location is incorrect.
Basically, a parallel implementation for detecting the locations was missing for the "standalone" MSVSSolution invocation.
If that's how they're designed, then that's a flaw when using variant dirs.. Nothing should get written into the source of a variant dir.
The problem is we're writing those files for something external to consume, and they have to go where it makes sense for that tool. To visual studio, it would make no sense for the solution/project files to go into the variant dir.
The problem is we're writing those files for something external to consume, and they have to go where it makes sense for that tool. To visual studio, it would make no sense for the solution/project files to go into the variant dir.
Why? isn't it just a cd xyz, run scons? I'm not sure I get why it matters where this file is.
I suspect it is because the project files are generated assuming the source files are in the same directory.
I was under the impression that the solution/project files were for code-browsing via Visual Studio and that building would simply have python call SCons. Maybe?
A full example from the test suite follows. Perhaps it will be illuminating.
Sample: SConstruct:
SConscript('src/SConscript', variant_dir='Build', duplicate=0)
Sample SConscript:
env=Environment(tools=['msvs'], MSVC_VERSION='14.3')
env.MSVSProject(
target = 'Test.vcxproj',
srcs = ['test1.cpp', 'test2.cpp'],
incs = [r'sdk_dir\sdk.h'],
localincs = ['test.h'],
resources = ['test.rc'],
misc = ['readme.txt'],
buildtarget = 'Test.exe',
variant = 'Release',
)
Generated src\Test.vcxproj file:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="17.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{E0C70307-259D-5A4A-B1B3-FB5220DB38F3}</ProjectGuid>
<RootNamespace>Test</RootNamespace>
<Keyword>MakeFileProj</Keyword>
<VCProjectUpgraderObjectName>NoUpgrade</VCProjectUpgraderObjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Makefile</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">echo Starting SCons && "S:\SCons\_env-311-64-lint\Scripts\python.exe" -c "from os.path import join; import sys; sys.path = [ join(sys.prefix, 'Lib', 'site-packages', 'scons-4.8.1'), join(sys.prefix, 'scons-4.8.1'), join(sys.prefix, 'Lib', 'site-packages', 'scons'), join(sys.prefix, 'scons') ] + sys.path; import SCons.Script; SCons.Script.main()" -C "S:\SCons\test-4608\Test-E1" -f SConstruct "Test.exe"</NMakeBuildCommandLine>
<NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">echo Starting SCons && "S:\SCons\_env-311-64-lint\Scripts\python.exe" -c "from os.path import join; import sys; sys.path = [ join(sys.prefix, 'Lib', 'site-packages', 'scons-4.8.1'), join(sys.prefix, 'scons-4.8.1'), join(sys.prefix, 'Lib', 'site-packages', 'scons'), join(sys.prefix, 'scons') ] + sys.path; import SCons.Script; SCons.Script.main()" -C "S:\SCons\test-4608\Test-E1" -f SConstruct "Test.exe"</NMakeReBuildCommandLine>
<NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">echo Starting SCons && "S:\SCons\_env-311-64-lint\Scripts\python.exe" -c "from os.path import join; import sys; sys.path = [ join(sys.prefix, 'Lib', 'site-packages', 'scons-4.8.1'), join(sys.prefix, 'scons-4.8.1'), join(sys.prefix, 'Lib', 'site-packages', 'scons'), join(sys.prefix, 'scons') ] + sys.path; import SCons.Script; SCons.Script.main()" -C "S:\SCons\test-4608\Test-E1" -f SConstruct -c "Test.exe"</NMakeCleanCommandLine>
<NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Test.exe</NMakeOutput>
<NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"></NMakePreprocessorDefinitions>
<NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"></NMakeIncludeSearchPath>
<NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
<NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
<NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"></AdditionalOptions>
</PropertyGroup>
<ItemGroup>
<ClInclude Include="sdk_dir\sdk.h" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="test.h" />
</ItemGroup>
<ItemGroup>
<None Include="readme.txt" />
</ItemGroup>
<ItemGroup>
<None Include="test.rc" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="test1.cpp" />
<ClCompile Include="test2.cpp" />
</ItemGroup>
<ItemGroup>
<None Include="SConstruct" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
<!-- SCons Data:
gASVuAAAAAAAAAB9lIwHUmVsZWFzZZSMD1NDb25zLlRvb2wubXN2c5SMBkNvbmZpZ5STlCmBlH2UKIwLYnVpbGR0YXJnZXSUjAhUZXN0LmV4ZZSMBm91dGRpcpSMAJSMB2NtZGFyZ3OUaAqMCmNwcGRlZmluZXOUXZSMCGNwcGZsYWdzlF2UjAdydW5maWxllGgIjAhjcHBwYXRoc5RdlIwHdmFyaWFudJRoAYwIcGxhdGZvcm2UjAVXaW4zMpR1YnMu
gASVqgAAAAAAAAB9lCiMDFNvdXJjZSBGaWxlc5RdlCiMCXRlc3QxLmNwcJSMCXRlc3QyLmNwcJRljAxIZWFkZXIgRmlsZXOUXZSMDXNka19kaXJcc2RrLmiUYYwNTG9jYWwgSGVhZGVyc5RdlIwGdGVzdC5olGGMDlJlc291cmNlIEZpbGVzlF2UjAd0ZXN0LnJjlGGMC090aGVyIEZpbGVzlF2UjApyZWFkbWUudHh0lGF1Lg==-->
Generated src\Test.sln file:
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 17
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Test", "Test.vcxproj", "{E0C70307-259D-5A4A-B1B3-FB5220DB38F3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{E0C70307-259D-5A4A-B1B3-FB5220DB38F3}.Release|Win32.ActiveCfg = Release|Win32
{E0C70307-259D-5A4A-B1B3-FB5220DB38F3}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
gASVUgAAAAAAAAB9lIwHUmVsZWFzZZSMD1NDb25zLlRvb2wubXN2c5SMBkNvbmZpZ5STlCmBlH2UKIwHdmFyaWFudJRoAYwIcGxhdGZvcm2UjAVXaW4zMpR1YnMu
I can't quicky test a "real" example.
if you build a project file, it's for vs to use and includes how it calls scons to build. tbh I don't know what restrictions it has, but we do have to live by them. I'm out of my depth here. does variantdir even make sense in this context? or is this "don't do that"?
I'm out of my depth here.
(raising and waving hand) Me too.
Mongodb appears to be generating their own project file. The banner indicates it is used as a code browser and for debugging. I think they use a variantdir for builds, but didn't look.
https://github.com/mongodb/mongo/blob/master/buildscripts/make_vcxproj.py
Locally, I'm trying to get a hello world example to build with no joy. Tomorrow is another day...
What follows is a minimal example of building a simple "hello, world" program and generating solution/project files for Visual Studio using a variantdir build.
It appears that the MSVSProject buildtarget (An optional string, node, or list of strings or nodes (one per build variant), to tell the Visual Studio debugger what output target to use in what build variant.) should be the same as an alias for the project.
It is configured to generate the solution file in the "root" next to the SConstruct file and the project file in the src folder next to the hello.c source file. See the project layout below.
Maybe tomorrow I'll try generating the solution file in the src folder as well.
It almost makes sense to me now. Almost.
Complete Example:
-
Project Layout:
852 B Test-E2 482 B ├─ SConstruct 370 B └─ src 276 B ├─ SConscript 94 B └─ hello.c 1 directory, 3 files
-
Source Files:
-
SConstruct
env = Environment(tools=['msvs', 'msvc', 'mslink'], MSVC_VERSION='14.3') projects = SConscript('src/SConscript', exports='env', variant_dir='build', duplicate=False) env.MSVSSolution( target = 'Test.sln', projects = projects, variant = 'Release', ) -
src\SConscript
Import('env') project = env.MSVSProject( target = 'Test.vcxproj', srcs = ['hello.c'], buildtarget = 'myprog', variant = 'Release', auto_build_solution=0, ) prog = env.Program("hello", ["hello.c"]) Alias('myprog', prog) Return('project') -
src\hello.c
#include <stdio.h> int main(int argc, char* argv) { printf("hello"); return 0; }
-
-
python %SCONS_HOME%\scripts\scons.pyscons: Reading SConscript files ... scons: done reading SConscript files. scons: Building targets ... cl /Fobuild\hello.obj /c src\hello.c /nologo hello.c link /nologo /OUT:build\hello.exe build\hello.obj Adding 'Test - Release|Win32' to 'src\Test.vcxproj' scons: done building targets. -
Project Layout After:
146844 B Test-E2 482 B ├─ SConstruct 814 B ├─ Test.sln 140219 B ├─ build 111 B │ ├─ Test.vcxproj 137728 B │ ├─ hello.exe 2380 B │ └─ hello.obj 5329 B └─ src 276 B ├─ SConscript 4486 B ├─ Test.vcxproj 473 B ├─ Test.vcxproj.filters 94 B └─ hello.c 2 directories, 9 files
-
Generated Solution/Project Files:
-
Test.sln
Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 17 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Test", "src\Test.vcxproj", "{E0C70307-259D-5A4A-B1B3-FB5220DB38F3}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {E0C70307-259D-5A4A-B1B3-FB5220DB38F3}.Release|Win32.ActiveCfg = Release|Win32 {E0C70307-259D-5A4A-B1B3-FB5220DB38F3}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal gASVUgAAAAAAAAB9lIwHUmVsZWFzZZSMD1NDb25zLlRvb2wubXN2c5SMBkNvbmZpZ5STlCmBlH2UKIwHdmFyaWFudJRoAYwIcGxhdGZvcm2UjAVXaW4zMpR1YnMu -
src\Test.vcxproj
<?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build" ToolsVersion="17.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup Label="ProjectConfigurations"> <ProjectConfiguration Include="Release|Win32"> <Configuration>Release</Configuration> <Platform>Win32</Platform> </ProjectConfiguration> </ItemGroup> <PropertyGroup Label="Globals"> <ProjectGuid>{E0C70307-259D-5A4A-B1B3-FB5220DB38F3}</ProjectGuid> <RootNamespace>Test</RootNamespace> <Keyword>MakeFileProj</Keyword> <VCProjectUpgraderObjectName>NoUpgrade</VCProjectUpgraderObjectName> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <ConfigurationType>Makefile</ConfigurationType> <UseOfMfc>false</UseOfMfc> <PlatformToolset>v143</PlatformToolset> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <ImportGroup Label="ExtensionSettings"> </ImportGroup> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> </ImportGroup> <PropertyGroup Label="UserMacros" /> <PropertyGroup> <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion> <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">echo Starting SCons && "E:\Python\WPY64-31180\python-3.11.8.amd64\python.exe" -c "from os.path import join; import sys; sys.path = [ r'S:\SCons\jbrill-platform-win32' ] + sys.path; import SCons.Script; SCons.Script.main()" -C "S:\SCons\test-4608\Test-E2" -f SConstruct "myprog"</NMakeBuildCommandLine> <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">echo Starting SCons && "E:\Python\WPY64-31180\python-3.11.8.amd64\python.exe" -c "from os.path import join; import sys; sys.path = [ r'S:\SCons\jbrill-platform-win32' ] + sys.path; import SCons.Script; SCons.Script.main()" -C "S:\SCons\test-4608\Test-E2" -f SConstruct "myprog"</NMakeReBuildCommandLine> <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">echo Starting SCons && "E:\Python\WPY64-31180\python-3.11.8.amd64\python.exe" -c "from os.path import join; import sys; sys.path = [ r'S:\SCons\jbrill-platform-win32' ] + sys.path; import SCons.Script; SCons.Script.main()" -C "S:\SCons\test-4608\Test-E2" -f SConstruct -c "myprog"</NMakeCleanCommandLine> <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">myprog</NMakeOutput> <NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"></NMakePreprocessorDefinitions> <NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"></NMakeIncludeSearchPath> <NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes> <NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath> <NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies> <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">/nologo /TP </AdditionalOptions> </PropertyGroup> <ItemGroup> <ClCompile Include="hello.c" /> </ItemGroup> <ItemGroup> <None Include="SConstruct" /> </ItemGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <ImportGroup Label="ExtensionTargets"> </ImportGroup> </Project> <!-- SCons Data: gASV9wAAAAAAAAB9lIwHUmVsZWFzZZSMD1NDb25zLlRvb2wubXN2c5SMBkNvbmZpZ5STlCmBlH2UKIwLYnVpbGR0YXJnZXSUjAZteXByb2eUjAZvdXRkaXKUjACUjAdjbWRhcmdzlGgKjApjcHBkZWZpbmVzlF2UjAhjcHBmbGFnc5SMClNDb25zLlV0aWyUjAVDTFZhcpSTlCmBlH2UjARkYXRhlF2UKIwHL25vbG9nb5SMAiQolIwDL1RQlIwCJCmUZXNijAdydW5maWxllGgIjAhjcHBwYXRoc5RdlIwHdmFyaWFudJRoAYwIcGxhdGZvcm2UjAVXaW4zMpR1YnMu gASVZwAAAAAAAAB9lCiMDFNvdXJjZSBGaWxlc5RdlIwHaGVsbG8uY5RhjAxIZWFkZXIgRmlsZXOUXZSMDUxvY2FsIEhlYWRlcnOUXZSMDlJlc291cmNlIEZpbGVzlF2UjAtPdGhlciBGaWxlc5RdlHUu-->
-
-
C:\Software\MSVS-2022-143-Com\Common7\IDE\devenv.exe Test.sln-
GUI -> Build -> Build Solution
Build started at 11:19 PM... 1>------ Build started: Project: Test, Configuration: Release Win32 ------ 1>Starting SCons 1>scons: Entering directory `S:\SCons\test-4608\Test-E2' 1>scons: Reading SConscript files ... 1>scons: done reading SConscript files. 1>scons: Building targets ... 1>scons: `myprog' is up to date. 1>scons: done building targets. ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== ========== Build completed at 11:19 PM and took 03.392 seconds ========== -
GUI -> Build -> Clean Solution
Clean started at 11:20 PM... 1>------ Clean started: Project: Test, Configuration: Release Win32 ------ 1>Starting SCons 1>scons: Entering directory `S:\SCons\test-4608\Test-E2' 1>scons: Reading SConscript files ... 1>scons: done reading SConscript files. 1>scons: Cleaning targets ... 1>Removed build\hello.obj 1>Removed build\hello.exe 1>scons: done cleaning targets. ========== Clean: 1 succeeded, 0 failed, 0 skipped ========== ========== Clean completed at 11:20 PM and took 01.925 seconds ========== -
GUI -> Build -> Build Solution
Build started at 11:21 PM... 1>------ Build started: Project: Test, Configuration: Release Win32 ------ 1>Starting SCons 1>scons: Entering directory `S:\SCons\test-4608\Test-E2' 1>scons: Reading SConscript files ... 1>scons: done reading SConscript files. 1>scons: Building targets ... 1>cl /Fobuild\hello.obj /c src\hello.c /nologo 1>hello.c 1>link /nologo /OUT:build\hello.exe build\hello.obj 1>scons: done building targets. ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== ========== Build completed at 11:21 PM and took 03.291 seconds ========== -
GUI -> Build -> Rebuild Solution
Rebuild started at 11:21 PM... 1>------ Rebuild All started: Project: Test, Configuration: Release Win32 ------ 1>Starting SCons 1>scons: Entering directory `S:\SCons\test-4608\Test-E2' 1>scons: Reading SConscript files ... 1>scons: done reading SConscript files. 1>scons: Building targets ... 1>scons: `myprog' is up to date. 1>scons: done building targets. ========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ========== ========== Rebuild completed at 11:21 PM and took 02.022 seconds ==========
-