Использование clang в качестве библиотеки в проекте C ++ - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь использовать clang в качестве библиотеки, но я не уверен, как связать файлы в Makefile.

Испытание кода ASTVisitor из: https://clang.llvm.org/docs/RAVFrontendAction.html

Вот мой Makefile для справки:

CC=g++
Includes= /usr/lib/llvm-6.0/include/
Libs= /usr/lib/llvm-6.0/lib/
CLANGLIBS=-lclangTooling -lclangFrontendTool -lclangFrontend -lclangDriver -lclangSerialization -lclangCodeGen -lclangParse -lclangSema -lclangStaticAnalyzerFrontend -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangAnalysis -lclangARCMigrate -lclangRewrite -lclangRewriteFrontend -lclangEdit -lclangAST -lclangLex -lclangBasic -lclang

run:
    LD_PRELOAD=../../llvm-project/build/lib/libclang.so ./clang_parser.out

all: clang_parser.cpp
    $(CC) -I$(Includes) -L$(Libs) clang_parser.cpp -o a.out $(CLANGLIBS)
clean:
    rm clang_parser.out

Я установил Clang как библиотека, т.е. сделано sudo apt-get install libclang-dev

Я получаю следующую ошибку:

clang_parser.cpp:13:10: fatal error: clang/Frontend/FrontendActions.h: No such file or directory
#include <clang/Frontend/FrontendActions.h>
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
Makefile:10: recipe for target 'all' failed
make: *** [all] Error 1

Любые рекомендации по использованию установленных пакетов apt в проектах C / C ++ также приветствуются.

1 Ответ

0 голосов
/ 28 января 2020

Установлено несколько пакетов только для того, чтобы убедиться:

sudo apt-get install libclang-dev llvm clang clang-tools

Это команда компиляции для справки (включает все библиотеки, которые могут использоваться):

clang++ `llvm-config --cxxflags --ldflags` clang_parser.cpp $(CLANGLIBS2) `llvm-config --libs --system-libs` -g -o tool

где

CLANGLIBS2=-lclangTooling -lclangFrontendTool -lclangFrontend -lclangDriver -lclangSerialization -lclangCodeGen -lclangParse -lclangSema -lclangStaticAnalyzerFrontend -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangAnalysis -lclangARCMigrate -lclangRewrite -lclangRewriteFrontend -lclangEdit -lclangAST -lclangASTMatchers -lclangLex -lclangBasic -lclang

Установите все .so, .a файлы в /usr/lib/llvm-6.0/lib как LD_LIBRARY_PATH, выполнив:

export LD_LIBRARY_PATH=/usr/lib/llvm-6.0/lib
ldconfig
...