[Scons-users] Problem with multiple-variant MSVS project

Vegard Lillevoll lilveg at gmail.com
Wed Apr 7 02:29:47 EDT 2021


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 <bill at baddogconsulting.com>:

> 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 <lilveg at gmail.com> 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
>> Scons-users at scons.org
>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20210407/e3febe45/attachment.htm>


More information about the Scons-users mailing list