jcxz писал(а):
Вы хотите собрать в единый файл всё, что подключается при помощи #include что-ль?
Благодарю за наводку, но ведь собираться будет то, о чём препроцессор знает. А тут задача сложнее на мой взгляд.
Вот это определено в одном .h
Код:
typedef struct SampleString SampleString;
А вот это в другом .h
Код:
struct SampleString {
string_tip string;
};
А вот это уже в третьем .h
Код:
typedef struct string_str {
string_union_cttp uni;
char *ptr;
} string_tip[1];
А вот это уже в четвёртом .h
Код:
typedef union string_union_uni {
string_heap_cttp heap1;
string_stack_cttp stack1;
} string_union_cttp;
А string_heap_cttp и string_stack_cttp уже в пятом .h - и так далее до хрен пойми какого уровня вложенности - десятки точно, а может и сотни.
И конечно в каждом таком .h файле объявления не только перечисленных выше типов и переменных, а ещё и других - размеры каждого .h от единиц килобайт до десятков килобайт, а объём всей уже скомпилированной прошивки устройства под мегабайт.
Вот и получается, чтобы всё это раскопать нужно:
- найти поиском по содержимому все .h файлы, где нужный неизвестный тип упоминается;
- открыть один из найденных .h файлов;
- определить просто используется нужный тип в этом .h файле или именно что определяется - если используется, переходить к следующему найденному .h файлу, если именно определяется - ура, успех.
И вот делать всё это вручную оказалось очень и очень затруднительно - хотелось бы автоматизировать. Это что касается самой задачи.
А что касается Вашего совета включить "галочку" - она ведь сработает, если препроцессор пробежится по уже вписанным include, убедится что да, все объявления имеются и уже потом сложит все их в нужное место, так? Препроцессор ведь не будет сам рыскать по десяткам директорий и перебирать сотни .h файлов, чтобы определить нужные, он ведь будет искать нужные определения в уже указанных ему инклюдах, а нужно, чтобы он искал везде, куда сможет дотянуться - с указанной директории и в её глубины.
Может такими способностями вдруг обладают какие-то системы сборки - CMake, Meson, какая-то ещё?