Visual c++ 如何解决“;scons:警告:为目标指定了两个不同的环境”;[[但不要更改文件]]
我想在Windows7 64位下使用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
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使用情况仍然存在问题。