我想将Elixir集成到我们的项目中,而好的旧代码不使用rebar,所以我认为编写将.ex文件构建到Emakefile中的规则可能是个好主意,但是手册这里没有提到任何相关的内容。
编辑:
我们的团队主要在Windows环境下工作,但是部署将在Linux服务器上完成,所以我需要一个跨平台的解决方案。因为Erlang本身是跨平台的,所以我想使用erl -make命令来完成它。
当然,我可以编写一个Makefile,但是在我们的开发环境中,我需要一个build.bat或类似的东西来构建代码,因为在我们的开发机器上没有make命令。
有人有更好的主意吗?
更新:
如果有人想知道,我是这样做的:
lib/elixir目录复制到源dir,例如some_project/src/tools/elixir。some_project/src/tools/elixir/src/elixir_transform.erl和some_project/src/tools/elixir/src/*添加到Emakefile中。将输出dir设置为some_project/ebin (所有其他.beam文件都位于那里)。src/elixir.app.src复制到some_project/ebin/elixir.app源代码树中,并对其进行编辑以修复版本代码。erl -pa ebin -make ( some_project dir )构建Erlang代码。erl -pa ebin -s elixir_compiler core -s erlang halt构建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)。
发布于 2013-02-11 21:00:38
如果您想要显式编译Elixir,我将使用Makefile方法,因为它将始终得到Elixir的支持。但是,我建议使用预编译的二进制文件,甚至假设在每台开发人员机器中都安装了Elixir。您甚至可以向您的Emakefile中添加一个任务,以确保每个人都在使用适当的Elixir版本。
最后,关于编译您自己的Elixir代码,我建议您只使用mix。mix是一个二进制文件,它附带了Elixir,您可以简单地从Emakefile中执行./src/tools/elixir/bin/mix compile。
如果不可能使用mix,则应该使用并行编译器,因为它将使用计算机中可用的所有核心来编译文件,并且它将自动检测和解决文件之间的依赖关系。下面是从erlang调用并行编译器的一个示例:
https://github.com/basho/rebar/pull/347/files#L1R62
API非常简单。它期望将文件名列表编译为二进制文件,将文件输出为另一个二进制文件的目录。
https://stackoverflow.com/questions/14517164
复制相似问题