如何告诉Scons使用MinGW而不是MSVC?

14

我正在尝试在 Windows 上构建 zxing 的 C++ 端口,但 scons 失败并报错:

cl : Command line error D8021 : invalid numeric argument '/Wextra'

我同时安装了VS2010和MinGW,但是scons尝试使用MSVC编译器,即使SConscript文件假定使用gcc并使用特定于gcc的参数,这会导致错误。

我该如何告诉scons使用MinGW呢?

2个回答

17

Scons 默认在 Windows 平台上使用 MSVC 编译器。若要使用 Mingw 编译器,请在创建 Environment 对象时使用 tools 参数。

env = Environment(tools = ['mingw'])

然后使用 env.Program() 而不是 Program()。


对我没有用。它说cc = gcc,但是在构建目标时仍然使用cl(bug?) - ljgww
1
找到了:应该使用 env.Program(...) 而不是 Program(your_code),请参考:https://dev59.com/hnvaa4cB1Zd3GeqPEYdQ - ljgww
@ljgww 要么像你发现的那样调用 env.Program,要么改变默认构建环境而不是创建一个新的。你可以通过调用 DefaultEnvironment 而不是 Environment 来实现。 - Piotr Siupa
据我所知,如果您不在“工具”中指定MinGW链接器,可能会出现一些复杂情况。我认为它被称为“gnulink”。还有一个针对不同问题的答案,展示了另一种设置工具的方法:https://dev59.com/iGXWa4cB1Zd3GeqPQ9gi#11391819 - Piotr Siupa

2
以下是我在Windows上使用mingw的工作SConstruct:

import os

env = Environment(ENV={'PATH': os.environ['PATH'], 'TEMP': os.environ['TEMP']}, tools=['mingw'])
env.Program('main.cpp')

Windows环境变量PATH和TEMP可以被外部设置。环境变量PATH应该包括mingw的bin文件夹路径。请参考此链接

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接