首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何正确注册一个锈蚀编译器插件?

如何正确注册一个锈蚀编译器插件?
EN

Stack Overflow用户
提问于 2015-05-23 22:47:07
回答 1查看 547关注 0票数 2

我一直在努力让一个Rust编译器插件注册正确。

我有一个名为rust_to_glsl的单独机箱,位于主代码的子目录中。

rust_to_glsl/src/lib.rs文件中,我有以下内容

代码语言:javascript
运行
复制
#![feature(plugin_registrar)]
#![feature(rustc_private)]
#![crate_type="dylib"]

extern crate rustc;
extern crate syntax;

#[doc(hidden)]
#[plugin_registrar]
pub fn registrar(registry: &mut rustc::plugin::Registry) {
    println!("Test");
    registry.register_macro("to_glsl", expand);
}

此外,我还定义了实际的expand函数。

src/main.rs中,我试图插入那个插件/机箱。

代码语言:javascript
运行
复制
#![feature(plugin)]
#![plugin(rust_to_glsl)]

然后我试着用这个宏:

代码语言:javascript
运行
复制
fn main() {
    let glsl = to_glsl!(
        const x: uint = 5;

        static texture: &Texture2d = 1;

        fn hello() {
            min(5, 3 * 1 + 5)
        }
    );

    println!("{}", glsl);
}

如果我编译了它,就会得到以下错误:

代码语言:javascript
运行
复制
Compiling opal v0.1.0 (file:///Users/chris/Code/Rust/gl)
src/main.rs:2:11: 2:23 error: can't find crate for `rust_to_glsl`
src/main.rs:2 #![plugin(rust_to_glsl)]

在构建过程中,我注意到rust_to_glsl没有被编译(使用cargo build)。

如果我添加了extern crate rust_to_glsl,那么它会编译rust_to_glsl。但然后夸克说

代码语言:javascript
运行
复制
49:23 error: macro undefined: 'to_glsl!'
src/main.rs:49     let glsl = to_glsl!(

我不确定是否需要use宏,或者是否所有宏都是全局的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-23 22:57:19

结果我需要把这个添加到rust_to_glsl/Cargo.toml

代码语言:javascript
运行
复制
[lib]
name = "rust_to_glsl"
crate-type = ["dylib"]

然后将其包含为普通的build-dependency而不是dependency

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30418297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档