やること
- Visual Studio build tools のパスを通す
- 開発者モードをオンにする
はじめに
deno を Windows でビルドしようとしたときに失敗したので必要な手順を残しておきます。
Windows で開発している人の一助になれば幸いです。
Visual Studio build tools のパスを通す
error: failed to run custom build command for `libz-sys v1.1.20`
Caused by:
process didn't exit successfully: `%USERPROFILE%\AppData\Local\Temp\cargo-installvNqHIq\release\build\libz-sys-869690de956ef958\build-script-build` (exit code: 101)
--- stdout
cargo:rerun-if-env-changed=LIBZ_SYS_STATIC
cargo:rerun-if-changed=build.rs
cargo:rerun-if-changed=zng/cmake.rs
cargo:rerun-if-changed=zng/cc.rs
CMAKE_TOOLCHAIN_FILE_x86_64-pc-windows-msvc = None
CMAKE_TOOLCHAIN_FILE_x86_64_pc_windows_msvc = None
HOST_CMAKE_TOOLCHAIN_FILE = None
CMAKE_TOOLCHAIN_FILE = None
CMAKE_GENERATOR_x86_64-pc-windows-msvc = None
CMAKE_GENERATOR_x86_64_pc_windows_msvc = None
HOST_CMAKE_GENERATOR = None
CMAKE_GENERATOR = None
CMAKE_PREFIX_PATH_x86_64-pc-windows-msvc = None
CMAKE_PREFIX_PATH_x86_64_pc_windows_msvc = None
HOST_CMAKE_PREFIX_PATH = None
CMAKE_PREFIX_PATH = None
CMAKE_x86_64-pc-windows-msvc = None
CMAKE_x86_64_pc_windows_msvc = None
HOST_CMAKE = None
CMAKE = None
running: "cmake" "%CARGO_HOME%\\registry\\src\\index.crates.io-6f17d22bba15001f\\libz-sys-1.1.20\\src/zlib-ng" "-G" "Visual Studio 17 2022" "-Thost=x64" "-Ax64" "-DBUILD_SHARED_LIBS=OFF" "-DZLIB_COMPAT=ON" "-DZLIB_ENABLE_TESTS=OFF" "-DWITH_GZFILEOP=ON" "-DCMAKE_INSTALL_PREFIX=%USERPROFILE%\\AppData\\Local\\Temp\\cargo-installvNqHIq\\release\\build\\libz-sys-f64c2b82c1fa3508\\out" "-DCMAKE_C_FLAGS= -nologo -MD -Brepro" "-DCMAKE_C_FLAGS_RELEASE= -nologo -MD -Brepro" "-DCMAKE_CXX_FLAGS= -nologo -MD -Brepro" "-DCMAKE_CXX_FLAGS_RELEASE= -nologo -MD -Brepro" "-DCMAKE_ASM_FLAGS= -nologo -MD -Brepro" "-DCMAKE_ASM_FLAGS_RELEASE= -nologo -MD -Brepro" "-DCMAKE_BUILD_TYPE=Release"
--- stderr
thread 'main' panicked at %CARGO_HOME%\registry\src\index.crates.io-6f17d22bba15001f\cmake-0.1.50\src\lib.rs:1098:5:
failed to execute command: program not found
is `cmake` not installed?
build script failed, must exit now
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
cmake
が見つからずにエラーが発生してしまう場合はパスを通す必要があります。
Rust のインストール時に Visual Studio Build Tools をインストールしているはずですが、 cmd.exe を通常起動してもパスは通っていません。
スタートメニューから Developer Command Prompt を探すと各機能が使える状態で起動できるショートカットが見つかるので、そこから cmd.exe を起動しましょう。
cmake --version
で cmake
へのパスが通っていることが確認出来たら、そのシェルからビルドを実行します。
開発者モードをオンにする
Windows では開発者モードを有効にしないとビルドできない場合があるようです。
Windows10 では、
設定 → 更新とセキュリティ → 開発者向け → 開発者モード
Windows11では、
設定 → システム → 開発者向け → 開発者モード
から切り替えることができます。
libclang.dll
へのパスを通す
error: failed to run custom build command for `libsqlite3-sys v0.30.1`
Caused by:
process didn't exit successfully: `%USERPROFILE%\AppData\Local\Temp\cargo-installJtNiZv\release\build\libsqlite3-sys-0c91121a2d754a43\build-script-build` (exit code: 101)
--- stdout
cargo:rerun-if-env-changed=LIBSQLITE3_SYS_USE_PKG_CONFIG
cargo:rerun-if-env-changed=LIBSQLITE3_SYS_BUNDLING
--- stderr
thread 'main' panicked at %CARGO_HOME%\registry\src\index.crates.io-1949cf8c6b5b557f\bindgen-0.69.5\lib.rs:622:31:
Unable to find libclang: "couldn't find any valid shared libraries matching: ['clang.dll', 'libclang.dll'], set the `LIBCLANG_PATH` environment variable to a path where one of these files can be found (invalid: [])"
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
error: failed to compile `deno v2.2.3`, intermediate artifacts can be found at `%USERPROFILE%\AppData\Local\Temp\cargo-installJtNiZv`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.
clang.dll
または libclang.dll
が見つからない場合はインストールしてパスを通す必要があります。
Visual Studio Installer のオプションで、 C++ Clang tools for Windows
(Windows 用 C++ Clang コンパイラ
) をインストールすると clang をインストールすることができます。
その後、 Developer Command Prompt で libclang.dll
を探すと見つけることができるはずです。
cmd> where libclang.dll
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\Llvm\bin\libclang.dll
パスが通っているように見えるのですが、実はこの libclang.dll
ではコンパイルすることができません。
Llvm ディレクトリ直下はなく、 Llvm/x64 配下のディレクトリを指定する必要があります。
cmd >rg --files -g **/*clang.dll
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\Llvm\bin\libclang.dll
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\Llvm\x64\bin\libclang.dll
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\Llvm\ARM64\bin\libclang.dll
cmd> set LIBCLANG_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\Llvm\x64\bin
cmd> cargo install --locked deno