Erlang 为什么可以';t rebar3是否编译一个可以自己编译的依赖项?

Erlang 为什么可以';t rebar3是否编译一个可以自己编译的依赖项?,erlang,rebar,rebar3,Erlang,Rebar,Rebar3,我正在尝试编译一个模块,该模块使用新的xmpp库用于ejabberd 我有一个非常简单的rebar.config文件: {deps, [ {xmpp, ".*", {git, "https://github.com/processone/xmpp", {tag, "1.1.4"}}} ]}. 当我尝试运行rebar3 eunit或rebar3 compile时,我收到一条错误消息: $ rebar3 compile ===> Verifying dependencies... =

我正在尝试编译一个模块,该模块使用新的xmpp库用于ejabberd

我有一个非常简单的
rebar.config
文件:

{deps, [
    {xmpp, ".*", {git, "https://github.com/processone/xmpp", {tag, "1.1.4"}}}
]}.
当我尝试运行
rebar3 eunit
rebar3 compile
时,我收到一条错误消息:

$ rebar3 compile
===> Verifying dependencies...
===> Fetching xmpp ({git,"https://github.com/processone/xmpp",
                                {ref,"c010141487632db1666bcbf64f90f42c0fde50aa"}})
===> Fetching rebar3_hex ({pkg,<<"rebar3_hex">>,<<"3.1.0">>})
===> Downloaded package, caching at /Users/marcp/.cache/rebar3/hex/default/packages/rebar3_hex-3.1.0.tar
===> Compiling rebar3_hex
===> Fetching fast_xml ({pkg,<<"fast_xml">>,<<"1.1.18">>})
===> Downloaded package, caching at /Users/marcp/.cache/rebar3/hex/default/packages/fast_xml-1.1.18.tar
===> Fetching pc ({pkg,<<"pc">>,<<"1.4.0">>})
===> Downloaded package, caching at /Users/marcp/.cache/rebar3/hex/default/packages/pc-1.4.0.tar
===> Compiling pc
===> Fetching stringprep ({pkg,<<"stringprep">>,<<"1.0.7">>})
===> Downloaded package, caching at /Users/marcp/.cache/rebar3/hex/default/packages/stringprep-1.0.7.tar
===> Fetching p1_utils ({pkg,<<"p1_utils">>,<<"1.0.6">>})
===> Downloaded package, caching at /Users/marcp/.cache/rebar3/hex/default/packages/p1_utils-1.0.6.tar
===> Compiling p1_utils
===> Compiling fast_xml
===> Compiling /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/fast_xml/c_src/fxml.c
===> Compiling /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/fast_xml/c_src/fxml_stream.c
===> Linking /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/fast_xml/priv/lib/fxml.so
===> Linking /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/fast_xml/priv/lib/fxml_stream.so
===> Compiling stringprep
===> Compiling /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/stringprep/c_src/stringprep.cpp
===> Linking /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/stringprep/priv/lib/stringprep.so
===> Compiling xmpp
===> Compiling _build/default/lib/xmpp/src/xmpp_util.erl failed
_build/default/lib/xmpp/include/xmpp.hrl:29: can't find include file "fxml.hrl"
$rebar3编译
=>正在验证依赖项。。。
=>正在获取xmpp({githttps://github.com/processone/xmpp",
{ref,“c010141487632db1666bcbf64f90f42c0fde50aa”})
=>获取rebar3_十六进制({pkg,,})
==>下载的包,缓存在/Users/marcp/.cache/rebar3/hex/default/packages/rebar3\u hex-3.1.0.tar
==>编译rebar3\u十六进制
=>获取快速xml({pkg,,})
=>下载的包,缓存在/Users/marcp/.cache/rebar3/hex/default/packages/fast_xml-1.1.18.tar
=>正在获取pc({pkg,,})
=>下载的包,缓存在/Users/marcp/.cache/rebar3/hex/default/packages/pc-1.4.0.tar
=>编译pc
=>获取stringprep({pkg,,})
=>下载的包,缓存在/Users/marcp/.cache/rebar3/hex/default/packages/stringprep-1.0.7.tar
==>获取p1_utils({pkg,,})
=>下载的包,缓存在/Users/marcp/.cache/rebar3/hex/default/packages/p1_-utils-1.0.6.tar
==>编译p1_utils
==>编译快速xml
=>编译/Users/marcp/Desktop/erlang test/myapp/\u build/default/lib/fast\u xml/c\u src/fxml.c
=>编译/Users/marcp/Desktop/erlang test/myapp/\u build/default/lib/fast\u xml/c\u src/fxml\u stream.c
=>Linking/Users/marcp/Desktop/erlang test/myapp/\u build/default/lib/fast\u xml/priv/lib/fxml.so
=>Linking/Users/marcp/Desktop/erlang test/myapp/\u build/default/lib/fast\u xml/priv/lib/fxml\u stream.so
=>编译stringprep
==>编译/Users/marcp/Desktop/erlang test/myapp/\u build/default/lib/stringprep/c\u src/stringprep.cpp
==>链接/Users/marcp/Desktop/erlang test/myapp/\u build/default/lib/stringprep/priv/lib/stringprep.so
=>编译xmpp
==>编译\u build/default/lib/xmpp/src/xmpp\u util.erl失败
_build/default/lib/xmpp/include/xmpp.hrl:29:找不到包含文件“fxml.hrl”
但是,当我单独编译此模块时,它可以工作:

$ cd _build/default/lib/xmpp
$ rebar3 compile
===> Fetching rebar3_hex ({pkg,<<"rebar3_hex">>,<<"3.1.0">>})
===> Downloaded package, caching at /Users/marcp/.cache/rebar3/hex/default/packages/rebar3_hex-3.1.0.tar
===> Compiling rebar3_hex
===> Verifying dependencies...
===> Fetching fast_xml ({pkg,<<"fast_xml">>,<<"1.1.18">>})
===> Downloaded package, caching at /Users/marcp/.cache/rebar3/hex/default/packages/fast_xml-1.1.18.tar
===> Fetching pc ({pkg,<<"pc">>,<<"1.4.0">>})
===> Downloaded package, caching at /Users/marcp/.cache/rebar3/hex/default/packages/pc-1.4.0.tar
===> Compiling pc
===> Fetching stringprep ({pkg,<<"stringprep">>,<<"1.0.7">>})
===> Downloaded package, caching at /Users/marcp/.cache/rebar3/hex/default/packages/stringprep-1.0.7.tar
===> Fetching p1_utils ({pkg,<<"p1_utils">>,<<"1.0.6">>})
===> Downloaded package, caching at /Users/marcp/.cache/rebar3/hex/default/packages/p1_utils-1.0.6.tar
===> Skipping p1_utils (from {pkg,<<"p1_utils">>,<<"1.0.6">>,
                                     <<"EF0951DDF38E92B7E479AF4B8DC950DF76AF8C1030432EF68B7FD7AD17C436FE">>}) as an app of the same name has already been fetched
===> Compiling p1_utils
===> Compiling fast_xml
===> Compiling /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/xmpp/_build/default/lib/fast_xml/c_src/fxml.c
===> Compiling /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/xmpp/_build/default/lib/fast_xml/c_src/fxml_stream.c
===> Linking /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/xmpp/_build/default/lib/fast_xml/priv/lib/fxml.so
===> Linking /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/xmpp/_build/default/lib/fast_xml/priv/lib/fxml_stream.so
===> Compiling stringprep
===> Compiling /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/xmpp/_build/default/lib/stringprep/c_src/stringprep.cpp
===> Linking /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/xmpp/_build/default/lib/stringprep/priv/lib/stringprep.so
===> Compiling xmpp
$cd\u build/default/lib/xmpp
$rebar3编译
=>获取rebar3_十六进制({pkg,,})
==>下载的包,缓存在/Users/marcp/.cache/rebar3/hex/default/packages/rebar3\u hex-3.1.0.tar
==>编译rebar3\u十六进制
=>正在验证依赖项。。。
=>获取快速xml({pkg,,})
=>下载的包,缓存在/Users/marcp/.cache/rebar3/hex/default/packages/fast_xml-1.1.18.tar
=>正在获取pc({pkg,,})
=>下载的包,缓存在/Users/marcp/.cache/rebar3/hex/default/packages/pc-1.4.0.tar
=>编译pc
=>获取stringprep({pkg,,})
=>下载的包,缓存在/Users/marcp/.cache/rebar3/hex/default/packages/stringprep-1.0.7.tar
==>获取p1_utils({pkg,,})
=>下载的包,缓存在/Users/marcp/.cache/rebar3/hex/default/packages/p1_-utils-1.0.6.tar
=>正在跳过p1_utils(从{pkg,,,
})因为已经获取了同名的应用程序
==>编译p1_utils
==>编译快速xml
=>编译/Users/marcp/Desktop/erlang test/myapp/\u build/default/lib/xmpp/\u build/default/lib/fast\u xml/c\u src/fxml.c
==>编译/Users/marcp/Desktop/erlang test/myapp/\u build/default/lib/xmpp/\u build/default/lib/fast\u xml/c\u src/fxml\u stream.c
=>Linking/Users/marcp/Desktop/erlang test/myapp/\u build/default/lib/xmpp/\u build/default/lib/fast\u xml/priv/lib/fxml.so
==>Linking/Users/marcp/Desktop/erlang test/myapp/\u build/default/lib/xmpp/\u build/default/lib/fast\u xml/priv/lib/fxml\u stream.so
=>编译stringprep
=>编译/Users/marcp/Desktop/erlang test/myapp/\u build/default/lib/xmpp/\u build/default/lib/stringprep/c_src/stringprep.cpp
==>链接/Users/marcp/Desktop/erlang test/myapp/\u build/default/lib/xmpp/\u build/default/lib/stringprep/priv/lib/stringprep.so
=>编译xmpp

我怎样才能知道发生了什么事?xmpp库的
rebar.config.script
是罪魁祸首吗?

结果是
xmpp
不能用现成的rebar3编译。我已经开了一家银行

作为一种解决方法,将以下内容添加到我的
rebar.config
文件有效:

{overrides, [
    {add, xmpp, [{erl_opts, [{i, "_build/default/lib/fast_xml/include"}]}]}
]}.

执行
DEBUG=1 rebar3 compile
经常帮助我:)