Параметры -S -save-temps
работают нормально, если я не использую их для файлов с одинаковыми именами.
Подумайте о следующей ситуации: у меня есть проект с главным каталогом и подкаталогом с именем subDir
, и в обоих каталогах находятся файлы с именем file.c
. Если я сейчас позвоню gcc -S -save-temps file.cpp subDir/file.c
, то будет сгенерирован только один промежуточный файл с именем file.i
.
Это ожидаемое поведение, поскольку man-файл gcc
говорит мне, что промежуточные файлы всегда будут помещаться в текущий путь при использовании -save-temps
.
Моя проблема в том, что я работаю над проектами, о которых я не знаю заранее. Вполне возможно, что кто-то создал вышеупомянутый пример в своих файлах Makefile. В этом случае я бы застрял, потому что мне нужны оба промежуточных файла.
Несколько слов о системе, которую я создаю (для лучшего понимания): мой инструмент использует make --just-print
для сбора вызовов, вызывается файл проекта проекта. Я сканирую эти вызовы на наличие вызовов компилятора и добавляю опции -save-temps
и -S
. Цель состоит в том, чтобы получить каждый предварительно обработанный файл, который используется в процессе компиляции проекта.
У вас есть идеи, как я могу получить каждый предварительно обработанный файл, даже если должен появиться вышеупомянутый пример?