Подтвердить что ты не робот

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

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

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

clang -O3 -c main.c

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

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

4b9b3361

Ответ 1

Как уже упоминалось в комментариях ecatmur. Эта функция в настоящее время не поддерживается, как указано в ошибке https://llvm.org/bugs/show_bug.cgi?id=16291.

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

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

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

const char clangArgs[] = CLANG_ARGS;

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