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-3.1.2\'), join(sys.prefix, \'scons-3.1.2\'), 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-3.1.2\'), join(sys.prefix, \'scons-3.1.2\'), 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 realize that the variants can be passed in a list as a single call, but maintaining seperate 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!
This is a bug in SCons, and has been submitted