首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >‘.erl -make`命令可以扩展到除了编译.erl文件之外的其他事情吗?

‘.erl -make`命令可以扩展到除了编译.erl文件之外的其他事情吗?
EN

Stack Overflow用户
提问于 2013-01-25 07:19:04
回答 1查看 433关注 0票数 1

我想将Elixir集成到我们的项目中,而好的旧代码不使用rebar,所以我认为编写将.ex文件构建到Emakefile中的规则可能是个好主意,但是手册这里没有提到任何相关的内容。

编辑:

我们的团队主要在Windows环境下工作,但是部署将在Linux服务器上完成,所以我需要一个跨平台的解决方案。因为Erlang本身是跨平台的,所以我想使用erl -make命令来完成它。

当然,我可以编写一个Makefile,但是在我们的开发环境中,我需要一个build.bat或类似的东西来构建代码,因为在我们的开发机器上没有make命令。

有人有更好的主意吗?

更新:

如果有人想知道,我是这样做的:

  1. 将Elixir源树中的lib/elixir目录复制到源dir,例如some_project/src/tools/elixir
  2. 按顺序将some_project/src/tools/elixir/src/elixir_transform.erlsome_project/src/tools/elixir/src/*添加到Emakefile中。将输出dir设置为some_project/ebin (所有其他.beam文件都位于那里)。
  3. src/elixir.app.src复制到some_project/ebin/elixir.app源代码树中,并对其进行编辑以修复版本代码。
  4. 通过运行erl -pa ebin -make ( some_project dir )构建Erlang代码。
  5. 通过运行erl -pa ebin -s elixir_compiler core -s erlang halt构建Elixir编译器
  6. 现在,我们的代码中有了一个有效的Elixir环境,我使用以下脚本构建自定义的.ex文件:

%!-pa ./ebin main(_) -> ExList = <<"source_1.ex">>,<<"source_2.ex">>,<<"source_3.ex">>,application:start(长生不老),gen_server:call(elixir_code_server,{compiler_options,{docs,true},{debug_info,true}),elixir_compiler:file_to_path(F,<<"./ebin">>) \x/f <- ExList,erlang:halt(0)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-11 21:00:38

如果您想要显式编译Elixir,我将使用Makefile方法,因为它将始终得到Elixir的支持。但是,我建议使用预编译的二进制文件,甚至假设在每台开发人员机器中都安装了Elixir。您甚至可以向您的Emakefile中添加一个任务,以确保每个人都在使用适当的Elixir版本。

最后,关于编译您自己的Elixir代码,我建议您只使用mixmix是一个二进制文件,它附带了Elixir,您可以简单地从Emakefile中执行./src/tools/elixir/bin/mix compile

如果不可能使用mix,则应该使用并行编译器,因为它将使用计算机中可用的所有核心来编译文件,并且它将自动检测和解决文件之间的依赖关系。下面是从erlang调用并行编译器的一个示例:

https://github.com/basho/rebar/pull/347/files#L1R62

API非常简单。它期望将文件名列表编译为二进制文件,将文件输出为另一个二进制文件的目录。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14517164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档