Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dtolnay/link-cplusplus
Link libstdc++ or libc++ automatically or manually
https://github.com/dtolnay/link-cplusplus
Last synced: 6 days ago
JSON representation
Link libstdc++ or libc++ automatically or manually
- Host: GitHub
- URL: https://github.com/dtolnay/link-cplusplus
- Owner: dtolnay
- License: apache-2.0
- Created: 2020-01-24T22:43:42.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-11-09T02:47:15.000Z (2 months ago)
- Last Synced: 2025-01-08T04:17:49.747Z (13 days ago)
- Language: Rust
- Homepage:
- Size: 101 KB
- Stars: 45
- Watchers: 3
- Forks: 7
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE-APACHE
Awesome Lists containing this project
README
`-lstdc++` or `-lc++`
=====================[](https://github.com/dtolnay/link-cplusplus)
[](https://crates.io/crates/link-cplusplus)
[](https://docs.rs/link-cplusplus)
[](https://github.com/dtolnay/link-cplusplus/actions?query=branch%3Amaster)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 the following in
Cargo.toml:```toml
[dependencies]
link-cplusplus = "1.0"
```An application that wants a particular one or the other linked should use:
```toml
[dependencies]
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:```toml
[dependencies]
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.```rust
// src/lib.rsextern crate link_cplusplus;
```
#### License
Licensed under either of Apache License, Version
2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in this project by you, as defined in the Apache-2.0 license,
shall be dual licensed as above, without any additional terms or conditions.