我使用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语法有关,或者这是框架内的实际错误?
答案 0 :(得分:0)
SCons / Builder语法存在问题。您还要为两个单独的变体“Debug”和“Release”指定“runfile”参数。另请参阅UserGuide http://www.scons.org/doc/production/HTML/scons-user.html附录B中的MSVSProject Builder说明。