No rule to make foo.cpp needed by foo.o ???

David Holmes - Sun Microsystems David.Holmes at Sun.COM
Tue Dec 22 02:42:44 UTC 2009


Igor Nekrestyanov said the following on 12/22/09 11:45:
> Check the output of "gnumake -dd" looking for everything related to 
> files in question. It will tell you why rules are not fired.

Surprisingly the answer was because "Foo.cpp does not exist" which of 
course is nonsense.

I'm guessing this must be some kind of NFS caching issue. I rsync the 
updated files to the build location and then run the build on another 
machine.

Thanks,
David

> 
> -igor
> 
> On 12/21/09 4:48 PM, David Holmes - Sun Microsystems wrote:
>> Well I fixed the time problem but that didn't fix the problem. I just 
>> updated three files and had to try the build three times before it 
>> worked - each time it reported needing to make one of the updated files.
>>
>> Bizarre.
>>
>> David
>>
>> David Holmes - Sun Microsystems said the following on 12/21/09 17:05:
>>> Deepak Mathews said the following on 12/21/09 16:52:
>>>> Are you sure about the path to foo.cpp in the makefile is correctly 
>>>> set during compilation.
>>>
>>> Yes paths are fine.
>>>
>>>> It also can be a timestamp issue, but only if the updated file has a 
>>>> modification time older...it might be trivial... but the if system 
>>>> time is behind it can cause this issue.. 
>>>
>>> I discovered that simply re-issuing the build command also fixes it. 
>>> Just seems to take two goes to get it right.
>>>
>>> And the build machine time is slightly behind the fileserver on which 
>>> the source files reside, so I think it is a timestamp issue.
>>>
>>> Thanks,
>>> David
>>>
>>>> On Mon, Dec 21, 2009 at 8:46 AM, David Holmes - Sun Microsystems 
>>>> <David.Holmes at sun.com <mailto:David.Holmes at sun.com>> wrote:
>>>>
>>>>     I'm doing a build and get a compilation error in foo.cpp, so I fix
>>>>     the problem that caused the error and make then aborts with
>>>>
>>>>     "No rule to make target 'foo.cpp' needed by 'foo.o'. Stop"
>>>>
>>>>     I have to do a clean and then re-build to get past this.
>>>>
>>>>     This is building hotspot on linux and the make version is 3.81
>>>>
>>>>     This is driving me nuts and wasting a lot of time!
>>>>
>>>>     Anyone got any idea why make is doing this? It is as-if it can't
>>>>     find the updated cpp file. Could it be a timestamp issue?
>>>>
>>>>     Thanks,
>>>>     David Holmes
>>>>
>>>>
> 



More information about the build-dev mailing list