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

Vegard Lillevoll lilveg at gmail.com
Tue Apr 6 03:46:00 EDT 2021


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


More information about the Scons-users mailing list