makefile - 分层货物预构建脚本
问题描述
我怎样才能干净地添加几个默认情况下从不构建的货物二进制目标,但是如果手动cargo run
构建但没有构建我的整个板条箱?
我需要几层表用于扩展字段算术和 FFT,每一层都用于构建后面的层。
我将pub(crate) static
使用单独的特定于层的构建脚本生成包含每个层表的 s 的rust 源文件,该脚本include!
或mod
仅是最终库 crate 的初始段。
我会像手动调用这些构建脚本,也cargo run make_layer_one
可能使用 a 来调用这些构建脚本Makefile
,但它们应该将输出.rs
文件直接写入src
,而不是写入OUT_DIR
,并将结果检查到 git 中,这样普通用户就不会重新运行这个烂摊子了。
看起来 cargo 在src/bin/
和其他地方的二进制目标都构建了整个 crate,除了build.rs
. 有什么build.rs
特别之处?如何添加其他类似的目标?
此外,是否有任何#[cfg(..)]
属性可以显示二进制构建目标?在最坏的情况下,我可以像可能那样添加 bash 脚本cargo run make_layer_three -- --cfg layer_one --cfg layer_two
,但是如果 cargo 经常构建这些目标,那么它们会接触src
和混淆 cargo。
算术显然不能容忍lazy_static, , 等中使用的原子保护的 2ns 惩罚std::sync::Once
。std::lazy::*
实际上static_init避免了这个 2ns 惩罚,但在 Mac OS 上缺少多层。理论上,一个人可能只在初始化阶段使用原子守卫,由 static_init 触发,然后unsafe { .. }
用于算术,但这看起来不必要的复杂。
解决方案
推荐阅读
- azure - 生成有效 oauth2 令牌以访问 PowerBI API 的问题
- jenkins - https://jenkins.io 的部分内容已关闭。我该如何报告?
- c++ - 获取每个目录或子目录中第一个文件的路径
- performance - SQL Developer File Open & Export 显示对话框很慢
- c++ - Qt/C++ 模拟 QSettings
- c# - 将字符串数组传递给 Redshift
- bash - 在 bash 中使用 JSON 文件的名称及其内容创建 JSON 对象
- wordpress - 从 Woocommerce 的管理员列表中发送选定的订单通知电子邮件
- angular - 如何避免 Angular 库中的多个服务实例?(带有延迟加载的模块)
- firebase - Firestore 安全规则是否会提前返回?