使用以下内容: 安装了Python版本2.7.13,Scons版本2.5.1,Visual Studio 2012 Express,但我不打算使用它。 安装了代码块和MinGW-W64-builds-4.3。
使用Scons在windows下编译C ++代码(networkit toolkit)。 Scons添加“/ Fo”作为编译选项。此选项仅适用于VC ++,而不适用于我尝试使用的MinGW。为什么Scons会添加这个标志?我已经检查了我的Sconstruct和参考build.conf文件,似乎无法明确地设置此标志。
我的Sconstruct文件在这里(http://www103.zippyshare.com/v/jSrMapGz/file.html),build.conf文件在这里(http://www11.zippyshare.com/v/aXGQA5b5/file.html)。
我想用g ++的“-o”标志完成编译,这相当于VC ++的/ Fo标志。我只是想知道Scons从哪里采摘这个标志:(
我是python和scons的新手。我通常使用VC ++ 2012,但必须使用networkit工具包进行项目,但它使用C11功能。我还不能更新到VC ++ 2015/2017。
感谢您的帮助!
答案 0 :(得分:1)
我检查了您的SConstruct文件,并将您的构建环境初始化为
env = Environment()
,它将环境变量“tools”设置为其标准值“default”。后一种设置意味着:让SCons找出当前系统中安装了哪些工具/编译器,并自动将相应的Builders添加到构建环境中。在Windows下,SCons更喜欢“vc”而不是“mingw”......目前这是硬编码的(我们正在努力为未来版本的核心源改变它)。
你能做什么,因为你知道你安装了一个你想要明确使用的“mingw”编译器,就是告诉SCons你只想使用“mingw”。 页面https://bitbucket.org/scons/scons/wiki/SconstructShortMingwWin32中的以下示例显示了此基本配方:
import os
#don't use the default environment
DefaultEnvironment(tools=[])
#create an environment that uses mingw tools
env = Environment(ENV=os.environ, tools=['mingw'])
#the target will be myprogram.exe (in win32)
#the source files will be every file in the
#current directory that matches "*.cpp"
env.Program(target='myprogram', source = Glob('*.cpp'))
如需进一步的帮助和参考,请考虑查看我们的User Guide和Man page。