| commit | cda7479d7f1c30e0193b6c636193057661b15c38 | [log] [tgz] |
|---|---|---|
| author | David Tolnay <[email protected]> | Tue Sep 16 23:29:16 2025 |
| committer | David Tolnay <[email protected]> | Tue Sep 16 23:29:16 2025 |
| tree | d2d001d3bcb210c7b5bd94abb403303f944d0b32 | |
| parent | a70ed352d9582ebd1359b12cd157716637ed67c3 [diff] |
Opt in to generate-macro-expansion when building on docs.rs
-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:
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:
[dependencies] link-cplusplus = "1"
An application that wants a particular one or the other linked should use:
[dependencies] link-cplusplus = { version = "1", features = ["libstdc++"] } # or link-cplusplus = { version = "1", 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:
[dependencies] link-cplusplus = { version = "1", 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/lib.rs extern crate link_cplusplus;