2个版本
0.1.1 | 2023年6月23日 |
---|---|
0.1.0 | 2023年6月14日 |
#303 在 构建工具
26KB
547 行
T H O U N D
概述
本项目的目的是在Windows上查找可能需要链接的库所在的文件夹,如果您正在链接任何编译的C或C++代码。这对于许多希望提供兼容性的非C++编程语言环境是必要的。
入门
将 thound
添加到您的 Cargo.toml
[dependencies]
thound = "0.1"
用法
用法很简单,只需调用唯一可用的函数,并使用包含的信息
fn main() {
let info = thound::find_vc_and_windows_sdk();
println!("{info:#?}");
}
...它将输出如下
Some(
Info {
sdk: Some(
SdkInfo {
major_version: 10,
root: "C:\\Program Files (x86)\\Windows Kits\\10\\Lib\\10.0.22000.0",
um_lib_path: "C:\\Program Files (x86)\\Windows Kits\\10\\Lib\\10.0.22000.0\\um\\x64",
ucrt_lib_path: "C:\\Program Files (x86)\\Windows Kits\\10\\Lib\\10.0.22000.0\\ucrt\\x64",
},
),
toolchain: Some(
ToolchainInfo {
exe_path: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.36.32532\\bin\\Hostx64\\x64",
lib_path: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.36.32532\\lib\\x64",
},
),
},
)
实现说明
此实现的其中一个目标是尽可能减少依赖并快速编译。因此,这个crate除了std
外没有其他依赖。
没有依赖意味着代码只包含完成其工作所需的最低限度的Windows API & COM技巧,这些技巧可以用windows-rs
替换,但这是故意的。
注意
以下内容最初由Jonathan Blow撰写,它反映了我的想法,并解释了为什么这个crate存在。
// I hate this kind of code. The fact that we have to do this at all
// is stupid, and the actual maneuvers we need to go through
// are just painful. If programming were like this all the time,
// I would quit.
//
// Because this is such an absurd waste of time, I felt it would be
// useful to package the code in an easily-reusable way
替代方案
Microsoft为其提供了自己的解决方案,称为"vswhere",这是一个更大的程序(然后是二进制文件!),在大多数情况下我不希望处理。
许可证
此crate使用MIT许可证。实现是Jonathan Blow的原始代码的Rust版本,该代码在MIT许可证下发布。
贡献
除非您明确声明,否则您提交给Thound以供包含的任何贡献都应按MIT许可证授权,不附加任何额外的条款或条件。