Lua规范说关于package.config
(编号由我添加):
- 第一行是目录分隔字符串。Windows默认为'
',其他系统默认为'
/
'。- 第二行是分隔路径中模板的字符。默认为"
;
"。- 第三行是标记模板中替换点的字符串。默认为'
?
'。- 第四行是一个字符串,在Windows的路径中,它被可执行文件的目录所取代。默认为'
!
'。- 第五行是一个标记,在构建
luaopen_
函数名时忽略它之前的所有文本。默认为'-
'。
我的释义:
- 绝对清晰(Windows/其他系统的示例使其不会被愚弄)
- 一个路径字符串中可以有多条路径。它们由这个符号(默认为
;
)分隔。 - 无论Lua在路径字符串(默认为
?
)中发现此字符,它都会将其替换为提供给require
或package.searchpath
函数的模块名称,并检查该文件是否存在。
到目前为止,一切都很好,但是最后两行我不太清楚。
- 为什么说"in a path in Windows"?这是否意味着在其他平台上,这并不具有任何意义?如果是,为什么?
-
我花了一段时间才弄明白这一点,但最终规格的另一部分给了我一个提示:
这个C函数的名称是字符串"
luaopen_
"与模块名称的副本连接,其中每个点被下划线替换。此外,如果模块名有连字符,它的前缀直到(并包括)第一个连字符将被删除。例如,如果模块名称为a.v1-b.c
,则函数名称将为luaopen_b_c
。那么这个符号(默认为
-
)是为了同时提供一个库的不同版本吗? –可能与一个不带前缀的符号链接到最新版本,以便同一库将在两个路径上访问(即在两个模块名称下),但只有一个C符号名称?
4: Linux应用程序在系统范围内安装了库;但是,对于Windows,库可以安装在当前目录下。
5:版本控制和项目分支,我相信,这将是背后的原因。