Один простой способ - создать файл, содержащий все остальные исходные файлы.
$cat *.c > metafile.c
Это создаст такой файл, в зависимости от того, как вы установили «прагму один раз», и если этот файл ifndef, вероятно, не сможет скомпилироваться самостоятельно.
С другой стороны, если то, что вы хотите в файле, где все макросы препроцессора были развернуты и оценены, то ответом будет добавить следующее в gcc:
-save-temps
тогда файл .ii будет содержать развернутые и оцененные макросы