从rust proc宏中获取目标文件夹
正如标题所示,我正在尝试检索目标文件夹以保存一些中间编译产品。我需要实际的目标文件夹,因为我想在编译之间缓存一些值,以显著加快它们的速度(否则我可以只使用临时目录) 我目前的方法是解析rustc调用的参数(通过从rust proc宏中获取目标文件夹,rust,rust-proc-macros,Rust,Rust Proc Macros,正如标题所示,我正在尝试检索目标文件夹以保存一些中间编译产品。我需要实际的目标文件夹,因为我想在编译之间缓存一些值,以显著加快它们的速度(否则我可以只使用临时目录) 我目前的方法是解析rustc调用的参数(通过std::env::args())并找到--out目录,代码如下所示: //首先,我们获取rustc调用的参数 让mut args=std::env::args(); //然后我们循环遍历它们,并找到“out dir”的值 让mut out_dir=无; 而让一些(arg)=args.ne
std::env::args()
)并找到--out目录,代码如下所示:
//首先,我们获取rustc调用的参数
让mut args=std::env::args();
//然后我们循环遍历它们,并找到“out dir”的值
让mut out_dir=无;
而让一些(arg)=args.next(){
如果arg==“--out dir”{
out_dir=args.next();
}
}
//最后,我们通过删除所有尾随目录来清除_dir,直到它以target结尾
让mut out_dir=PathBuf::from(out_dir.expect(“未能找到_dir”);
虽然out_dir.以(“target”)结尾{
如果!out_dir.pop(){
//我们的目录用完了。。。
惊慌失措!(“找不到_dir”);
}
}
外卢迪尔
通常我会使用环境变量之类的东西(想想OUT\u DIR
),但我找不到任何可以帮助我的东西
那么有没有一个合适的方法来做到这一点呢?或者我应该向rust开发团队提交一个问题吗?查看
OUT\u DIR
是正确的方法,我很困惑它并不总是设置好的。如果您可以控制使用宏的板条箱,则可以添加一个(简单的)构建脚本,从而设置OUT\u DIR
变量
我必须承认,这有点老套。我已经为cargo创建了一个始终设置
OUT\u DIR
,这将使这个问题变得微不足道。查看OUT\u DIR
是正确的方法,我对它不总是设置感到困惑。如果您可以控制使用宏的板条箱,则可以添加一个(简单的)构建脚本,从而设置OUT\u DIR
变量
我必须承认,这有点老套。我已经为cargo创建了一个始终设置OUT\u DIR
,这将使这个问题变得微不足道。。不过,我不知道在运行编译器时是否也设置了…。我不知道在运行编译器时是否也设置了…