Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Scons Visualstudio,多个生成目标生成重复的NMAKEOUT标记_C++_Visual Studio_Scons - Fatal编程技术网

C++ Scons Visualstudio,多个生成目标生成重复的NMAKEOUT标记

C++ Scons Visualstudio,多个生成目标生成重复的NMAKEOUT标记,c++,visual-studio,scons,C++,Visual Studio,Scons,我使用SCON输出MSVS项目,使用下面的(精简)示例: applicationProgramRelease = envRelease.Program(source = releaseObjs, target = "build/release.exe") applicationProgramDebug = envDebug.Program(source = debugObjs, target = "build/debug.exe") # generate msvs project projec

我使用SCON输出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中的多个构建目标

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

以下是版本生成目标的NMakeOutput标记:

    <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='release|Win32'">C:\OfflineProjects\scons\scons3_multipletargets\build\release.exe</NMakeOutput>
    <NMakeOutput Condition="'$(Configuration)|$(Platform)'=='debug|Win32'">C:\OfflineProjects\scons\scons3_multipletargets\build\release.exe</NMakeOutput>
C:\OfflineProjects\scons\scons3\u multipletargets\build\release.exe
这是正确的,因为发布目标应该启动release.exe。这是调试生成目标的标记:

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

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

这是您的Scons/Builder语法的问题。您还需要为两个单独的变量“Debug”和“Release”指定“runfile”参数。另请参见用户指南附录B中的MSVSProject Builder说明。

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