我需要一些简单的例子来开始使用clang。 我下载了llvm和clang并构建了:
mkdir llvm-build
cd llvm-build
../llvm/configure
make
我尝试从clang示例构建PrintFunctionNames但收到错误消息:
../../../../ Makefile.common:61:../../../../ Makefile.config:没有这样的文件或目录 ../../../../Makefile.common:69:/Makefile.rules:没有这样的文件或目录 make: * 没有规则来制作目标`/Makefile.rules'。停止。
自述文件说只需要make。 那么如何构建这个插件呢?
答案 0 :(得分:9)
进入llvm-build / tools / clang,然后运行“make BUILD_EXAMPLES = 1”。
答案 1 :(得分:2)
最确定的是,您将获得LLVM中继线检查,并在工具路径下检查Clang中继线[通过http://clang.llvm.org/get_started.html建立Clang解释。
Makefile构建指南:http://llvm.org/docs/MakefileGuide.html
在OS X上,构建设置有点不同,但在Debian Linux上,我每天都在构建它,如下所示:
../ trunk / configure --enable-target = x86_64,arm,cpp,cbe --with-built-clang --enable-pic --enable-polly --enable-shared --with-cxx- include-arch = x86_64 --enable-optimized --with-optimize-option = -Os --enable-assertions --disable-bootstrap --disable-multilib --enable-jit --enable-threads --no-create --no递归
然后在我的Pentium D 945系统的命令上应用make -j(n + 1个内核):
使[构建 autotools make -j(n + 1)并不总是干净地构建llvm,就像对 cmake 一样。因此,如果您想运行所有核心,请期望多次运行make -j(n + 1)以获得干净的构建。
不访问多个核心的标准格式:
make BUILD_EXAMPLES ='1'//阅读下面的注释
总是会产生干净的构建,如果它没有向LLVM报告错误。
注意:如果你处于顶层,你可以按照以下步骤更新llvm trunk,project-test trunk和clang trunk:
制作主干
然后再次运行make,因为提前配置了BUILD_EXAMPLES = 1。
make BUILD_EXAMPLES ='1'
注意:Autotools允许用户配置BUILD_EXAMPLES ='1',但如果在命令行上没有显式包含BUILD_EXAMPLES ='1',则在运行make时将忽略该标志。
在LLVM树的顶部,您构建了反对运行make BUILD_EXAMPLES ='1'将构建LLVM特定示例,然后进入build / tools / clang路径然后必须运行make BUILD_EXAMPLES ='1'再次构建Clang的例子。
因此:
LLVM Top:
对于LLVM示例,使BUILD_EXAMPLES ='1'// cd tools / clang 为了Clang特定的例子,使BUILD_EXAMPLES ='1'//
验证在/ usr / local / bin下安装LLVM和/ usr / local / lib / for Clang的示例。
如果您使用CMAKE,二进制示例的默认位置位于/ usr / local / examples
下答案 2 :(得分:1)
我按照http://clang.llvm.org/get_started.html的说明操作,但有两个例外:
我发布了cmake:
cd build
cmake -DLLVM_BUILD_EXAMPLES = 1 -DCLANG_BUILD_EXAMPLES = 1 ..
之后(并编译当然(make -j8))我可以在build dir中找到这些例子:
find -iname '*printfunctionname*'
./lib/PrintFunctionNames.so
...
答案 3 :(得分:0)
昨天我尝试做类似的事情:get a list of methods in a class using clang并成功了。也许我的帖子也有帮助。我最好的帮助是AST Matchers tutorial。