1

I would like to change my clang tool's include path according to input. When I run the below code on a sample test file I have a compilation error "header not found".

#include "clang/Frontend/FrontendActions.h"
#include "clang/Tooling/CommonOptionsParser.h"
#include "clang/Tooling/Tooling.h"
// Declares llvm::cl::extrahelp.
#include "llvm/Support/CommandLine.h"


using namespace clang::tooling;
using namespace llvm;

static llvm::cl::OptionCategory MyToolCategory("my-tool options");


int main(int argc , char** argv) {
    int argc_ = 5;
    const char **argv_ = new const char*[5];
    std::vector<std::string> Sources;
    Sources.push_back("path\\to\\Testfile.cpp");
    argv_[0] = argv[0];
    argv_[1] = &Sources[0][0];
    argv_[2] = "--";
    argv_[3] = "c++";
    argv_[4] = "-I\"path\\to\\external\\lib\\directory\"";
    CommonOptionsParser OptionsParser(argc_, argv_, MyToolCategory);
    // run the Clang Tool, creating a new FrontendAction (explained below)


    ClangTool Tool(OptionsParser.getCompilations(), Sources);
    int result = Tool.run(newFrontendActionFactory<clang::SyntaxOnlyAction>().get());

    system("pause");
    return result;
}
Cœur
  • 37,241
  • 25
  • 195
  • 267
ogzu rasa
  • 31
  • 5

1 Answers1

0

you can use -extra-arg to pass includepath to compiler argv_[2]="-extra-arg=-Ipath/to/external/lib/directory"

mugiseyebrows
  • 4,138
  • 1
  • 14
  • 15