LLVM-эквивалент определения макроса gcc -D в командной строке

Я ищу эквивалент gcc -D LLVM (или clang), который позволяет определять макросы в командной строке.

Любые указатели будут замечательными.

Ответ 1

От clang --cc1 --help:

...
-D <macro>              Predefine the specified macro
...

Как правило, предположим, что Clang эмулирует GCC, если не доказано обратное!

Ответ 2

По умолчанию вызов clang представляет собой gcc-подобный драйвер компилятора, поддерживающий те же параметры, что и gcc, включая -D:

: ~$ cat test/z.c
int foo() {
  return FOOBAR;
}
: ~$ clang -DFOOBAR -E -c test/z.c
# 1 "test/z.c"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 154 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "test/z.c" 2
int foo() {
  return 1;
}

Итак, если вы хотите заменить gcc, просто вызовите clang. clang -cc1 вызывает компонент front-end clang, а не общий драйвер компилятора.