2017-04-11 7 views
1

저는 맞춤 LLVM 분석 단계를 작성 중이며 패스의 do_finalization 메소드에서 간단한 CSV 파일을 출력하려고합니다. Clang/LLVM에 전달 된 원하는 출력 파일 이름을 기반으로 CSV 파일의 이름을 지정하고 싶지만이 값을 찾을 수 없습니다. 예를 들어Clang/LLVM에서 "-o"("- output") 인수를 찾을 수있는 곳은?

, 내가 컴파일하는 경우 :

clang -o test test.c

I 출력 test.csv (또는 더 일반적으로 <output filename>.csv)에 싶습니다. 값 test은 어디에서 찾을 수 있습니까?

답변

0

그것은 lib에 정의되어/TableGen /하여 Main.cpp

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

당신은 당신의 분석 패스의 명령 옵션을 정의하고 출력 파일의 이름과 값을 취할 수 있습니다.

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

    return option->getValue(); 
} 

이 표준 출력이 경우 명령 줄이나 "-"에 지정 -o의 값을 반환합니다 :

0

당신은 cl::Option* 포인터를 잡고 옵션이 함께 선언 된 유형으로 다운 캐스트 cl::getRegisteredOptions을 사용할 수 있습니다 사용.

유형이 안전하지 않은 것에 대한 일반적인 예방 조치가 적용됩니다.

+0

오늘 나중에 테스트하겠습니다. 작동한다면 받아 들일거야. 고맙습니다! – tonysdg