消除 Chapel 构建中的源文件歧义
Disambiguate source files in Chapel build
跟进 关于包含源文件的问题。我包括一个 Chapel 模块,其中包含一个名为 classes.chpl
的文件,但我当前的项目也有一个 classes.chpl
。什么是正确的消歧模式?当我这样做时
chpl -M/path/src
它注意到冲突,然后选择当前目录中的classes.chpl
。我应该像 this page 那样编译导出模块还是有其他模式。
==更新==
目录结构如下
projA/alpha.chpl
/classes.chpl
projB/beta.chpl
/classes.chpl
其中每个项目都依赖于各自 classes.chpl
文件中的 类。正在尝试编译 projA
我目前正在使用
chpl alpha.chpl -M../projB/
但这会导致冲突,因为它试图在 beta.chpl
和 alpha.chpl
中对 类 使用 projA/classes.cphl
。
如 module search paths 技术说明中所述,Chapel 编译器按以下顺序搜索用户模块:
- 正在查看在命令行中指定的
.chpl
个文件
- 正在查看包含命令行指定文件的目录中的其他
.chpl
个文件
- 正在通过
-M
选项或 CHPL_MODULE_PATH
环境变量指定的路径中查看 .chpl
个文件
由于编译器使用规则2从项目目录中找到classes.chpl
,而仅使用规则3找到/path/src/classes.chpl
,因此它选择了项目目录中的那个。要让它选择 /path/src/classes.chpl
,您可以在命令行上指定它,以便使用规则 1.
找到它
chpl mainModule.chpl /path/src/classes.chpl
跟进 classes.chpl
的文件,但我当前的项目也有一个 classes.chpl
。什么是正确的消歧模式?当我这样做时
chpl -M/path/src
它注意到冲突,然后选择当前目录中的classes.chpl
。我应该像 this page 那样编译导出模块还是有其他模式。
==更新==
目录结构如下
projA/alpha.chpl
/classes.chpl
projB/beta.chpl
/classes.chpl
其中每个项目都依赖于各自 classes.chpl
文件中的 类。正在尝试编译 projA
我目前正在使用
chpl alpha.chpl -M../projB/
但这会导致冲突,因为它试图在 beta.chpl
和 alpha.chpl
中对 类 使用 projA/classes.cphl
。
如 module search paths 技术说明中所述,Chapel 编译器按以下顺序搜索用户模块:
- 正在查看在命令行中指定的
.chpl
个文件 - 正在查看包含命令行指定文件的目录中的其他
.chpl
个文件 - 正在通过
-M
选项或CHPL_MODULE_PATH
环境变量指定的路径中查看.chpl
个文件
由于编译器使用规则2从项目目录中找到classes.chpl
,而仅使用规则3找到/path/src/classes.chpl
,因此它选择了项目目录中的那个。要让它选择 /path/src/classes.chpl
,您可以在命令行上指定它,以便使用规则 1.
chpl mainModule.chpl /path/src/classes.chpl