我想将 Elixir 集成到我们的项目中,并且好的旧代码不使用rebar
,所以我认为编写构建.ex
文件的规则Emakefile
可能是一个好主意,但是这里的手册页没有提到任何相关内容。
编辑:
我们团队主要是在Windows环境下工作,但是部署会在Linux服务器上完成,所以我需要一个跨平台的解决方案。由于 Erlang 本身是跨平台的,所以我想用erl -make
命令来做。
当然我可以写一个Makefile
,但是我需要一个build.bat
或类似的东西来在我们的开发环境中构建代码,因为我们的开发机器上没有make
命令。
有人有更好的主意吗?
更新:
如果有人想知道,我是这样做的:
- 将 Elixir 源代码树中的目录复制
lib/elixir
到我们的源目录,例如some_project/src/tools/elixir
. some_project/src/tools/elixir/src/elixir_transform.erl
按顺序将和添加some_project/src/tools/elixir/src/*
到Emakefile
,。将输出目录设置为some_project/ebin
(所有其他.beam
文件都位于那里)。- 将
src/elixir.app.src
Elixir 源代码树复制到some_project/ebin/elixir.app
,并对其进行编辑以修复版本代码。 - 在dir中运行
erl -pa ebin -make
,构建 Erlang 代码。some_project
- 通过运行构建 Elixir 编译器
erl -pa ebin -s elixir_compiler core -s erlang halt
- 现在我们的代码中有一个可用的 Elixir 环境,我使用以下 escript 来构建我们的自定义
.ex
文件:
%%! -pa ./ebin main(_) -> ExList = [ <<"source_1.ex">>, <<"source_2.ex">>, <<"source_3.ex">>], application:start(elixir), gen_server:call(elixir_code_server, {compiler_options, [{docs, true}, {debug_info, true}]}), [elixir_compiler:file_to_path(F, <<"./ebin">>) || F <- ExList], erlang:halt(0).