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

Bill Deegan bill at baddogconsulting.com
Tue Apr 6 17:53:52 EDT 2021


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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20210406/ceae894f/attachment-0001.htm>


More information about the Scons-users mailing list