哪里可以找到Clang / LLVM中的“-o”(“ - output”)参数?

时间:2017-04-11 04:08:15

标签: llvm llvm-c++-api

我正在编写自定义LLVM分析传递,并希望在传递的do_finalization方法中输出一个简单的CSV文件。我想根据传递给Clang / LLVM的所需输出文件名来命名CSV文件,但是我找不到这个值。

例如,如果我使用:

进行编译

clang -o test test.c

我想输出test.csv(或更一般地<output filename>.csv)。我在哪里可以找到值test

2 个答案:

答案 0 :(得分:0)

它定义于 LIB / TableGen / Main.cpp的

static cl::opt<std::string>
OutputFilename("o", cl::desc("Output filename"), 
cl::value_desc("filename"),
               cl::init("-"));

您可以在分析过程中定义命令选项,并将该值作为输出文件名。

答案 1 :(得分:0)

您可以使用cl::getRegisteredOptions获取cl::Option*指针并将其向下转换为声明选项的类型:

std::string &OutputFilename () {
  auto *option = static_cast<llvm::cl::opt<std::string>*>(
    llvm::cl::getRegisteredOptions().lookup("o"));

  return option->getValue();
}

如果使用标准输出,这将返回在命令行中指定的-o的值或"-"

关于类型不安全的常用预防措施适用。