Ich verwende den Firmenmodus für die Vervollständigung in C ++ - Code. Um dem Clang-Backend des Unternehmens mitzuteilen, wo sich die Include-Dateien für das aktuelle Projekt befinden, muss ich die folgende .dir-locals.el
Datei verwenden
((c++-mode (eval setq company-clang-arguments (append
company-clang-arguments
'("-I/full/path/to/project/root/include"))))
Ich muss immer den vollständigen Pfad angeben. Gibt es eine Möglichkeit, full/path/to/project/root
die .dir-locals.el
Datei durch eine Variable zu ersetzen , in der der Pfad gespeichert ist?
Ich habe es versucht
(c++-mode (eval setq company-clang-arguments (append
company-clang-arguments
(list concat "-I" default-directory "src")))))
Da dies default-directory
jedoch in der Datei ausgewertet wird, die ich öffne, kehrt es nicht zum Pfad des Projektstamms zurück, sondern zu einem anderen Pfad innerhalb des Projekts.
(locate-dominating-file default-directory ".dir-locals.el")
kann auch eine Option sein, vielleicht sogar in eine Funktion abgekürzt.projectile-project-root
tut. Danke für den Tipp..dir-locals.el
, nicht das, von dem das Formular stammt.dir-locals-file
Variablen anstelle von ".dir-Locations.el" Zeichenfolge besser geeignet ist