Este es mi 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
Puedo correr make compile
varias veces y obtener
aromanov@alexey-desktop:~/workspace/gm-controller/lib/erlang-sqlite$ make compile
./rebar get-deps compile
==> erlang-sqlite (get-deps)
==> erlang-sqlite (compile)
Sin embargo, por alguna razón correr make test
siempre da
aromanov@alexey-desktop:~/workspace/gm-controller/lib/erlang-sqlite$ make test
make: `test' is up to date.
incluso si los archivos no están compilados. La pregunta es, ¿por qué?
Ejecutar el mismo comando funciona directamente:
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
yclear
están los nombres de destino de tu makefiletest
portest_rule
o algo diferente.EDITAR: Esto solo se aplica a algunas versiones de
make
- debe verificar su página de manual.También puedes pasarle la
-B
banderamake
. Según la página del manual, esto hace:Por
make -B test
lo tanto , resolvería su problema si se encontrara en una situación en la que no desea editarMakefile
o cambiar el nombre de su carpeta de prueba.fuente
-B
es un modo compatible con versiones anteriores para mí ... (FreeBSD, OS / GNU toolkit no parece estar especificado en cuestión)--always-make
Funciona para ti?.PHONY
embargo, el objetivo parece algo portátil ... (Al menos para FreeBSD, no estoy seguro de cosas como Solaris)--always-make
opción para funcionar, su archivo MAKE está roto.Ocurre cuando tiene un archivo con el mismo nombre que el nombre de destino de Makefile en el directorio donde está presente el Makefile.
fuente
mi error fue hacer que el nombre de destino "filename.c:" en lugar de simplemente "filename:"
fuente