やりたいこと
bindgenを用いて、cuda.hやcuda_runtime.hをbindしたいです。
問題
cargo build
を行うと、
error: Wrong output in build script of `cuda-sys v0.1.0 (path/to/cuda-sys)`: `cargo:runstc-link-cuda.h`
とエラーが出ます。
私が書いたコードがどのようにwrong outputしているのかがわかりません。
書いたコードについて
bindするクレートとして、cuda-sysを作成しました。
├── build.rs ├── Cargo.lock ├── Cargo.toml ├── src │ ├── cuda.rs │ └── lib.rs └── wrapper.h
のようなファイル構造を用意しました。
それれぞれ中身は、
wrapper.h
wrapper.h
1#include "cuda.h"
build.rs
rust
1extern crate bindgen; 2 3use std::path::PathBuf; 4 5fn main() { 6 println!("cargo:runstc-link-cuda.h"); 7 8 let bindings = bindgen::Builder::default() 9 // .header("/usr/local/cuda/include/cuda.h") 10 .raw_line(r" 11//! Defines the FFI for CUDA. 12//! 13#![allow(non_camel_case_types)] 14#![allow(non_snake_case)] 15#![allow(non_upper_case_globals)] 16 ") 17 .clang_arg("-I") 18 .clang_arg("/usr/local/cuda/include".to_string()) 19 .header("wrapper.h") 20 .generate() 21 .expect("Unable to generate bindings"); 22 23 let out_path = PathBuf::from("src/").join("cuda.rs"); 24 bindings 25 .write_to_file(out_path) 26 .expect("Unable to write"); 27 28}
Cargo.toml
[package] name = "cuda-sys" version = "0.1.0" edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] libc="*" [build-dependencies] bindgen="*"
lib.rs
rust
1include!("cuda.rs"); 2 3#[cfg(test)] 4mod tests { 5 #[test] 6 fn it_works() { 7 assert_eq!(2 + 2, 4); 8 } 9}
Rustのバージョン
$ rustc --version > rustc 1.53.0 (53cb7b09b 2021-06-17)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。