2个版本

0.1.1 2023年6月23日
0.1.0 2023年6月14日

#303构建工具

MIT 许可证

26KB
547

T H O U N D

Latest Version MIT licensed API

概述

本项目的目的是在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许可证授权,不附加任何额外的条款或条件。

无运行时依赖