GNU make: Как изменить файл без повторного выполнения правил?

0

Предположим, что я хочу сделать крайне незначительным (например, комментирование, очистка пробелов и т.д.), Изменить файл, но я не хочу, чтобы Make выполнял длительный (> 24 часа) процесс восстановления. Есть ли способ сделать это?

Я знаю, что вы можете сделать обратное (т.е. Перестроить без редактирования файла), используя "touch", но это на самом деле не помогает.

Теги:
makefile
dependencies
build

3 ответа

2
Лучший ответ

Вы также можете сделать обратное с touch. Один из способов сделать это довольно легко:

 $ cp -a foo.c foo.c.bak
 $ <fix up foo.c>
 $ touch foo.c -r foo.c.bak

Поскольку cp -a должен сохранять cp -a метку модификации. Другой способ сделать что-то подобное можно, это отметить stat -c "%y" foo.c метку модификации (например, stat -c "%y" foo.c или что-то в этом роде) и использовать -m и -t для touch вместо копирования файла.

  • 0
    Похоже, вы и я придумали почти идентичные решения. Я должен буду проголосовать за это как «полезный» ...
  • 0
    Кажется, что это будет работать, хотя я сейчас не на Linux-машине, чтобы проверить это. PS Я часто использую gnu make и в Windows ... кто-нибудь знает самое простое решение для Windows? Все альтернативы Win Touch, которые я вижу, кажутся многословными / хакскими / неэлегансными.
0

touch все еще остается ответом, который вам просто нужно использовать в обратном направлении.

  1. Скопируйте файл (сохраняя время модификации, -p).
  2. Отредактируйте исходный файл.
  3. Используйте touch для сброса настроек /etc. назад к тому, что было раньше (коснитесь файла -r file.copy).

Этого должно быть достаточно, чтобы делать то, что вы хотите.

И помните, вы всегда можете попросить сделать -q чтобы убедиться, что он будет иметь любую работу, чтобы убедиться, что вы поняли это правильно.

0

После редактирования файла вы можете изменить "время модификации" на все, что хотите.

touch -m -r filename

Где filename - это имя файла с временем, которое вы хотите скопировать (другой нетронутый файл из сборки). См. Http://www.computerhope.com/unix/utouch.htm

Ещё вопросы

Сообщество Overcoder
Наверх
Меню