clang/llvmのC++APIを叩く時のコンパイルオプションの設定は意外と面倒である。
特にclangを使いたい時はllvm-configは役に立たないし、リンク順序などはかなり深くclangの開発に携わっていないと理解不能である。
最も簡単な調べ方はclangのmake時のコンパイルオプションを見る事である。
一度ビルドしたllvm/clangのRelese(またはDebug+Assertions等)フォルダからclangのbinファイルを消して、make -nすればよい。
clangのビルドは普通は
LLVM_BUILD_DIR/tools/clang/tools/driver/
にあるmakefileで行われる。
なので、このディレクトリでmake -nすればコンパイルコマンドが見られる。
私の環境では
-lclangFrontendTool -lclangFrontend -lclangDriver -lclangSerialization -lclangCodeGen -lclangParse -lclangSema -lclangRewriteFrontend -lclangRewrite -lclangStaticAnalyzerFrontend -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangARCMigrate -lclangAnalysis -lclangEdit -lclangAST -lclangLex -lclangBasic
-lLLVMOption -lLLVMObjCARCOpts -lLLVMLinker -lLLVMIRReader -lLLVMipo -lLLVMVectorize -lLLVMInstrumentation -lLLVMBitWriter -lLLVMAsmParser -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMScalarOpts -lLLVMProfileData -lLLVMInstCombine -lLLVMTransformUtils -lLLVMipa -lLLVMAnalysis -lLLVMTarget -lLLVMX86Desc -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMMC -lLLVMX86Utils -lLLVMCore -lLLVMSupport -lz -lpthread -ltinfo -lrt -ldl -lm
がリンク用のオプションであった。
これに llvm-config --cxxflagsのコマンドとリンクフォルダ指定オプション(-L/LLVM_CLANG_LIB_DIR/)を足せばうまくいく。