2017-05-19 7 views
2

내 애플리케이션을 64 비트 실행 파일로 컴파일하도록 DUB를 구성하려면 어떻게해야합니까? 출력DUB에서 64 비트 컴파일러를 사용하도록 구성

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

을하지만 dub build :

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

내가 dub.json이 줄을 추가 시도 :

## 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. 

그래서 내가 함께 라인을 교체하려고 여기 내 dub.json입니다 :

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

이 오류가 발생했습니다 :

Error: unrecognized switch '--arch=x86_64' 

저는 Windows 10이고 DMD 2.074.0 및 Visual Studio 2015와 2017이 설치되어 있습니다.

+0

작은 D 프로그램을 수동으로 컴파일하고 연결하려 했습니까? 귀하의 환경을 구성하지 않았다고 의심됩니다. 아시다시피 DUB는 컴파일러/링커를 사용하고 있습니다. 제대로 설정하지 않으면 컴파일/링크가 실패합니다. 그것은 전혀 문제가되지 않을 수도 있습니다 ... 연결을 위해, DMD는 잘 기억한다면 Microsoft 링커를 사용합니다. – DejanLekic

+0

다른 D 프로그램을 컴파일하고 링크 할 수는 있지만, 64 비트 프로그램을 빌드하고'dmd --arch = x86_64 source \ app.d'를 실행하는 것은 처음으로 같은 오류가 발생합니다. – SurvivalMachine

+0

내가 아는 한 dmd에는 해당 옵션이 없습니다. 그것은 단지'-m64'를 가지고 있습니다 ... 정확히 제가 물었던 것입니다 - 여러분이 원하는 타겟을 위해 (DMD를 사용하여) 성공적으로 컴파일 할 수 있습니까 ??? – DejanLekic

답변

1

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

+0

문제는 dub이 환경 변수를 설정 한 후에도'-m64'를 허용하지 않는 것 같습니다. – SurvivalMachine

+0

"대상 유형"섹션에서 아키텍처/환경 설정에 대해 알려주는 것은 무엇입니까? 프로젝트가 어떻게 연결되어 있는지 (또는 연결되지 않았는지) 지시하는 것으로 보이므로 관계가 나에게 명확하지 않습니다. – chadjoan