Devolutions / Devolutions/conan-rs

successfully hardcoded the include path for CXX

Open
#28 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
41
Forks
12
PR merge metrics
No merged PRs in 30d

Description

I had to hard-code the include path

```
let include_path = "/home/emcp/.conan/data/twsapi/10.25.01/stonks/prod/package/2a448472971d7718b4207a1ee198ae4f78f2995d/include";
```

from my conan-rs installed library.. but is there a better more elegant way to get this wired together with CXX?

# build.rs

```
use std::path::{Path, PathBuf};
use cxx_build::CFG;
use conan::*;

fn main() {
// requires : sudo apt install libintelrdfpmath-dev
println!("cargo:rustc-link-lib=bidgcc000");

let default_conan_profile = "default";

let command: InstallCommand = InstallCommandBuilder::new()
.with_profile(&default_conan_profile)
.build_policy(BuildPolicy::Missing)
.recipe_path(Path::new("conanfile.txt"))
.build();

if let Some(build_info) = command.generate() {
println!("using conan build info");
build_info.cargo_emit();

let twsapi:&BuildDependency = build_info.get_dependency("twsapi").unwrap();

let twsapi_inc_dir:Vec<&str> = twsapi.get_include_dirs();

for dir in &twsapi_inc_dir {
let twsapi_inc_dir_path = Path::new(dir);
// Add TWSAPI Conan Pkg to Includes
CFG.exported_header_dirs.extend([twsapi_inc_dir_path]);
}
}

let build_command = BuildCommandBuilder::new()
.with_recipe_path(PathBuf::from("../../../conanfile.py"))
.with_build_path(PathBuf::from("../../../build/"))
.build();

if let Some(exit_status) = build_command.run() {
println!("conan build exited with {}", exit_status);
}

let include_path = "/home/emcp/.conan/data/twsapi/10.25.01/stonks/prod/package/2a448472971d7718b4207a1ee198ae4f78f2995d/include";

cxx_build::bridge("src/main.rs")
.file("src/gettingstarted.cc")
.include(include_path)
.flag_if_supported("-std=c++17")
.compile("twsapi_helloworld");

println!("cargo:rerun-if-changed=src/main.rs");
println!("cargo:rerun-if-changed=src/gettingstarted.cc");
println!("cargo:rerun-if-changed=include/gettingstarted.h");
}

```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.