Re: Problem with multiple-variant MSVS project
Bill Deegan <[email protected]>
| Newsgroups | gmane.comp.programming.tools.scons.user |
|---|---|
| Message-ID | <CAEyG4CF7i03hG=dPFQM=Npu8F724gDys3CYqobLiSvwb+36Dwg@mail.gmail.com> |
Vegard, Yup. Looks like a bug. Please file an issue on github with your example? -Bill On Tue, Apr 6, 2021 at 11:30 PM Vegard Lillevoll <[email protected]> wrote: > Hi, > > That causes the error to disappear, but only the first variant (debug) is > in the project file. Here's the output: > > scons: Reading SConscript files ... > > scons: warning: Two different environments were specified for target > hello.vcxproj, > but they appear to have the same action: GenerateProject(target, > source, env) > File "SConstruct", line 9, in <module> > > scons: warning: Two different environments were specified for target > hello.sln, > but they appear to have the same action: GenerateProject(target, > source, env) > File "SConstruct", line 9, in <module> > > scons: warning: Two different environments were specified for target > hello.vcxproj.filters, > but they appear to have the same action: GenerateProject(target, > source, env) > File "\SConstruct", line 9, in <module> > scons: done reading SConscript files. > scons: Building targets ... > Adding 'hello - debug|Win32' to 'hello.vcxproj' > scons: done building targets. > > ons. 7. apr. 2021 kl. 00:54 skrev Bill Deegan <[email protected]>: > >> Hmm. That might be a bug. >> >> Try the following: >> >> In your install find SCons/Tool/msvs.py >> around line 2038 you should find: >> >> projectBuilder = SCons.Builder.Builder(action = '$MSVSPROJECTCOM', >> suffix = '$MSVSPROJECTSUFFIX', >> emitter = projectEmitter) >> >> >> Add to that Builder() call multi=True >> >> Let us know if that works. >> >> Thanks, >> Bill >> >> On Tue, Apr 6, 2021 at 12:46 AM Vegard Lillevoll <[email protected]> >> wrote: >> >>> Hi! >>> >>> I am trying to set up visual studio projects with debug and release >>> builds in a large SCons project. The manual proclaims: >>> >>> > Multiple calls to MSVSProject with different variants are allowed; all >>> variants will be added to the project file with their appropriate build >>> targets and sources. >>> >>> However, when I try to do this, I get the error that "Multiple ways to >>> build the same target were specified". >>> >>> Minimal example (SConstruct file) >>> >>> import os >>> from SCons.Script import * >>> >>> env = Environment() >>> >>> for variant in ['debug', 'release']: >>> env.MSVSProject( >>> target = 'hello' + env['MSVSPROJECTSUFFIX'], >>> srcs = 'hello.cpp', >>> buildtarget = os.path.join(variant, 'hello.exe'), >>> variant = variant) >>> >>> This gives the following output: >>> >>> scons: Reading SConscript files ... >>> >>> scons: warning: Two different environments were specified for target >>> hello.vcxproj, >>> but they appear to have the same action: >>> GenerateProject(target, source, env) >>> File "SConstruct", line 7, in <module> >>> >>> scons: *** Multiple ways to build the same target were specified >>> for: hello.vcxproj (from ['prj_inputs:"python.exe" -c "from os.path import >>> join; import sys; sys.path = [ join(sys.prefix, \'Lib\', \'site-packages\', >>> \'scons-4.1.0\'), join(sys.prefix, \'scons-4.1.0\'), join(sys.prefix, >>> \'Lib\', \'site-packages\', \'scons\'), join(sys.prefix, \'scons\') ] + >>> sys.path; import SCons.Script; SCons.Script.main()" -C "." -f >>> SConstructutf-8; ppdefs: incpath: "debug\\hello.exe" "debug" "hello.cpp >>> "hello.vcxproj"'] and from ['prj_inputs:"python.exe" -c "from os.path >>> import join; import sys; sys.path = [ join(sys.prefix, \'Lib\', >>> \'site-packages\', \'scons-4.1.0\'), join(sys.prefix, \'scons-4.1.0\'), >>> join(sys.prefix, \'Lib\', \'site-packages\', \'scons\'), join(sys.prefix, >>> \'scons\') ] + sys.path; import SCons.Script; SCons.Script.main()" -C "." >>> -f SConstructutf-8; ppdefs: incpath: "release\\hello.exe" "release" >>> "hello.cpp "hello.vcxproj"']) >>> File "SConstruct", line 7, in <module> >>> >>> Is this a bug in SCons, or am I not understanding how this is supposed >>> to work? I have tried both versions 3.1.2 and 4.1.0. >>> >>> I realize that the variants can be passed in a list as a single call, >>> but maintaining separate lists of sources and targets for different build >>> types would not be possible without a major rewrite of the existing build >>> infrastructure. I was hoping to use one environment per build type, and the >>> quote from the manual makes it seem like SCons should be able to combine >>> them into one MSVS project. >>> >>> Any help would be greatly appreciated! >>> _______________________________________________ >>> Scons-users mailing list >>> [email protected] >>> https://pairlist4.pair.net/mailman/listinfo/scons-users >>> >> _______________________________________________ >> Scons-users mailing list >> [email protected] >> https://pairlist4.pair.net/mailman/listinfo/scons-users >> > _______________________________________________ > Scons-users mailing list > [email protected] > https://pairlist4.pair.net/mailman/listinfo/scons-users > _______________________________________________ Scons-users mailing list [email protected] https://pairlist4.pair.net/mailman/listinfo/scons-users