Merge pull request #8 from dtolnay/doc

Document extern crate link_cplusplus;
tree: 5aa99bfc9e43f610dac46d559533620938038f62
  1. .clippy.toml
  2. .github/
  3. .gitignore
  4. Cargo.toml
  9. src/

-lstdc++ or -lc++

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.


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

link-cplusplus = "1.0"

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

link-cplusplus = { version = "1.0", features = ["libstdc++"] }

# or

link-cplusplus = { version = "1.0", features = ["libc++"] }

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:

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

Lastly, make sure to add an explicit extern crate dependency to your crate root, since the link-cplusplus crate will be otherwise unused and its link flags dropped.

// src/

extern crate link_cplusplus;