Что я должен изменить, чтобы только предварительно обработать все файлы C во всем проекте? - PullRequest
0 голосов
/ 11 июня 2018

Чтобы решить различные проблемы, с которыми я сталкиваюсь для инструмента, который я разрабатываю, я хотел бы иметь возможность создавать предварительно обработанные версии всех файлов C (*.c) вданный проект, особенно для удаления макросов , но также и для некоторых других деталей.Я знаю, что предварительная обработка может быть выполнена либо с gcc -E, либо с cpp для одного файла, но когда появляются сложные зависимости и включения, как в больших проектах, индивидуальная предварительная обработка бесполезна или совершенно непрактична.

Теперь,Конечно, эти проекты также обычно имеют спецификации для эффективной компиляции всего проекта, такого как Makefile или файл конфигурации.Таким образом, мой вопрос: что именно мне нужно изменить там (или, по крайней мере, искать), чтобы производить только предварительно обработанные C-файлы для каждого C-файла в проекте вместо создания проекта?

Можно предположить, что это проект с открытым исходным кодом и файлами C, но (неинтересно) другие файлы, написанные на других языках программирования, также могут быть там.

1 Ответ

0 голосов
/ 11 июня 2018

Вот простое правило make для генерации предварительно обработанных выходных файлов из .cpp файлов.

%.i: %.cpp
    g++ -E -o $@ $?

Если у вас есть file.cpp, вы можете сгенерировать file.i, используя:

make file.i

Вы можете настроить аналогичное правило для генерации .i файлов из .c файлов.

%.i: %.c
    gcc -E -o $@ $?

Если файл .cpp или .c будет изменен .i файлов можно восстановить, запустив make.

...