Skip to content

.clang_arg("-x c++") causes failure in generate #1855

@kulp

Description

@kulp

As reported by @virtualritz in #1852, using clang_arg("-x c++") causes bindgen's generate to return an Err result.

As a workaround, .clang_arg("-xc++") can be used.

From this build.rs,

use std::path::PathBuf;

fn main() {
    let bindings = bindgen::Builder::default()
        .header("wrapper.hpp")
        .clang_arg("-x c++")            // does not work
        .generate()
        .expect("Couldn't make bindings!");

    let out_path = PathBuf::from(std::env::var("OUT_DIR").unwrap());
    bindings.write_to_file(out_path.join("bindings.rs"))
        .expect("Couldn't write bindings!");
}

RUST_BACKTRACE=1 cargo build -vv shows :

error: language not recognized: ' c++', err: true
warning: '-x c++': 'linker' input unused [-Wunused-command-line-argument], err: false
thread 'main' panicked at 'Couldn't make bindings!: ()', build.rs:4:20
stack backtrace:
   0: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
   1: core::fmt::write
   2: std::io::Write::write_fmt
   3: std::panicking::default_hook::{{closure}}
   4: std::panicking::default_hook
   5: std::panicking::rust_panic_with_hook
   6: rust_begin_unwind
   7: core::panicking::panic_fmt
   8: core::result::unwrap_failed
   9: core::result::Result<T,E>::expect
  10: build_script_build::main
  11: std::rt::lang_start::{{closure}}
  12: std::rt::lang_start_internal
  13: std::rt::lang_start
  14: main
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions