在Chapel构建中消除源文件的歧义

时间:2017-11-20 22:55:44

标签: chapel

关注包含源文件的this question。我包含一个Chapel模块,其中包含一个名为classes.chpl的文件,但我当前的项目也有一个classes.chpl。什么是正确的消歧模式?当我做的时候

chpl -M/path/src

它注意到了冲突,然后选择当前目录中的classes.chpl。我应该像this page那样编译导出模块,还是有其他模式。

== UPDATE ==

目录结构类似于

projA/alpha.chpl
     /classes.chpl

projB/beta.chpl
     /classes.chpl

每个项目取决于相应classes.chpl文件中的类。正在尝试编译projA我目前正在使用

chpl alpha.chpl -M../projB/

但这会导致冲突,因为它会尝试projA/classes.cphl用于beta.chplalpha.chpl中的类。

1 个答案:

答案 0 :(得分:3)

module search paths技术说明中所述,Chapel编译器按以下顺序搜索用户模块:

  1. 查看命令行中指定的.chpl个文件
  2. 查看包含命令行中指定的文件的目录中的其他.chpl个文件
  3. 查看通过.chpl选项或-M环境变量指定的路径中的CHPL_MODULE_PATH个文件
  4. 由于编译器使用规则2从项目目录中找到classes.chpl,并且只查找带有规则3的/path/src/classes.chpl,因此它会选择项目目录中的/path/src/classes.chpl。要让它选择chpl mainModule.chpl /path/src/classes.chpl,您可以在命令行中指定它,以便在规则1中找到它。

    Debugging with inspector protocol because Node.js v8.9.1 was detected. node --inspect-brk=3193 app.js Debugger listening on ws://127.0.0.1:3193/c89636e0-f77a-40ab-9046-da1ddaaaf31c