/ / jak używać clang ++ zamiast g ++ w Bazelu - bazel

jak używać clang ++ zamiast g ++ w Bazel - bazel

Chcę użyć clang ++ zamiast g ++ do kompilowania moich plików c ++, podczas gdy g ++ jest domyślnym kompilatorem systemu.

próbowałem sudo update-alternatives --install c++ c++ /home/guo/bin/clang++ 100 i nastaw CC środowisko. Ale nie działają. Bazel nadal używa g ++ jako kompilatora.


/> Po godzinie Bazel używa clang ++. Ale wystąpił błąd.

ERROR: /home/guo/utils/lib/BUILD:2:1: C++ compilation of rule "//utils/lib:get_pdf" failed: linux-sandbox failed: error executing command /home/guo/.cache/bazel/_bazel_guo/d2d93a82f24e8dc5485ac1b29928428e/execroot/_bin/linux-sandbox ... (remaining 41 argument(s) skipped).
src/main/tools/linux-sandbox-pid1.cc:592: "execvp(/home/guo/lib/clang, 0x23abde0)": Permission denied
Target //utils/lib:get_pdf failed to buildenter code here
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 0.159s, Critical Path: 0.06s

Ps: /home/guo/lib/clang to katalog, a nie plik binarny na moim komputerze. Myślę, że tutaj powinno być /home/guo/bin/clang++ ale nie wiem, jak to zrobić Bazel znać to.


/> Ps: Wygląda na to, że musisz zrestartować Bazel serwer po zmianie środowiska.

Odpowiedzi:

3 dla odpowiedzi № 1

Tak więc używa się właściwego sposobu konfigurowania łańcucha narzędzi C ++ dla Bazel CROSSTOOL. Bo tak jest nietrywialne przedsięwzięcie, Bazel próbuje automatycznie wykryć twój toolchain używając cc_configure.bzl scenariusz. Ten skrypt sprawdza niektóre zmienne środowiskowe i jeśli jest obecny, użyje wartości z tego miejsca. Aby skonfigurować gcc, możesz ustawić CC Zmienna i Bazel go wezmą (w funkcji _find_cc).

Ponieważ te wyniki są buforowane, uruchom bazel clean --expunge aby opróżnić pamięć podręczną i ponownie uruchomić autokonfigurację następnym razem.