Visual c++ 如何解决“;scons:警告:为目标指定了两个不同的环境”;[[但不要更改文件]]

Visual c++ 如何解决“;scons:警告:为目标指定了两个不同的环境”;[[但不要更改文件]],visual-c++,scons,Visual C++,Scons,我想在Windows7 64位下使用scons构建一个程序。我也有微软Visual Studio C++和MIW.< 但是,当我用scon构建程序(包括几个文件和子目录)时,我看到了这个错误 two different environments were specified in target C:\....... .obj but they appear to have the same action ${TEMPFILE($SHCC _MSVC _OUTPUT _FLAG /c $CHAN

我想在Windows7 64位下使用
scons
构建一个程序。我也有微软Visual Studio C++和MIW.< 但是,当我用scon构建程序(包括几个文件和子目录)时,我看到了这个错误

two different environments were specified in target  C:\....... .obj but they appear to have the same action ${TEMPFILE($SHCC _MSVC _OUTPUT _FLAG /c $CHANGED $SHCFLAGS $SHCCFLAGS $_CCCOMCOM
注:。。。。。是我要安装的文件的路径

当我在stackoverflow中搜索时,我看到了提到的这个问题,并且有解决方案,但我的问题是我不应该更改程序的代码,因为我确信代码是正确的


如果您能给我一些建议,我将非常感谢您的帮助。首先,这不是一个错误。这是一个警告。因此,它不会停止你的建设。如果您的构建失败,那是因为其他原因


此警告的意思是,您的生成中有两个或多个库或程序需要相同的.o文件。这目前不是问题,但如果(比如)更改一个实例的编译开关,这将意味着您对同一对象有两组不兼容的需求,这将导致生成错误。

首先,这不是错误。这是一个警告。因此,它不会停止你的建设。如果您的构建失败,那是因为其他原因


此警告的意思是,您的生成中有两个或多个库或程序需要相同的.o文件。这目前不是问题,但如果(比如)更改一个实例的编译开关,这将意味着您对同一对象有两组不兼容的需求,这将导致生成错误。

如前一条评论所述,问题在于有一个目标(=对象文件)以两种方式编译。 我的建议是对这两个版本使用VariantDir版本。这允许两种环境有不同的输出

比如说

build_flavors = ['mingw', 'VS']:
for flavor in build_flavors:
    env = Environment()
    VariantDir(os.path.join('build', flavor))
    # build using the environment

如果您使用的是SConscripts,则可以将
variant\u dir='some/variant/dir
传递给调用。

如前一条注释所述,问题在于有一个目标(=对象文件)以两种方式编译。 我的建议是对这两个版本使用VariantDir版本。这允许两种环境有不同的输出

比如说

build_flavors = ['mingw', 'VS']:
for flavor in build_flavors:
    env = Environment()
    VariantDir(os.path.join('build', flavor))
    # build using the environment

如果您使用的是SConscripts,则可以将
variant\u dir='some/variant/dir
传递给呼叫。

有一个scons标志用于使此警告静音:

scons --warn=no-duplicate-environment

有一个scons标志用于关闭此警告:

scons --warn=no-duplicate-environment

虽然这可能会消除问题,但用户的scons使用情况仍然存在问题。虽然这可能会消除问题,但用户的scons使用情况仍然存在问题。