【问题标题】:Custom commands to compile dependencies with rebar使用 rebar 编译依赖项的自定义命令
【发布时间】:2011-10-25 02:58:02
【问题描述】:

我有一个 rebar 依赖项,它需要在编译应用程序之前运行“./configure”命令(它实际上生成 Makefile)。是否可以告诉 rebar 如何构建特定的依赖项?

【问题讨论】:

    标签: erlang rebar


    【解决方案1】:

    在你的 rebar.config 文件中,你可以定义一个预编译钩子。它基本上是在实际编译之前运行的 shell 命令/脚本。

    {pre_hooks, [
        {compile, "path/to/dep/configure"
    ]}
    

    【讨论】:

    • 那行不通,因为它是在编译应用程序之前执行的,但在编译依赖项之后执行。我需要在编译其中一个依赖项之前运行它。
    • 我想我对设置有点困惑。依赖项本身是否使用钢筋?我的假设是:依赖项不使用 rebar,并且任何其他依赖项都不需要。
    【解决方案2】:

    在 Rebar 邮件列表中讨论了这个问题后,我最终创建了一个 Rebar 插件。在这里,以防有人需要做类似的事情。当前的 Rebar 插件 API 需要最后的“ok”。

    -module(rebar_compiledeps_plugin).
    -export([pre_compile/2]).
    
    pre_compile(_, _) ->
        Cwd = rebar_utils:get_cwd(),
        case lists:suffix("my_dep", Cwd) of
            true ->
                Opts = [{cwd, Cwd}],
                case filelib:is_regular(filename:join([Cwd, "Makefile"])) of
                    true ->
                        rebar_utils:sh("make [OPTIONS]", Opts);
                    false ->
                        rebar_utils:sh("./configure && make [OPTIONS]", Opts)
                end;
            false ->
                ok
        end,
        ok.
    

    【讨论】:

      猜你喜欢
      • 2013-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-02
      • 2012-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多