假设我有以下目录:
.
├── dune-project
├── myproj.opam
└── src
├── dune
├── module1.ml
├── parser1
│ └── file1.ml
└── parser2
└── file2.ml
由于我希望所有内容都在同一个库中,因此我有以下内容:
源/沙丘:
(include_subdirs unqualified)
(library
(name myproj)
(modules module1 file1 file2)
)
它编译得很好。
现在,问题是,我的 file1 和 file2 实际上是 mly 文件,所以我有这个:
.
├── dune-project
├── myproj.opam
└── src
├── dune
├── module1.ml
├── parser1
│ └── parser1.mly
└── parser2
└── parser2.mly
如果我尝试编译(通过在沙丘文件中通过解析器(1|2)更改文件(1|2)),我会遇到以下错误:
❯ dune build
File "src/dune", line 5, characters 26-33:
5 | (modules module1 parser1 parser2 )
^^^^^^^
Error: Module Parser2 doesn't exist.
我编辑我的沙丘文件:
(include_subdirs unqualified)
(menhir
(modules parser1 parser2)
)
(library
(name myproj)
(modules module1 parser1 parser2 )
)
现在有两个错误:
❯ dune build
File "src/dune", line 3, characters 0-36:
3 | (menhir
4 | (modules parser1 parser2)
5 | )
Error: No rule found for src/parser1.mly
File "src/dune", line 3, characters 0-36:
3 | (menhir
4 | (modules parser1 parser2)
5 | )
Error: No rule found for src/parser2.mly
好的,然后我在 parser(1|2) 目录中添加两个沙丘文件:
(menhir
(modules parser(1|2))
)
[编辑] 看起来我错过了一些东西,但这实际上工作得很好
我现在有和以前一样的错误:
❯ dune build
File "src/dune", line 5, characters 26-33:
5 | (modules module1 parser1 parser2 )
^^^^^^^
Error: Module Parser2 doesn't exist.
我错过了什么可以取悦沙丘吗?(如果我有 .mll 文件,我也会遇到同样的问题)