gcc с параметрами “-S - сохранять-временные-файлы” помещает промежуточные файлы в текущий каталог

Параметры -S -save-temps хорошо работайте, пока я не использую их на файлах с тем же именем.

Думайте о следующей ситуации: у Меня есть проект с основным каталогом и подкаталог с именем subDir и в обоих из каталогов файлы, помещенные с именем file.c. Если я теперь звоню gcc -S -save-temps file.cpp subDir/file.c только один промежуточный файл с именем file.i будет сгенерирован.

Это - ожидаемое поведение как файл человека gcc говорит мне, что промежуточные файлы будут всегда помещаться в текущий путь при использовании -save-temps.

Моя проблема, что я работаю над проектами, которые я не знаю заранее. Это могло очень хорошо быть, что кто-то создал вышеупомянутый пример в его Make-файлах. В этом случае я застрял бы, потому что мне нужны оба промежуточных файла.

Несколько слов к системе я создаю (для лучшего понимания): Мое использование инструмента make --just-print для сбора вызовов make-файл проекта вызывает. Я сканирую эти призывы к вызовам компилятора и добавляю -save-temps и -S опции. Цель состоит в том, чтобы получить каждый предварительно обработанный файл, который используется в процессе компиляции проекта.

У Вас есть какие-либо идеи, как я в состоянии получить каждый предварительно обработанный файл, даже если вышеупомянутый пример должен появиться?

13
задан Customizer 29 January 2010 в 21:54
поделиться

1 ответ

Это отличная разметка. Хорошее семантическое использование всех элементов. И красивое использование комментариев. (Да, я видел, что на это уже ответили и проголосовали правильно, но я новый и ищу некоторые точки, если бы я был здесь первым, wammo!)

-121--1010843-

Им не требуется для явной записи реализует Set < E > . Они сделали это для удобочитаемости.

-121--1452306-

Нет проблем с file.cpp/file.c в разных каталогах. GCC создает * .ii и * .i в зависимости от расширения файлов.

Если они оба имеют c | | cpp, можно использовать -E и получить только один * .i , где можно найти pragma # 1 «< FILE _ PATH >» и извлечь его с помощью сценария.

3
ответ дан 2 December 2019 в 00:58
поделиться