我認爲問題在於opt
已經解析了它自己的參數,並且已經將位碼文件作爲位置參數進行處理,因此具有多個位置參數會產生不明確性。
該文檔解釋了API,就像它在獨立應用程序中使用一樣。因此,舉例來說,如果你做這樣的事情:
int main(int argc, char *argv[]) {
cl::list<std::string> Files(cl::Positional, cl::OneOrMore);
cl::list<std::string> Files2(cl::Positional, cl::OneOrMore);
cl::list<std::string> Libraries("l", cl::ZeroOrMore);
cl::ParseCommandLineOptions(argc, argv);
for(auto &e : Libraries) outs() << e << "\n";
outs() << "....\n";
for(auto &e : Files) outs() << e << "\n";
outs() << "....\n";
for(auto &e : Files2) outs() << e << "\n";
outs() << "....\n";
}
你得到的東西是這樣的:
$ foo -l one two three four five six
one
....
two
three
four
five
....
six
....
現在,如果你身邊兩個位置參數的定義交換,甚至可以改變的cl::OneOrMore
Files2
選項cl::ZeroOrMore
,你會得到一個錯誤
$ option: error - option can never match, because another positional argument will match an unbounded number of values, and this option does not require a value!
個人而言,當我使用opt
我放棄了positiontal ARG ument選項,做這樣的事情:
cl::list<std::string> Lists("lists", cl::desc("Specify names"), cl::OneOrMore);
,讓我做到這一點:
opt -load ./fooPass.so -foo -o out.bc -lists one ./in.bc -lists two
並遍歷std::string
列表以同樣的方式獲得:
one
two
S標誌不是傳遞的選項,它是一個選項,使其自己使其輸出LLVM程序集。 – Shuzheng
我該如何做第一件作品(定位)? – Shuzheng
你能解釋'-mapiWM'選項嗎? – hailinzeng