[cmake-developers] why includes the Ninja decency contents sytemheader too?

Claus Klein claus.klein at arcormail.de
Tue Feb 6 03:19:44 EST 2018


I’m wondering about the different dependency strategies between ‚Unix Makefiles’ and Nina generator.

IMHO: This make ninja slower without much user benefit!

-Claus

find . -name depend.make | xargs cat
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.10

CMakeFiles/BindToDevice.dir/BindToDevice.c.o: ../BindToDevice.c

# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.10

CMakeFiles/InnerClassIdiom.dir/InnerClassIdiom.cpp.o: ../InnerClassIdiom.cpp

# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.10

CMakeFiles/testFileAppend.dir/tests/testFileAppend.c.o: ../tests/testFileAppend.c

#########################################

Claus-MBP:build clausklein$ ninja -t deps

CMakeFiles/testFileAppend.dir/tests/testFileAppend.c.o: #deps 98, deps mtime 1517904010 (VALID)
    ../tests/testFileAppend.c
    /usr/include/sys/stat.h
    /usr/include/sys/_types.h
    /usr/include/sys/cdefs.h
    /usr/include/sys/_symbol_aliasing.h
    /usr/include/sys/_posix_availability.h
    /usr/include/machine/_types.h
    /usr/include/i386/_types.h
    /usr/include/sys/_pthread/_pthread_types.h
    /usr/include/Availability.h
    /usr/include/AvailabilityInternal.h

# ….

quote from ninja list:

On Thu, Nov 30, 2017 at 12:09:55 -0800, Evan Martin wrote:
> That CMake change is interesting.  While it's true that it is more correct
> to check the state of the system headers, it's also true that to be fully
> correct here you need a completely hermetic build.  If CMake doesn't also
> check the compiler binary as well as any shared libraries that the compiler
> binary uses, then I think using this extra flag only serves to make ninja
> slower without much user benefit.

The mentioned issue is here:

   https://cmake.org/Bug/view.php?id=14914 <https://cmake.org/Bug/view.php?id=14914>

It was done for feature parity with the Makefiles generators. They use
CMake's scanning logic rather than exact dependencies like Ninja (for
various reasons).

--Ben


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake-developers/attachments/20180206/abb49f39/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dependencies.log
Type: application/octet-stream
Size: 19832 bytes
Desc: not available
URL: <https://cmake.org/pipermail/cmake-developers/attachments/20180206/abb49f39/attachment.obj>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake-developers/attachments/20180206/abb49f39/attachment-0001.html>


More information about the cmake-developers mailing list