0

我正在尝试使用 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.

此外,我发现 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 版本是 2.064.2。

4

1 回答 1

0

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

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

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

于 2014-01-13T08:38:55.187 回答