Я понимаю разные файлы .d, если путь к системному корневому каталогу является абсолютным и относительным.
Код: Выделить всё
g++ --MMD --sysroot=absolute_path_to_sysroot -c -o file.o -MF file.d file.cpp
g++ --MMD --sysroot=relative_path_to_sysroot -c -o file.o -MF file.d file.cpp
Если путь компилятора и --sysroot являются абсолютными, то два дополнительных файла заголовка отображаются как зависимости в файле .d.
Если --sysroot является относительным, то два дополнительных файла заголовков больше не отображаются в качестве зависимостей в файле .d.
Это заставило меня задуматься, что является ли критерий, отличный от #included заголовка, на основании которого файлы .d фактически записываются компилятором, и как sysroot повлияет на это?
Подробнее здесь: https://stackoverflow.com/questions/231 ... te-d-files