/ / 'llvm / IR / Constants.h' Datei nicht gefunden - c ++, llvm, llvm-clang

'llvm / IR / Constants.h' Datei nicht gefunden - c ++, llvm, llvm-clang

Ich versuche, einen Compiler zu erstellen und verwende llvm (C ++ - API) für die Zwischen- und Endcodefertigung. Allerdings, wenn Sie versuchen, den Befehl auszuführen:

llvm.o: llvm.cpp llvm.h
$(CPP) llvm.cpp -c -$(FLAGS)

In meiner make-Datei erhalte ich den Fehler:

In file included from llvm.cpp:6:
./opt.h:5:10: fatal error: "llvm/IR/Constants.h" file not found
#include <llvm/IR/Constants.h>
^~~~~~~~~~~~~~~~~~~~~
1 error generated.

Ich benutze Mac OS (Sierra Version 10.12.6) und ich habe llvm mit brew installiert (brew install llvm) so kann ich nicht verstehen, wie die Bibliotheksdatei nicht gefunden werden kann.

Auch mein Clang-Version:

bash-3.2$ clang --version
Apple LLVM version 9.0.0 (clang-900.0.37)
Target: x86_64-apple-darwin16.7.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

Ich habe viel gegoogelt, konnte aber nichts finden, was mein Problem löst, jede Hilfe wird geschätzt !!!.

Antworten:

2 für die Antwort № 1

Was sind Ihre FLAGS? Sie müssen Linker- und Header-Suchflags angeben.

Folgendes könnte Ihnen helfen:

llvm.o: llvm.cpp llvm.h
$(CPP) llvm.cpp -c -$(FLAGS) `llvm-config --cxxflags --ldflags --libs`

Notiere dass der --libs Ohne Parameter wird Ihre Binärdatei mit allen LLVM-Bibliotheken verknüpft.

UPD:

Auf MacOS werden llvm-config und andere Tools nicht hinzugefügt $PATH, weil es den System-Compiler außer Kraft setzen würde und Ihr System irgendwie beschädigen kann. Sie müssen den vollständigen Pfad verwenden, z. /usr/local/Cellar/llvm/3.9.0/bin/llvm-config. Stellen Sie sicher, dass Sie hier die richtige Version verwenden.

Stellen Sie außerdem sicher, dass Ihre FLAGS tatsächlich ausgewertet und nicht in den Befehl eingefügt werden:

FLAGS=$(shell llvm-config --cxxflags --ldflags --libs)