2017-04-18 136 views
1

使用以下內容: Python版本2.7.13,Scons版本2.5.1,Visual Studio 2012 express已安裝,但我不打算使用它。 安裝代碼塊和MinGW-W64-builds-4.3。使用scons在windows下編譯C++代碼,scons添加「/ Fo」作爲編譯選項

使用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++二千○十七分之二千○一十五呢。

感謝您的幫助!

+0

請注意NetworKit頁面本身(在github上)提到目前不支持在Windows下構建軟件。至少,沒有人成功完成此任務... – dirkbaechle

+0

@dirkbaechle:感謝您在解決此問題上的幫助,我能夠在Windows上編譯和使用NetworKit。我已經在NetworKit新聞組上發佈了詳細信息。 –

回答

1

我檢查你的SConstruct文件,而你初始化構建環境爲

env = Environment() 

,這讓環境變量「工具「設置爲其標準值「默認」。後者的設置意味着:讓SCons找出當前系統中安裝了哪些工具/編譯器,並自動將相應的構建器添加到構建環境中。在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 GuideMan page

+0

感謝您的回覆。我明白現在會發生什麼。感謝您的及時和詳細的答覆。 –