To jest mój Makefile:
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
Mogę biegać make compile
wiele razy i dostać
aromanov@alexey-desktop:~/workspace/gm-controller/lib/erlang-sqlite$ make compile
./rebar get-deps compile
==> erlang-sqlite (get-deps)
==> erlang-sqlite (compile)
Jednak z jakiegoś powodu bieganie make test
zawsze daje
aromanov@alexey-desktop:~/workspace/gm-controller/lib/erlang-sqlite$ make test
make: `test' is up to date.
nawet jeśli pliki nie są skompilowane. Pytanie brzmi: dlaczego?
Uruchomienie tego samego polecenia działa bezpośrednio:
aromanov@alexey-desktop:~/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)
...
all
,test
iclear
są twoje docelowe nazwy makefiletest
natest_rule
lub coś innego.EDYCJA: Dotyczy to tylko niektórych wersji
make
- powinieneś sprawdzić swoją stronę podręcznika man.Możesz także przekazać
-B
flagę domake
. Zgodnie ze stroną podręcznika:Więc
make -B test
rozwiązałby twój problem, gdybyś był w sytuacji, w której nie chcesz edytowaćMakefile
ani zmieniać nazwy folderu testowego.źródło
-B
jest dla mnie trybem wstecznej kompatybilności ... (Wydaje się, że pytanie nie dotyczy zestawu FreeBSD, OS / GNU)--always-make
działa dla ciebie?.PHONY
Cel wydaje się rodzajem przenośnego mimo ... (Przynajmniej do FreeBSD, nie wiem o takich rzeczach jak Solaris)--always-make
opcji do działania, plik makefile jest uszkodzony.Dzieje się tak, gdy masz plik o tej samej nazwie co nazwa docelowa Makefile w katalogu, w którym znajduje się Makefile.
źródło
moim błędem było utworzenie nazwy docelowej „nazwa_pliku.c:” zamiast po prostu „nazwa_pliku:”
źródło