我想在Windows 7 64位下使用scons
构建一个程序。我也有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中搜索时,我看到了提到的这个问题并且有解决方案,但我的问题是我不应该更改程序的代码,因为我确信代码是真的。
如果您有任何想法,我将非常感谢您的帮助
答案 0 :(得分:4)
首先,这不是错误。这是一个警告。因此它不会阻止你的构建。如果您的构建失败,那是因为其他原因。
此警告的含义是构建中有两个或多个库或程序需要相同的.o文件。这当前不是问题,但是如果您(比方说)更改一个实例的编译开关,则意味着您对同一个对象有2个不兼容的需求集,这将导致构建错误。
答案 1 :(得分:2)
正如之前的评论中所提到的,问题是存在以两种方式编译的目标(=目标文件)。 我的建议是为两个版本使用VariantDir构建。这允许两种环境的不同输出。
例如。
build_flavors = ['mingw', 'VS']:
for flavor in build_flavors:
env = Environment()
VariantDir(os.path.join('build', flavor))
# build using the environment
如果您使用的是SConscripts,则可以将variant_dir='some/variant/dir
传递给该电话。
答案 2 :(得分:0)
有一个scons标志可以消除这个警告:
for_date