Мне часто нужно это:
Скажем, у вас есть файл test.c
; он включает в себя другие файлы, скажем:
#include <stdio.h>
#include "mylib.h"
#include "../mylib_extra.h"
#include "../mylib_bonus.h"
...
... тогда, скажем, "mylib.h" в том же каталоге загружает также что-то еще:
#include <special.h>
#include "/path/to/calculator.h"
#include "testing/tester.h"
...
... и т. д. Теперь некоторые из этих операторов относятся к системным каталогам, которые нужно знать заранее - но в принципе, я думаю, можно было бы написать инструмент, который с учетом шаблона оператора "include" мог бы рекурсивно откройте все файлы, на которые есть ссылки в исходном файле, найдите там те же операторы, откройте файлы дальше - пока не начертится древовидная карта. Элементы, которые он не мог открыть без знания пути, будут отмечены.
Я хотел бы представить себе такой инструмент, который работает следующим образом (где найденные / открытые файлы помечены звездочкой (*), в противном случае нет отметок)
$ ./getincludetree test.c
test.c
- <stdio.h>
- "mylib.h" (*)
-- <special.h>
-- "/path/to/calculator.h" (*)
--- ...
-- "testing/tester.h" (*)
--- ...
- "../mylib_extra.h" (*)
-- ...
- "../mylib_bonus.h" (*)
-- ...
Еще лучше, если бы вы могли указать шаблон для оператора включения, тогда вместо #include "..."
можно было бы использовать, скажем, \input{...}
и использовать тот же инструмент для нахождения структуры включения латекса. документ, а также.
Есть ли что-нибудь подобное там?
Большое спасибо заранее за любые ответы,
Ура!