From: David Woodhouse
Sent: 28 October 2023 20:35
Using -MD without -MP causes build failures when a header file is deleted or moved. With -MP, the compiler will emit phony targets for the header files it lists as dependencies, and the Makefiles won't refuse to attempt to rebuild a C unit which no longer includes the deleted header.
Won't a phony target stop a header being built if there is an actual rule to build it?
I usually add:
%.h: echo "Ignoring stale dependency for $@"
Which only applies if there isn't an explicit rule.
David
- Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)