make не видит изменений? - PullRequest
2 голосов
/ 22 октября 2010

Сценарий 1:

Я проверил проект, внес некоторые изменения в исходный файл, и сделал make, и make видит изменения.

Сценарий 2:

Я снова извлек проект в другой каталог (по некоторым причинам), скопировал сюда измененный исходный файл, и сделал make, и ничего не происходит, если я запускаю программу, я не вижу свои изменения, make не видит что я внес изменения в этот исходный файл

Ответы [ 4 ]

4 голосов
/ 22 октября 2010

make использует временные метки файлов, чтобы определить, что строить.

Возможно, ваша система контроля версий проверяет все файлы с текущим временем. Когда вы копируете свой источник, у него есть время в прошлом, заставляющее make думать, что объектный файл (предположительно в вашей проверке) новее, чем ваш источник.

Если это так, вы можете использовать touch, чтобы установить временную метку файла сейчас.

2 голосов
/ 22 октября 2010

Добавление к существующим ответам:

Чтобы коснуться целей, вы можете использовать опцию make -t или --touch.Эта опция не сделает цель, а просто прикоснется к ней, чтобы при следующем вызове make цель была сделана.

В качестве альтернативы вы можете использовать опцию -B или --always-make, которая безусловносделать цель независимо от модификации зависимой (ых).

0 голосов
/ 01 января 2011

Если вы использовали cp для копирования файлов, параметры -a --archive -p --preserve сохранят метку времени.Это не то, что вы хотите!

Добавить опцию --no-preserve=timestamps

cp [options] --no-preserve=timestamps .....
0 голосов
/ 22 октября 2010

хорошо, я только что коснулся скопированного (измененного) источника и теперь make распознает изменения.

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