Есть ли способ хранить флаги времени компиляции clang в выходной двоичный файл?

Есть ли способ сохранить флаги времени компиляции в двоичном файле при использовании clang?

Например, после запуска:

clang -O3 -c main.c

Результирующийmain.o файл должен где-то содержать-O3.

GCC имеет-frecord-gcc-switches но я не могу найти эквивалент для лязга.

 ecatmur02 авг. 2016 г., 13:53
Примечание: запрос функции Clang:llvm.org/bugs/show_bug.cgi?id=16291

Ответы на вопрос(1)

ремя не поддерживается, как описано в ошибкеhttps://llvm.org/bugs/show_bug.cgi?id=16291 .

Однако, как обходной путь, пока эта функция недоступна, я бы предложил, чтобы ваш процесс сборки определял макрос внутри программы с помощью clang's.-D аргумент. Например, предположим, что вы вызываете это из скрипта bash (настройте на любой используемый инструмент сборки)

CLANG_ARGS='-O3 -c main.c'
clang $CLANG_ARGS -D CLANG_ARGS="\"${CLANG_ARGS}\""

Затем в ваших программах на C или C ++ вы добавляете что-то вроде:

const char clangArgs[] = CLANG_ARGS;

Который вы можете затем извлечь с помощью отладчика или чего-то подобного или даже можете добавить некоторый код, чтобы распечатать его из вашей программы при вызове с-V или же--version переключатель.

Ваш ответ на вопрос