Почему заставляет думать, что цель актуальна? - PullRequest
172 голосов
/ 14 октября 2010

Это мой 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

Я могу запустить make compile несколько раз и получить

aromanov@alexey-desktop:~/workspace/gm-controller/lib/erlang-sqlite$ make compile
./rebar get-deps compile
==> erlang-sqlite (get-deps)
==> erlang-sqlite (compile)

Однако, по какой-то причине при запуске make test всегда выдается

aromanov@alexey-desktop:~/workspace/gm-controller/lib/erlang-sqlite$ make test
make: `test' is up to date.

, даже если файлы не скомпилированы.Вопрос в том, почему?

Выполнение той же команды напрямую работает:

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)
...

Ответы [ 2 ]

370 голосов
/ 14 октября 2010

Возможно, у вас есть файл / каталог с именем test в каталоге.Если этот каталог существует и не имеет более поздних зависимостей, то эта цель не перестраивается.

Чтобы принудительно перестроить эти типы целей, не связанных с файлами, вы должны сделать их фальшивыми следующим образом:1004 *

.PHONY: all test clean

Обратите внимание, что вы можете объявить все свои фальшивые цели там.

19 голосов
/ 27 мая 2016

РЕДАКТИРОВАТЬ: Это относится только к некоторым версиям make - вы должны проверить свою справочную страницу.

Вы также можете передать флаг -B на make. Согласно справочной странице, это делает:

-B, --always-make Безоговорочно ставьте все цели.

Так что make -B test решит вашу проблему, если вы окажетесь в ситуации, когда вы не хотите редактировать Makefile или изменить имя вашей тестовой папки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...