45个稳定版本
使用旧的Rust 2015
2.4.3 | 2024年7月17日 |
---|---|
2.4.2 | 2024年3月6日 |
2.4.1 | 2024年1月5日 |
2.4.0 | 2023年10月9日 |
0.1.2 |
|
#9 in 开发工具
257,529 每月下载量
用于 146 个Crate(直接使用54个)
41KB
498 行
rust-embed-resource
一个用于以最坚韧的方式处理编译和包含 Windows 资源的 Cargo
构建脚本 库
文档
快速入门
在您的构建脚本中,假设资源文件名为 checksums.rc
extern crate embed_resource;
fn main() {
// Compile and link checksums.rc
embed_resource::compile("checksums.rc", embed_resource::NONE);
// Or, to select a resource file for each binary separately
embed_resource::compile_for("assets/poke-a-mango.rc", &["poke-a-mango", "poke-a-mango-installer"], &["VERSION=\"0.5.0\""]);
embed_resource::compile_for("assets/uninstaller.rc", &["unins001"], embed_resource::NONE);
}
示例:嵌入 Windows 清单
由 @jpoles1 提供。
以下步骤用于在编译的 rust .exe 文件中嵌入清单。在此示例中,清单将导致最终可执行文件请求管理员权限
- 将以下内容添加到您的 cargo.toml
[build-dependencies]
embed-resource = "2.4"
- 在项目根目录中,添加一个名为
build.rs
的文件,内容如下
extern crate embed_resource;
fn main() {
embed_resource::compile("app-name-manifest.rc", embed_resource::NONE);
}
- 在项目根目录中,添加一个名为
app-name.manifest.rc
的文件,内容如下
#define RT_MANIFEST 24
1 RT_MANIFEST "app-name.exe.manifest"
- 在项目根目录中,添加一个名为
app-name.exe.manifest
的文件,内容如下
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
- 构建您的项目!
错误
如果没有生成 cargo:rerun-if-changed
注解,Cargo 默认会扫描整个构建根目录。由于构建清单的第一步是一个未指定的 C 预处理器步骤,且无法生成类似于 cc -MD
的等效命令,所以我们不会输出该注解。
如果扫描成本过高,或者您有其他生成注解的方法,您可能需要手动指定清单的全非系统依赖列表,因此
println!("cargo:rerun-if-changed=app-name-manifest.rc");
embed_resource::compile("app-name-manifest.rc", embed_resource::NONE);
对于上述示例(参看 #41)。
迁移
2.x
将 embed_resource::NONE
作为 embed_resource::compile()
和 embed_resource::compile_for()
的最后一个参数添加
致谢
按时间顺序排列
@liigo -- 坚持追问并调查我在失败的地方
@mzji -- MSVC 实验鼠
@TheCatPlusPlus -- 知识和提供第一次清单嵌入代码的迭代
@azyobuzin -- 提供代码以查找 RC.EXE 可能隐藏的地方
@retep998 -- 修复 MSVC 支持
@SonnyX -- Windows 跨平台编译支持和测试
@MSxDOS -- 发现并供应 RC.EXE 其神秘的头文件包含路径
@roblabla -- 使用 LLVM-RC 进行跨编译到 Windows MSVC
特别感谢
所有在 Patreon 上支持进一步开发的人,尤其是
- ThePhD
- Embark Studios
- Lars Strojny
- EvModder
依赖项
~0.6–11MB
~62K SLoC