tags:

views:

21

answers:

3

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 the program, I don't see my changes, make doesn't see that I made change to this source file

A: 

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

Vaibhav Bajpai
+3  A: 

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.

Adrian Smith
+1  A: 

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

codaddict