Go to file
openharmony_ci 42b102ac1e
Some checks failed
CI / Rust ${{matrix.rust}} on ${{matrix.os}} (macos, 1.34.0) (push) Has been cancelled
CI / Rust ${{matrix.rust}} on ${{matrix.os}} (macos, beta) (push) Has been cancelled
CI / Rust ${{matrix.rust}} on ${{matrix.os}} (macos, nightly) (push) Has been cancelled
CI / Rust ${{matrix.rust}} on ${{matrix.os}} (macos, stable) (push) Has been cancelled
CI / Rust ${{matrix.rust}} on ${{matrix.os}} (ubuntu, 1.34.0) (push) Has been cancelled
CI / Rust ${{matrix.rust}} on ${{matrix.os}} (ubuntu, beta) (push) Has been cancelled
CI / Rust ${{matrix.rust}} on ${{matrix.os}} (ubuntu, nightly) (push) Has been cancelled
CI / Rust ${{matrix.rust}} on ${{matrix.os}} (ubuntu, stable) (push) Has been cancelled
CI / Rust ${{matrix.rust}} on ${{matrix.os}} (windows, 1.34.0) (push) Has been cancelled
CI / Rust ${{matrix.rust}} on ${{matrix.os}} (windows, beta) (push) Has been cancelled
CI / Rust ${{matrix.rust}} on ${{matrix.os}} (windows, nightly) (push) Has been cancelled
CI / Rust ${{matrix.rust}} on ${{matrix.os}} (windows, stable) (push) Has been cancelled
CI / Clippy (push) Has been cancelled
CI / Outdated (push) Has been cancelled
!5 修改软件名
Merge pull request !5 from archane/master
2024-11-05 10:47:01 +00:00
.github Time out workflows after 45 minutes 2022-11-25 18:56:53 -08:00
src Use upstreamed docs.rs icon in docs.rs badge 2022-06-11 10:15:57 -07:00
.clippy.toml Inform clippy of supported compiler version in clippy.toml 2020-12-30 14:39:06 -08:00
.gitignore Implement build script 2020-01-24 14:41:39 -08:00
BUILD.gn Add GN Build Files and Custom Modifications 2023-04-12 17:26:24 +08:00
build.rs Prevent build.rs rerunning unnecessarily on all source changes 2022-12-12 14:37:40 -08:00
Cargo.toml Release 1.0.8 2022-12-17 11:22:02 -08:00
LICENSE-APACHE Dual mit OR apache license 2020-01-24 14:39:54 -08:00
LICENSE-MIT Dual mit OR apache license 2020-01-24 14:39:54 -08:00
README.md Update build status badge 2022-12-15 17:52:41 -08:00
README.OpenSource update Version in README.OpenSource 2024-10-31 17:14:50 +08:00

-lstdc++ or -lc++

github crates.io docs.rs build status

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:

[dependencies]
link-cplusplus = "1.0"

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

[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:

[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.

// src/lib.rs

extern 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.