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

时间:2015-05-05 09:03:35

标签: c++ visual-studio scons

我使用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>

哪个是正确的,因为发布目标应该是lauch release.exe。这是调试构建目标的标记:

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

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

1 个答案:

答案 0 :(得分:0)

SCons / Builder语法存在问题。您还要为两个单独的变体“Debug”和“Release”指定“runfile”参数。另请参阅UserGuide http://www.scons.org/doc/production/HTML/scons-user.html附录B中的MSVSProject Builder说明。