Poszukuję LLVM (lub klang) odpowiednika flagi -D w gcc, która umożliwia definicję makra w linii poleceń.Ekwiwalent LLVM definicji makra gcc -D w linii poleceń
Wszelkie wskaźniki byłyby świetne.
Poszukuję LLVM (lub klang) odpowiednika flagi -D w gcc, która umożliwia definicję makra w linii poleceń.Ekwiwalent LLVM definicji makra gcc -D w linii poleceń
Wszelkie wskaźniki byłyby świetne.
Od clang --cc1 --help
:
...
-D <macro> Predefine the specified macro
...
Jako zasada, zakładamy, że Clang emuluje GCC, chyba że zostanie udowodnione inaczej!
Domyślna clang
inwokacja jest kierowca gcc-jak kompilator, wspierając takie same opcje jak gcc, w tym -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;
}
Więc jeśli chcesz zastąpić gcc, po prostu powołać clang
. clang -cc1
wywołuje komponent front-clang, a nie ogólny sterownik kompilatora.
Już to robię. Ponieważ używam makefile, uruchamiam polecenie 'make cc =/path/to/clang'. Mam nadzieję, że to prawda. – shrm
@mishr: ogólnie po prostu zastąpienie gcc clangiem powinno działać, ale istnieją zastrzeżenia dotyczące konkretnych przypadków i sekwencji budowania. czy otrzymujesz jakieś szczególne błędy? ponieważ -D * działa *. –
Tak -D działa, dlatego zaakceptowałem powyższą odpowiedź. Kompilacja BTW idzie dobrze, połączenie nie jest wykonywane, a więc nie jest generowany plik wykonywalny. – shrm
Którą wersję języka używasz? Mój jest 3.3 i nie widzę tej opcji, kiedy robię 'clang -cc1 --help'. – shrm
@mishr: Ach, wydaje mi się, że mam 3.1, gdzie jestem teraz. Jest mało prawdopodobne, że zmienili/usunęli taką podstawową opcję, chociaż ... –
Zgadzam się na część, która jest nieprawdopodobna, ale opcja nie jest wyświetlana w pomocy. – shrm