0

scons我想在 windows 7 64 位下构建一个程序。我也有 Microsoft Visual Studio c++ 和 mingw。

但是,当我使用 scons 构建程序(包括几个文件和子目录)时,我看到了这个错误

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中搜索时,我看到提到了这个问题并且有解决方案,但我的问题是我不应该更改程序的代码,因为我确定代码是正确的。

如果您给我任何想法,我将非常感谢您的帮助

4

3 回答 3

4

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

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

于 2013-08-01T10:13:11.063 回答
2

正如之前的评论中提到的,问题在于有一个以两种方式编译的目标(=一个目标文件)。我的建议是对两个构建使用 VariantDir 构建。这允许两种环境有不同的输出。

例如。

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

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

于 2013-08-01T12:18:54.520 回答
0

有一个 scons 标志可以消除此警告:

scons --warn=no-duplicate-environment
于 2016-12-08T19:11:01.020 回答