Build Scons和dmd错误:无法识别的文件扩展名o

Build Scons和dmd错误:无法识别的文件扩展名o,build,scons,dmd,Build,Scons,Dmd,我正在尝试使用SConstruct构建hello world D项目,并获得以下输出: 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 correctl

我正在尝试使用SConstruct构建hello world D项目,并获得以下输出:

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.
我的平台是Windows 7 x86_64


dmd vervion是2.064.2。

您需要告诉SCons使用D编译器,因为我认为默认情况下它不会这样做。这不仅仅是加载编译器,它还设置相应的构造变量,其中包括设置您所询问的对象文件扩展名

如果按照以下方式创建环境,则将加载D编译器和相关构造变量


env=Environmenttools=['default','dmd']

这也不起作用。使用您提供的行,SCons生成这一行I.-c-ofsrc\main.obj src\main.d,并且根本不使用任何编译器。使用env=EnvironmentENV=os.environ行,tools=['default','dmd']scons告诉dmd构建*.o文件。我发现,当MinGW gcc编译器的路径位于path变量中时,就会发生这种情况。最后,它开始工作了env=EnvironmentENV={'PATH':['C:\\PATH\\to\\dmd\\compiler']}。这对我来说是可以接受的,但我想知道应该怎样做才对。
import os
env = Environment(ENV=os.environ)
env.Object(target = 'hello', source = 'src/main.d')