Alan W. Irwin wrote:
The GNU make documentation states the following:

   Since it knows that phony targets do not name actual files that
   could be remade from other files, make skips the implicit rule search
   for phony targets.... This is why declaring a
   target phony is good for [make] performance....

Also,

   Using .PHONY' is more explicit and more efficient.  However, other
   versions of make' do not support .PHONY'; thus FORCE (an arbitrarily
   named rule with no prerequisites or rules) appears in
   many makefiles.

As part of another investigation I searched a Linux build tree created by
cmake (2.4.8) and was surprised to find no reference to .PHONY. Instead, the makefile generator on Linux is using the same method as FORCE idea
above, i.e., a rule called cmake_force with no prerequisites or commands to
serve as a prerequisite to rules that must be run every time.

CMake is missing a bet on Linux systems to reduce Makefile overhead since it
is using this cmake_force approach rather than the preferred more
efficient.PHONY approach for rules that must be run every time.  Since the
Makefiles generated by cmake have an extremely large number of such rules,
Makefile latency may be significantly reduced by this method on Linux (GNU
make) systems.

If the cmake developers here like this idea (or at least don't strongly
dislike it), I will go ahead and make a feature request so it doesn't get
lost.


CMake is written to generic make, and I don't think we would want to add something that only worked with gmake. The trouble is the make you are using can change after CMake is run, so we can not even test for the version of make being used. I guess if it was a big enough performance gain, we could add some sort of option to allow for this. However, I would want to make sure that there would be a good payback. So far the cmake makefiles outperform the autotools ones quite well, and performance has not been an issue. Do you think you are having a performance problem?

-Bill
_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to