On Thu, Mar 03, 2011 at 02:29:38AM +0300, Alexey Tourbin wrote: [...] > Обнаружил интересную особенность: если файл уже включен, то он может > не появиться на первом фрейме стека (в выводе cpp). Напр. > > /usr/lib64/R/library/Matrix/include/Matrix.h > 3 #include > 4 #include > 5 #include "cholmod.h" > > cpp.req обнаружит только зависимость на Rdefines.h, т.к. Rdefines.h > в свою очередь включает Rconfig.h. При повторном включении Rconfig.h > даёт пустой вывод, и препроцессор его не аннотирует. > > Что в принципе не очень хорошо. Но я не знаю другого способа вклиниться > в cpp, и судя по cpp(1) такого способа скорее всего просто нет. Проверил > cpp -H, он обладает таким же дефектом. > > $ cpp -I/usr/include/R -H /usr/lib64/R/library/Matrix/include/Matrix.h 2>&1 >/dev/null |grep /R/ > . /usr/include/R/Rdefines.h > .. /usr/include/R/R_ext/Memory.h > .. /usr/include/R/R_ext/RS.h > ... /usr/include/R/Rconfig.h Можно сделать вывод, что ограничиваться первым фреймом недостаточно. Видимо, надежнее будет останавливаться на первых файлах за пределами %buildroot. -- ldv