0

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

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

{deps, [
    {xmpp, ".*", {git, "https://github.com/processone/xmpp", {tag, "1.1.4"}}}
]}.

当我尝试运行rebar3 eunitrebar3 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"

但是,当我单独编译这个模块时,它可以工作:

$ 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

我怎样才能知道发生了什么?是rebar.config.scriptxmpp 库的错吗?

4

1 回答 1

1

事实证明,xmpp无法使用开箱即用的 rebar3 进行编译。我在 GitHub 上打开了一个问题

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

{overrides, [
    {add, xmpp, [{erl_opts, [{i, "_build/default/lib/fast_xml/include"}]}]}
]}.
于 2017-01-21T12:43:17.367 回答