Lua specs say about package.config
(由我添加的编号):
- 第一行是目录分隔符字符串。对于Windows,默认值为“
\
”,对于所有其他系统,默认值为“/
”。- 第二行是分隔路径中模板的字符。默认为“
;
”。- 第三行是标记模板中替换点的字符串。默认为“
?
”。- 第四行是一个字符串,在Windows中的路径中,由可执行文件的目录替换。默认为“
!
”。- 第五行是在构建
醇>luaopen_
函数名时忽略其前面的所有文本的标记。默认为“-
”。
我的解释:
;
)。?
),它都会将其替换为提供给require
或package.searchpath
函数的模块名称,并检查该文件是否存在存在。到目前为止,这么好,但最后两行对我来说并不完全清楚。
我花了一段时间来理解这一点,但最终another part of the specs给了我一个暗示:
此C函数的名称是字符串“
luaopen_
”与模块名称的副本连接,其中每个点都用下划线替换。此外,如果模块名称具有连字符,则删除其前缀(包括)第一个连字符的前缀。例如,如果模块名称为a.v1-b.c
,则函数名称为luaopen_b_c
。
此符号(默认情况下为-
)旨在同时提供不同版本的库 - 可能使用未加前缀的最新版本的符号链接,以便可以在两个路径上访问同一个库(即在两个模块名称下),但只有一个C符号名称?
答案 0 :(得分:1)
4: Linux的应用程序在系统范围内安装了库;但是,对于Windows,库可以安装在当前目录中。
5:我相信版本控制和项目分叉将成为背后的原因。