配置DUB以使用64位编译器

时间:2017-05-19 15:23:23

标签: d dub

如何配置DUB以将我的应用程序编译为64位可执行文件?这是我的dub.json:

{
    "name": "dvulkanbase",
    "targetType": "executable",
    "description": "Vulkan boilerplate",
    "authors": ["Myself"],
    "homepage": "http://something",
    "license": "MIT"
}

我尝试将此行添加到dub.json:

    "dflags-dmd": ["-m64"]

但随后dub build输出:

## Warning for package dvulkanbase ##

The following compiler flags have been specified in the package description
file. They are handled by DUB and direct use in packages is discouraged.
Alternatively, you can set the DFLAGS environment variable to pass custom flags
to the compiler, or use one of the suggestions below:

-m64: Use --arch=x86/--arch=x86_64/--arch=x86_mscoff to specify the target architecture

Performing "debug" build using dmd for x86.

所以我尝试用以下代码替换该行:

"dflags-dmd": ["--arch=x86_64"]

但得到了这个错误:

Error: unrecognized switch '--arch=x86_64'

我在Windows 10上,安装了DMD 2.074.0和Visual Studio 2015和2017。

1 个答案:

答案 0 :(得分:2)

我很确定(如果我错了,请纠正我)你没有为64位环境正确配置DMD。

看看http://dlang.org/dmd-windows.html#environment。 - 关键信息是您需要正确设置LINKCMD64变量。示例:set LINKCMD64=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\link.exe

然后指示DMD编译器(使用-m64选项)编译D代码并使用Microsoft的链接器生成64位可执行文件。

最后,您需要修改JSON或SDL DUB文件以包含适当的环境设置。 (看看https://code.dlang.org/package-format?lang=json#target-types

如果您未在DUB文件中指定环境,则必须在dub build中明确提供该环境。示例:dub build --arch=x86_64