diff --git a/README.md b/README.md index 0c01633..c3a54f5 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Build ----- $ rebar3 escriptize -> eMake - $ rebar3 compile + 将编译得到 _build/default/bin 下面的eMake eMake.cmd 文件复制到工作目录或者添加到环境变量即可使用 eg ----- @@ -17,3 +17,4 @@ eg eMake 4 eMake "./Emakefile" 4 eMake "./Emakefile" 4 "[noexec, debug_info]" + 可以在编译之后修改代码指定默认的 Emakefile文件 diff --git a/src/eMake.erl b/src/eMake.erl index 1a0e44a..3e3cdd3 100644 --- a/src/eMake.erl +++ b/src/eMake.erl @@ -12,26 +12,27 @@ ]). -define(MakeOpts, [noexec, load, netload, noload]). --define(EMakefile, "./Emakefile_dev"). +-define(EMakefile, "./Emakefile"). -define(OnceCnt, 16). main(Args) -> process_flag(trap_exit, true), - case Args of + IsAll = lists:member("all", Args), + case lists:delete("all", Args) of [] -> - make(max(1, erlang:system_info(schedulers) - 1), ?EMakefile, []); + make(max(1, erlang:system_info(schedulers) - 1), ?EMakefile, [], IsAll); [EMakeFileOrWorkCnt] -> try list_to_integer(EMakeFileOrWorkCnt) of Cnt -> - make(max(1, Cnt), ?EMakefile, []) + make(max(1, Cnt), ?EMakefile, [], IsAll) catch _:_ -> - make(max(1, erlang:system_info(schedulers) - 1), EMakeFileOrWorkCnt, []) + make(max(1, erlang:system_info(schedulers) - 1), EMakeFileOrWorkCnt, [], IsAll) end; [EMakeFile, WorkCntStr] -> - make(max(1, list_to_integer(WorkCntStr)), EMakeFile, []); + make(max(1, list_to_integer(WorkCntStr)), EMakeFile, [], IsAll); [EMakeFile, WorkCntStr, OptsStr] -> {ok, Opts} = strToTerm(OptsStr), - make(max(1, list_to_integer(WorkCntStr)), EMakeFile, Opts) + make(max(1, list_to_integer(WorkCntStr)), EMakeFile, Opts, IsAll) end. eMakeFile() -> @@ -56,15 +57,15 @@ saveEMake(NowTime) -> ok end. -make(WorkerCnt, EMakeFile, Opts) -> +make(WorkerCnt, EMakeFile, Opts, IsAll) -> io:format("compile start use EMakefile: ~ts~n", [EMakeFile]), StartTime = erlang:system_time(second), {MakeOpts, CompileOpts} = splitOpts(Opts, [], []), case readEMakefile(EMakeFile, CompileOpts) of {ok, Files} -> LastTime = readEMake(), - IsAll = LastTime /= 0 andalso StartTime =< LastTime, - Ret = forMake(Files, WorkerCnt, lists:member(noexec, MakeOpts), load_opt(MakeOpts), IsAll, []), + LIsAll = IsAll orelse (LastTime /= 0 andalso StartTime =< LastTime), + Ret = forMake(Files, WorkerCnt, lists:member(noexec, MakeOpts), load_opt(MakeOpts), LIsAll, []), EndTime = erlang:system_time(second), saveEMake(EndTime), case Ret of