У GNU Make есть -B
опция, которая заставляет make
игнорировать существующие цели. Он позволяет восстанавливать цель, но также восстанавливает все дерево зависимостей цели. Интересно, есть ли способ принудительно восстановить цель, не перестраивая ее зависимости (используя опции GNU Make, настройки в Makefile, совместимое программное обеспечение make
и т. Д.)?Есть ли способ заставить перестроить цель (make -B), не перестраивая свои зависимости?
Иллюстрация проблемы:
$ mkdir test; cd test
$ unexpand -t4 >Makefile <<EOF
huge:
@echo "rebuilding huge"; date >huge
small: huge
@echo "rebuilding small"; sh -c 'cat huge; date' >small
EOF
$ make small
rebuilding huge
rebuilding small
$ ls
huge Makefile small
$ make small
make: 'small' is up to date.
$ make -B small
rebuilding huge # how to get rid of this line?
rebuilding small
$ make --version | head -n3
GNU Make 4.0
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2013 Free Software Foundation, Inc.
Конечно можно rm small; make small
, но есть встроенный способ?
Does [этот вопрос] (http://stackoverflow.com/questions/12199237/tell-make-to-ignore-dependencies-when-the-top-target-has-created-помогли вам? – sycko
Спасибо, но не так много: как я показал, используя 'ls',' огромный' здесь сохраняется (без '.SECONDARY:' target), а перестройка скорее связана с '-B'. –