2

TL;DR :在我的项目目录之外,与任何其他库一样安装haxelib dev并包含在其中, Haxe 编译器看不到我的库。Project.xml在我的项目目录中,它工作正常。显然,其他库不必在我的项目目录中以避免编译器错误,那么我在这里缺少什么?

我正在尝试通过关注此页面将一些代码作为 haxelib 发布。

我最初的包命名空间为flixel.addons. 该代码作为不同项目的一部分,位于其source/flixel/addons子目录下。在我开始之前,它是编译好的项目的一部分。

我决定在释放它时最好不要侵入别人的命名空间,所以我将命名空间更改为mynamespacepackage我的类文件的行。我查看了另一个haxelib的想法,发现库名可以与类路径不同,这可能应该与包命名空间相同。所以我将代码从我的项目中移出到其他地方的一个新目录中:

mylibraryname
\-Readme.md
\-haxelib.json
\-mynamespace
  \-myclass.hx

根据说明,我haxelib dev使用mylibraryname.

在我的项目中,我添加<haxelib name="mylibraryname" />了 Project.xml。在我使用它的地方,我将import线条从更改flixel.addons.myclassmynamespace.myclass

现在,尝试编译我的项目(在 FlashDevelop 中,使用 Haxe 3.2.1)在使用它的行Type not found: mynamespace.myclass上给出了错误import。具有讽刺意味的是,FlashDevelop 会自动添加该行,同时按下 Ctrl+Shift+1 并将光标放在myclass使用它的位置。此外,我可以在该行的红色下划线部分按 F4,它会从新位置import打开myclass.hx就好了。

该文件包含:

package mynamespace;

我使用它的项目文件包含:

import mynamespace.myclass;

同时,haxelib.json 文件有:

{
  "name": "mylibraryname",
  "url" : "...",
  "license": "MIT",
  "tags": ["haxe"],
  "description": "...",
  "version": "0.0.1-alpha",
  "classPath": "mynamespace/",
  "releasenote": "...",
  "contributors": ["me"],
  "dependencies": {
    ...
  }
}

我尝试过的事情:

  1. 尽管我认为它应该在这一点上工作,但我尝试了创建一个 zip 文件并haxelib install在其上使用的下一步。没变。

  2. 我也碰巧在我的项目中还有一个目录mynamespace,但我真的不再需要任何东西了,所以我删除了它。没变。

  3. 为了确保某处没有错别字,我将mylibraryname目录的副本(已正确安装并在其中...\haxe\lib\mylibraryname\0.0.1-alpha制作了一个.current文件0.0.1-alpha,顺便说一句)放回我的项目中。它编译得很好。

  4. 尽管文档中没有提到它,但我看到另一个库在haxelib.xml旁边包含一个文件haxelib.json,其中包含这个. 无论是否存在此文件,都没有变化。(甚至没有代码完成,它可以很好地列出我的类的唯一和继承变量,但会在“输出”窗格中生成与编译期间完全相同的Type not found错误。)

  5. haxelib selfupdate. 已经是最新的了。没变。

  6. 视窗重启!为什么不?没变。

我怎样才能让我的项目编译?为什么当 FlashDevelop 和 haxelib 出现时,Haxe 看不到它,以及当我的 lib 的目录结构和haxelib.json根据工作的第三方 haxelibs 和文档建模时?

还是我误解了什么,您必须在项目的上下文中测试 haxelib,直到它们真正发布?如果是这种情况,我不确定使用haxelib devandhaxelib install mylib.zip步骤到底应该做什么。

4

3 回答 3

4

问题应该classPathhaxelib.json.

它的值应该是根/基础包中模块的相对搜索路径,而不是包的路径。

尝试将其更改为""或完全省略该指令。

于 2016-02-05T11:22:01.080 回答
2

您的库的结构和设置haxelib dev似乎很合理,我可以使用这样创建的自定义库来编译项目。

我唯一能想到的是package内部myclass.hx声明不正确(可能你在移动文件时忘记调整它?)。

仔细检查该文件中的第一行是否如下所示:

package mynamespace;
于 2016-02-04T22:05:11.753 回答
2

也许你可以尝试这样做:

  1. 在 HaxeToolkit\haxe\lib 中创建一个以您的库名称命名的文件夹(我将其命名为“example-lib”,您可以随意调用它)。

  2. 在 example-lib 文件夹中创建另一个文件夹,其标题为版本名称(例如:0,0,1(注意逗号))并将您的类放入其中。

  3. 在 example-lib 文件夹中创建一个名为“.current”的文件(如果不能,请尝试从另一个 haxelib 文件夹中复制一个并粘贴到您的文件夹中)并在其中输入版本名称(例如:0.0.1)。

  4. 在您的 Project.xml 中,添加

    <haxelib name="example-lib" />

于 2016-02-05T01:59:05.693 回答