Drop to 2015 edition

This crate doesn't contain any code, might as well support any compiler.
1 file changed
tree: a46cce4198f67153eacd648577a763a2ced3f260
  1. src/
  2. .gitignore
  3. .travis.yml
  4. build.rs
  5. Cargo.toml
  6. LICENSE-APACHE
  7. LICENSE-MIT
  8. README.md
README.md

-lstdc++ or -lc++

Build Status Latest Version Rust Documentation

This crate exists for the purpose of passing -lstdc++ or -lc++ to the linker, while making it possible for an application to make that choice on behalf of its library dependencies.

Without this crate, a library would need to:

  • pick one or the other to link, with no way for downstream applications to override the choice;
  • or link neither and require an explicit link flag provided by downstream applications even if they would be fine with a default choice;

neither of which are good experiences.

Options

An application or library that is fine with either of libstdc++ or libc++ being linked, whichever is the platform's default, should use:

[dependencies]
link-cplusplus = "0.0"

An application that wants a particular one or the other linked should use:

[dependencies]
link-cplusplus = { version = "0.0", features = ["libstdcxx"] }

# or

link-cplusplus = { version = "0.0", features = ["libcxx"] }

An application that wants to handle its own more complicated logic for link flags from its build script can make this crate do nothing by using:

[dependencies]
link-cplusplus = { version = "0.0", features = ["nothing"] }

License