开发者

make doesn't see changes?

Scenario 1:

I checked out a project, and made some changes to a source file, and did make, and make sees the changes.

Scenario 2:

I checked out the project again to different directory (some reasons), copied the modified source file here, and did make and nothing happens, if I run th开发者_开发问答e program, I don't see my changes, make doesn't see that I made change to this source file


make uses the timestamps of the files to determine what to build.

Perhaps your version-control system is checking all files out with the current time. When you copy your source over, it has a time in the past, making make think that the object file (presumably in your checkout) is newer than your source.

If that's the case, you can use touch to set the timestamp of a file to now.


Adding to existing answers:

To touch the targets, you can use the -t or --touch option of make. This option will not make the target but just touch it so that the next time you invoke make, the target will be made.

Alternatively you can use the -B or --always-make option which will unconditionally make the target irrespective of the modification of it's dependent(s).


okay, I just touched the copied (modified) source and now make recognizes the changes.


If you used cp to copy files options -a --archive -p --preserve will preserve the timestamp. That is not what you want!

Add option --no-preserve=timestamps

cp [options] --no-preserve=timestamps .....


Make sure you have your .PHONY tags and they are correct

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜