2015-05-05 44 views
0

我使用scons的输出MSVS项目,使用下面的(下调)例如:使用SCons VisualStudio中,多个构建目标产生重复NMakeOutput标签

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语法有关吗?或者这是框架内的实际错误?

回答

0

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

+0

谢谢!添加行runfile = ['build/debug','build/release']修复了这个问题!干杯! – Basez