2014-01-13 37 views
0

我想建立一個「Hello World」 d與SConstruct項目,並獲得此輸出:使用SCons和DMD錯誤:無法識別的文件擴展名Ø

D:\projects\test>scons 
scons: Reading SConscript files ... 
scons: done reading SConscript files. 

scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly 
File "C:\Python27\Scripts\scons.py", line 192, in <module> 
scons: Building targets ... 
dmd -I. -c -ofsrc\main.o src\main.d 
dmd -ofhello.exe src\main.o 
Error: unrecognized file extension o 
scons: *** [hello.exe] Error 1 
scons: building terminated because of errors. 

而且我發現DMD編譯器生成與目標文件* .obj擴展名,而不是* .o,並且不能用* .o文件處理。

有沒有辦法讓SCons使用dmd目標文件的默認輸出或是爲它們傳遞* .obj文件擴展名?或者這只是一個錯誤?

我SConstruct文件:

import os 
env = Environment(ENV=os.environ) 
env.Object(target = 'hello', source = 'src/main.d') 

我的平臺是Windows 7 x86_64的。

dmd vervion是2.064.2。

回答

0

你需要告訴SCons使用D編譯器,因爲我不認爲它默認這樣做。這不僅僅是加載編譯器,它還設置了相應的構造變量,其中包括設置所詢問的對象文件擴展名。

如果您按照以下方式創建環境,那麼D編譯器和相關的構造變量將被加載。

env = Environment(tools = ['default','dmd'])

+0

這不起作用。用你提供的SCons產生這一行'I. -c -ofsrc \ main.obj src \ main.d',根本不使用任何編譯器。使用'env = Environment'(ENV = os.environ,tools = ['default','dmd'])'scons命令告訴dmd生成* .o文件。 – Betelgeyser

+0

當我發現這種情況發生在MinGW gcc編譯器的路徑處於'PATH'變量中時。最後,它開始工作'env = Environment(ENV = {'PATH':['C:\\ path \\ to \\ dmd \\ compiler']})'。這對我來說是可以接受的,但我想知道應該怎樣做纔對。 – Betelgeyser

相關問題