TL; DR :在我的项目目录之外,与haxelib dev
一起安装,并像Project.xml
一样包含在任何其他库中,Haxe编译器看不到我的库。在我的项目目录中,它工作正常。显然,其他库不必在我的项目目录中以避免编译器错误,所以我在这里缺少什么?
我正在尝试通过关注this page将一些代码作为haxelib发布。
我最初的包命名空间为flixel.addons
。代码在其source/flixel/addons
子目录下作为不同项目的一部分。在我开始之前,该项目是编译好的一部分。
我决定最好不要在发布时侵入其他人的命名空间,所以我将命名空间更改为我的类文件的mynamespace
行上的package
。我查看了另一个haxelib的想法,并看到库名称可以与类路径不同,类路径可能应该与包命名空间相同。所以我将代码从我的项目中移到了其他地方的新目录中:
mylibraryname
\-Readme.md
\-haxelib.json
\-mynamespace
\-myclass.hx
根据说明,我使用haxelib dev
的路径mylibraryname
运行。
在我的项目中,我向Project.xml添加了<haxelib name="mylibraryname" />
。在我使用它的地方,我将import
行从flixel.addons.myclass
更改为mynamespace.myclass
。
现在,尝试编译我的项目(在FlashDevelop中,使用Haxe 3.2.1)会在使用它的Type not found: mynamespace.myclass
行上产生错误import
。具有讽刺意味的是,FlashDevelop在用{+ 1}}光标的情况下按下Ctrl + Shift + 1自动添加该行。此外,我可以在myclass
行的红色下划线部分按F4,然后从新位置打开import
就好了。
该文件包含:
myclass.hx
我使用它的项目文件包含:
package mynamespace;
同时,haxelib.json文件有:
import mynamespace.myclass;
我尝试的事情:
即使我认为它应该在这一点上起作用,我尝试了下一步创建一个zip文件并在其上使用{
"name": "mylibraryname",
"url" : "...",
"license": "MIT",
"tags": ["haxe"],
"description": "...",
"version": "0.0.1-alpha",
"classPath": "mynamespace/",
"releasenote": "...",
"contributors": ["me"],
"dependencies": {
...
}
}
。没有变化。
我的项目中还碰巧有一个目录haxelib install
,但我不再需要任何东西了,所以我删除了它。没有变化。
为了确保某处没有拼写错误,我填写了mynamespace
目录的副本(已在mylibraryname
中正确安装并制作了...\haxe\lib\mylibraryname\0.0.1-alpha
个文件其中.current
,BTW)回到我的项目中。编译得很好。
即使文档中没有提到,我看到另一个库包含0.0.1-alpha
文件haxelib.xml
和haxelib.json
,其中包含this。无论是否存在此文件,都不会更改。 (甚至没有代码完成,它可以很好地列出我的类的唯一和继承变量,但在输出窗格中生成与编译期间完全相同的Type not found
错误。)
haxelib selfupdate
。已经是最新的了。没有变化。
Windows重启!为什么不?没有变化。
如何让我的项目进行编译?为什么Haxe在FlashDevelop和haxelib做的时候没有看到它,当我的lib的目录结构和haxelib.json
在工作的第三方haxelibs和docs之后建模?
或者我误解了某些东西,你必须在项目环境中测试haxelib,直到它们被发布为真实的?如果是这种情况,我不确定应该采用haxelib dev
和haxelib install mylib.zip
步骤应该做些什么。
答案 0 :(得分:3)
问题应该是classPath
中的haxelib.json
指令。
它的值应该是root / base包中模块的相对搜索路径,而不是包的路径。
尝试将其更改为""
或完全省略该指令。
答案 1 :(得分:1)
您的库的结构以及使用haxelib dev
进行设置似乎是合理的,我可以使用这样创建的自定义库来编译项目。
我唯一能想到的是package
里面的myclass.hx
声明不正确(也许你在移动文件时忘了调整它?)。
仔细检查该文件中的第一行是这样的:
package mynamespace;
答案 2 :(得分:1)
也许你可以尝试这样做:
在HaxeToolkit \ haxe \ lib中创建一个包含库名称的文件夹(我将调用它&#34; example-lib&#34;,您可以随意调用它)。
在example-lib文件夹中创建另一个文件夹,其中包含版本名称的标题(例如:0,0,1(注意逗号))并将您的类放入其中。
创建一个名为&#34; .current&#34;的文件在example-lib文件夹中(如果你不能,尝试从另一个haxelib文件夹中复制一个并粘贴到你的文件夹中)并在里面输入版本名称(例如:0.0.1)。
在Project.xml中,添加
<haxelib name="example-lib" />