5
我試圖做類似的東西How to make two different source directories in a Makefile output to one bin directory?,所以我有這些文件(相對於我的項目的根目錄):強制ERL -make重新編譯文件時宏改變
Emakefile:
% EMakefile
% -*- mode: erlang -*-
{["src/*", "src/*/*", "src/*/*/*"],
[{i, "include"}, {outdir, "ebin"}, debug_info]}.
test/Emakefile:
% EMakefile
% -*- mode: erlang -*-
{["../src/*", "../src/*/*", "../src/*/*/*"],
[{i, "../include"}, {outdir, "../ebin"}, debug_info, {d, 'TEST'}]}.
Makefile:
EPATH=-pa ebin
all: before_compile
erl -make
all_test: before_compile
cd test
erl -make
cd ..
before_compile: mk_ebin copy_sqlite create_db copy_config copy_dot_app
test: all_test
erl -noshell $(EPATH) \
-s tests run \
-s init stop
rm -f ct.db
clean:
rm -fv ebin/*
... dependencies of before_compile
的問題是,運行make test
沒有按不要重新編譯已經用make
編譯的任何模塊。看起來erl -make
並不在意它們是在沒有TEST
定義的情況下編譯的,它只是檢查模塊本身是否比beam文件早。我如何強制它重新編譯(並在不需要時避免重新編譯)?
UPDATE:奇怪的是,make clean
後立即運行make all_test
時,似乎./Emakefile
代替test/Emakefile
:我正在
Recompile: src/tests
Recompile: src/server_protocol_client
等,並沒有測試來代替
Recompile: ../src/tests
Recompile: ../src/server_protocol_client
我手動執行cd test; erl -make
。任何想法爲什麼?無論如何,我已經刪除了test/Emakefile
和Makefile
更換all_test
固定的這個問題:
all_test: before_compile
erl -noshell -eval "make:all([{d, 'TEST'}])." -s init stop