Windows에서 Elixir C++ 사용 라이브러리 빌드가 이끼를 피합니다.

fukuoka.ex의 piacere입니다.
방문해 주셔서 감사합니다

Windows에서 Elixir의 C++ 사용 라이브러리의 일부 (예 : bcrypt_elixir)가 빌드에서 이끼를 피하는 단계를 설명합니다.

Visual Studio나 「Build Tools for Visual Studio 2017」을 인스톨 했지만, 잘 빌드할 수 없다고 하는 분도 참고해 주세요

내용이 재미 있거나 마음에 들면 "좋아요"잘 부탁드립니다

본 칼럼의 검증 환경, 사전 구축의 커멘드



이 칼럼은 다음 환경에서 검증되었습니다.
  • Windows 10
  • Elixir 1.7.4             ※ 최신 버전의 설치 절차는 여기
  • Phoenix 1.4.0         ※ 최신 버전의 설치 절차는 여기
  • Build Tools for Visual Studio 2017※최신 버전의 설치 절차는 여기

  • "Phoenix"은 Elixir 웹 프레임 워크입니다.

    그리고 다음 명령으로 Phoenix PJ를 구축하고 있습니다.
    mix phx.new materia_sample --no-ecto --no-webpack
    cd materia_sample
    mix compile
    

    mix phx.gen.secret에서 이끼



    bcrypt_elixir를 사용하는 라이브러리의 예로, fukuoka.ex 어드바이저의 SI 마이스터 @ Tsuchiro가 지난달 출시 한 OSS "Materia"「Materia를 도입해 로그인 인증해 본다」에 따라 설정하는 동안 "mix phx.gen.secret"그런 다음 bcrypt_elixir 빌드에서 이끼

    그건 그렇고, Materia는 웹 사용자 인증/권한 관리/트랜잭션 제어를 Elixir에 추가할 수 있는 라이브러리입니다.

    이끼 때 오류 메시지는 다음과 같습니다.
    mix phx.gen.secret
    …(ビルドが続く)…
    ==> bcrypt_elixir
    
    Microsoft(R) Program Maintenance Utility Version 14.14.26433.0
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
            del /Q /F priv
    c:\piacere\code\materia_sample\deps\bcrypt_elixir\priv が見つかりませんでした。
            erl -eval "io:format(\"~s~n\", [lists:concat([\"ERTS_INCLUDE_PATH=\", code:root_dir(), \"/erts-\", erlang:system_info(version), \"/include\"])])" -s init stop -noshell > Makefile.auto.win
            nmake /                   /F Makefile.win priv\bcrypt_nif.dll
    
    Microsoft(R) Program Maintenance Utility Version 14.14.26433.0
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
            if NOT EXIST "priv" mkdir "priv"
            cl /O2 /EHsc /I"c_src" /I"c:/Tools/erl9.0/erts-9.0/include" /LD /MD /Fepriv\bcrypt_nif.dll  c_src\bcrypt_nif.c c_src\blowfish.c
    Microsoft(R) C/C++ Optimizing Compiler Version 19.14.26433 for x64
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
    bcrypt_nif.c
    c_src\bcrypt_nif.c(52): fatal error C1083: include ファイルを開けません。'stdio.h':No such file or directory
    blowfish.c
    c:\piacere\code\materia_sample\deps\bcrypt_elixir\c_src\blf.h(37): fatal error C1083: include ファイルを開けません。'stdint.h':No such file or directory
    コードを生成中...
    NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\bin\Hostx64\x64\cl.EXE"' : リターン コード '0x2'
    Stop.
    NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\bin\Hostx64\x64\nmake.EXE"' : リターン コード '0x2'
    Stop.
    could not compile dependency :bcrypt_elixir, "mix compile" failed. You can recompile this dependency with "mix deps.compile bcrypt_elixir", update it with "mix deps.update bcrypt_elixir" or clean it with "mix deps.clean bcrypt_elixir"
    ==> materia_sample
    ** (Mix) Could not compile with "nmake" (exit status: 2).
    One option is to install a recent version of
    [Visual C++ Build Tools](http://landinghub.visualstudio.com/visual-cpp-build-tools)
    either manually or using [Chocolatey](https://chocolatey.org/) -
    `choco install VisualCppBuildTools`.
    
    After installing Visual C++ Build Tools, look in the "Program Files (x86)"
    directory and search for "Microsoft Visual Studio". Note down the full path
    of the folder with the highest version number. Open the "run" command and
    type in the following command (make sure that the path and version number
    are correct):
    
        cmd /K "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
    
    This should open up a command prompt with the necessary environment variables
    set, and from which you will be able to run the "mix compile", "mix deps.compile",
    and "mix test" commands.
    

    오류 메시지를 보면 "stdio.h"를 찾을 수 없으며 nmake가 실패했다고 표시되고 그 아래에 대책 명령이 포함되어 있지만 정보가 오래되었으며 "Build Tools for Visual Studio 2017"에서 작동하지 않으므로 Build Tools for Visual Studio 2017에 맞는 설정이 필요합니다.

    Visual Studio 빌드 설정을 수행하고 빌드를 통과



    다음 명령을 실행하면 C++ 헤더 파일에 대한 경로를 통과하고 빌드가 통과합니다.

    덧붙여 「Build Tools for Visual Studio 2017」의 인스톨 위치를 변경하고 있는 경우는, 아래의 「~\2017」보다 앞의 폴더 패스를 적절히 수정해 주세요

    64비트 Windows의 경우
    "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64
    

    32비트 Windows의 경우
    "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x86
    

    다시 빌드를 할 것입니다.
    mix phx.gen.secret
    …(ビルドが続く)…
    ==> bcrypt_elixir
    
    Microsoft(R) Program Maintenance Utility Version 14.16.27025.1
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
            del /Q /F priv
            erl -eval "io:format(\"~s~n\", [lists:concat([\"ERTS_INCLUDE_PATH=\", code:root_dir(), \"/erts-\", erlang:system_info(version), \"/include\"])])" -s init stop -noshell > Makefile.auto.win
            nmake /                   /F Makefile.win priv\bcrypt_nif.dll
    
    Microsoft(R) Program Maintenance Utility Version 14.16.27025.1
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
            if NOT EXIST "priv" mkdir "priv"
            cl /O2 /EHsc /I"c_src" /I"c:/Tools/erl9.0/erts-9.0/include" /LD /MD /Fepriv\bcrypt_nif.dll  c_src\bcrypt_nif.c c_src\blowfish.c
    Microsoft(R) C/C++ Optimizing Compiler Version 19.16.27025.1 for x64
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
    bcrypt_nif.c
    blowfish.c
    コードを生成中...
    Microsoft (R) Incremental Linker Version 14.16.27025.1
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
    /dll
    /implib:priv\bcrypt_nif.lib
    /out:priv\bcrypt_nif.dll
    bcrypt_nif.obj
    blowfish.obj
       ライブラリ priv\bcrypt_nif.lib とオブジェクト priv\bcrypt_nif.exp を作成中
    Compiling 3 files (.ex)
    Generated bcrypt_elixir app
    …(ビルドが続く)…
    

    잘 빌드 할 수있었습니다.

    p.s.「좋아요」 잘 부탁드립니다



    원한다면 페이지 왼쪽 상단의 또는 을 클릭하십시오.

    좋은 웹페이지 즐겨찾기