Scons Visualstudio,多个构建目标生成重复的 NMakeOutput 标签

Scons Visualstudio, multiple build targets generates duplicate NMakeOutput tag

我使用 scons 输出一个 MSVS 项目,使用下面的(精简)示例:

applicationProgramRelease = envRelease.Program(source = releaseObjs, target = "build/release.exe")
applicationProgramDebug = envDebug.Program(source = debugObjs, target = "build/debug.exe")

# generate msvs project
project = env.MSVSProject(target = 'application' + env['MSVSPROJECTSUFFIX'],
                srcs = (Glob('source/*.cpp', strings=True)),
                incs = (Glob('include/*.hpp', strings=True)),
                buildtarget = applicationProgramDebug + applicationProgramRelease,
                variant = ['debug', 'release'])

这会生成一个项目,同时包含调试和发布构建目标。但是,它似乎忽略了 .vcxproj 中的多个构建目标。

在 visual studio 中,我可以为调试和发布构建,这似乎工作得很好,除了在调试和发布中它都会启动 release.exe。仔细查看 .vcxproj,我发现 NMakeOutput 标签包含错误的可执行文件

下面是发布构建目标的 NMakeOutput 标签:

    <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='release|Win32'">C:\OfflineProjects\scons\scons3_multipletargets\build\release.exe</NMakeOutput>

这是正确的,因为发布目标应该启动 release.exe。这是调试构建目标的标签:

    <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='debug|Win32'">C:\OfflineProjects\scons\scons3_multipletargets\build\release.exe</NMakeOutput>

如你所见;调试目标启动 release.exe 这是错误的!这个问题与我的 Scons 语法有关,还是框架内部的实际错误?

您的 SCons/Builder 语法有问题。您还想为两个单独的变体 "Debug" 和 "Release" 指定 "runfile" 参数。另请参阅用户指南附录 B 中对 MSVSProject Builder 的描述 http://www.scons.org/doc/production/HTML/scons-user.html