Questo è il mio Makefile:Perché pensare che l'obiettivo sia aggiornato?
REBAR=./rebar
REBAR_COMPILE=$(REBAR) get-deps compile
all: compile
compile:
$(REBAR_COMPILE)
test:
$(REBAR_COMPILE) skip_deps=true eunit
clean:
-rm -rf deps ebin priv doc/*
docs:
$(REBAR_COMPILE) doc
ifeq ($(wildcard dialyzer/sqlite3.plt),)
static:
$(REBAR_COMPILE) build_plt analyze
else
static:
$(REBAR_COMPILE) analyze
endif
posso correre make compile
più volte e ottenere
[email protected]:~/workspace/gm-controller/lib/erlang-sqlite$ make compile
./rebar get-deps compile
==> erlang-sqlite (get-deps)
==> erlang-sqlite (compile)
Tuttavia, per qualche motivo, l'esecuzione make test
dà sempre
[email protected]:~/workspace/gm-controller/lib/erlang-sqlite$ make test
make: `test' is up to date.
anche se i file sono non compilato. La domanda è, perché?
esecuzione lo stesso comando lavora direttamente:
[email protected]:~/workspace/gm-controller/lib/erlang-sqlite$ ./rebar get-deps compile skip_deps=true eunit
==> erlang-sqlite (get-deps)
==> erlang-sqlite (compile)
Compiled src/sqlite3_lib.erl
Compiled src/sqlite3.erl
==> erlang-sqlite (eunit)
...
Avevo una directory chiamata build e un'altra chiamata lib. Col senno di poi, questi non sono nomi di obiettivi perfetti. Ugh ..... fare. – MattD
* Dove 'all',' test' e 'clear' sono i nomi dei target makefile – ThorSummoner
Un'altra soluzione sta cambiando l'etichetta. Nel tuo caso, cambia 'test' per' test_rule' o qualcosa di diverso. – auraham