2011-06-02 72 views
3

首先,我應該預先告誡你我是一個新的畢業生(和EE),而不是非常熟悉比我的hello世界程序更先進的構建過程。配置scons在windows命令提示符下使用posix參數的問題

我的問題是:我們正試圖使用​​SCons噸建立我們的項目在工作。我們的編譯器被稱爲'i686-pc-elf-gcc'並使用posix樣式的命令行參數。但每當我嘗試使用scons的它強制Windows參數,所以不是:

i686-pc-elf-gcc -o hello.o -c hello.cpp 

我得到

i686-pc-elf-gcc /Fohello.obj /c hello.cpp /TP /nologo 

其中我們的編譯器不喜歡。 這裏是我的SConscript文件看起來像

import os 

path = ['c:\\compiler\GCC\i686\bin', 
    '../../build/include'] 

env = Environment(ENV = {'PATH' : path,'TEMP' : os.environ['TEMP']}) 
env.Replace(CC = "i686-pc-elf-gcc") 
env['platform'] = 'posix' 

env.Program('hello.cpp') 

環境是在安裝了Cygwin的DOS提示符。我希望設定平臺是滿足需要的,但是我一直在撞牆而沒有結果。

+0

沒有「DOS提示符」了。和sheesh,人們抱怨make的語法! – 2011-06-02 21:12:59

回答

3

看起來像默認的SCons編譯器檢測正在撿起微軟編譯器套件。相反的:

env = Environment(ENV = {'PATH' : path,'TEMP' : os.environ['TEMP']}) 

也許嘗試:

env = Environment(tools = ['gcc', 'g++', 'gnulink'], 
        ENV = {'PATH' : path,'TEMP' : os.environ['TEMP']}) 

這樣,它會使用GCC工具集,而不是MSVC之一。如果你只覆蓋CC,那麼所有的標誌仍然是MSVC樣式,而編譯器實際上是GNU。所以完整的SConstruct應該是:

import os 
path = [r'c:\compiler\GCC\i686\bin', '../../build/include'] 
env = Environment(tools = ['gcc', 'g++', 'gnulink'], 
        ENV = {'PATH' : path,'TEMP' : os.environ['TEMP']}) 
env.Replace(CC = "i686-pc-elf-gcc") 
env.Program('hello.cpp') 
+1

@安迪,當命令是「-o hello.o ...」時,會發生這種情況,「 - 」表示「忽略錯誤」。你仍然必須設置我想象的[CC],否則如果你的GCC不在路徑中,它可能是空的。 – richq 2011-06-03 14:19:40

相關問題