'llvm/IR/Constants.h' 找不到文件

'llvm/IR/Constants.h' file not found

我正在尝试制作一个编译器,我正在使用 llvm (C++ api) 来生成中间代码和最终代码。虽然在尝试执行命令时:

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

在我的 make 文件中出现错误:

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.

我正在使用 Mac Os(Sierra 版本 10.12.6) 并且我已经使用 brew 安装了 llvm(brew install llvm ) 所以我不明白怎么找不到库文件。

还有我的 clang 版本:

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 

我在谷歌上搜索了很多,但找不到任何解决我问题的方法,感谢任何帮助!!!

你的旗帜是什么?您需要提供 linker 标志和 header 搜索标志。

以下内容可以帮到您:

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

请注意,不带任何参数的 --libs 将 link 您的二进制文件包含所有 LLVM 库。

UPD:

在 MacOS 上 llvm-config 和其他工具未添加到 $PATH,因为它会覆盖系统编译器并可能以某种方式破坏您的系统。您需要使用完整路径,例如/usr/local/Cellar/llvm/3.9.0/bin/llvm-config。请确保您在此处使用正确的版本。

此外,请确保您的 FLAGS 已实际评估,而不是按原样粘贴到命令中:

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