文件夹变多之后的include经常会变成这样:
include("../../xxx.jl")
Rust里有个crate可以方便从项目文件夹开始导入,Julia好像没有这种方式诶?
难道Julia建议尽量不要嵌套文件夹,或者把文件夹尽量都组织成一个Module?
文件夹变多之后的include经常会变成这样:
include("../../xxx.jl")
Rust里有个crate可以方便从项目文件夹开始导入,Julia好像没有这种方式诶?
难道Julia建议尽量不要嵌套文件夹,或者把文件夹尽量都组织成一个Module?
不是很清楚你想表达的是什么意思, 你可以简单描述一下文件夹结构以及你想做什么么?
有一个宏 @__DIR__
不知道是不是你想要的。
比如这么一个目录
.
file1.jl 想要include file2.jl就得
include("../../file2.jl")
有没有类似于Rust的crate,可以这样写
include("root/file2.jl")
似乎不行
include("filepath")
这种方式天生注定不能从项目根目录开始
但是又似乎可以这样
include(@root "filepath")
对于1.4之后的版本有一个pkgdir
可以用:https://github.com/JuliaLang/julia/pull/33128
~/t/MyModule tree .
.
├── Manifest.toml
├── Project.toml
└── src
├── A
│ └── B
│ └── file1.jl
├── MyModule.jl
└── file2.jl
3 directories, 5 files
~/t/MyModule bat **.jl
───────┬────────────────────────────────────────────────────────────────────────────────────
│ File: src/A/B/file1.jl
───────┼────────────────────────────────────────────────────────────────────────────────────
1 │ root = pkgdir(@__MODULE__)
2 │
3 │ include(joinpath(root, "src", "file2.jl"))
───────┴────────────────────────────────────────────────────────────────────────────────────
───────┬────────────────────────────────────────────────────────────────────────────────────
│ File: src/file2.jl
───────┼────────────────────────────────────────────────────────────────────────────────────
1 │
2 │ @info "This is called from file2.jl"
───────┴────────────────────────────────────────────────────────────────────────────────────
───────┬────────────────────────────────────────────────────────────────────────────────────
│ File: src/MyModule.jl
───────┼────────────────────────────────────────────────────────────────────────────────────
1 │ module MyModule
2 │
3 │ include("A/B/file1.jl")
4 │
5 │ end
──────────────────────────────────────────────