之前曾有網友留言,在windows下使用cscope時,使用-q選項出現以下提示:shell
D:\Temp> cscope -Rbkq Input file specified two times. cscope: cannot create inverted index; ignoring -q option cscope: removed files ncscope.in.out and ncscope.po.out
當時Easwy覺得是windows版本的cscope不支持-q選項。vim
不過網友Liang Feng昨天留言說:windows
Windows版本的cscope是支持-q選項的,出現以上錯誤是由於沒找到合適的sort命令。因此只要cscope進程的工做目錄下有GNU版本的sort就能夠了。注意是進程的工做目錄,不是可執行程序的目錄。具體緣由看一下cscope的代碼片斷。 build.c #ifdef WIN32 snprintf(sortcommand, sizeof(sortcommand), 「set LC_ALL=C && sort -T %s %s」, tmpdir, temp1); #else snprintf(sortcommand, sizeof(sortcommand), 「env LC_ALL=C sort -T %s %s」, tmpdir, temp1); #endif
因而從新作了一下試驗。在安裝了Cygwin後,在cygwin的shell界面中使用cscope,沒有出現上面的錯誤提示。但若是打開windows的命令行窗口cmd.exe,在裏面執行cscope,則會出現上面的錯誤。ui
在仔細比較了cygwin和cmd.exe的環境後發現,原來是Windows自帶的sort.exe搞的鬼。命令行
在cygwin的shell窗口中,PATH環境變量的設置會使其先找到GNU版的sort.exe,因此上述cscope命令執行能夠成功。但在cmd.exe窗口中,PATH環境變量會使其先找到windows自帶的sort.exe而不是GNU sort.exe,因此會出現上面的錯誤提示。blog
知道了問題的緣由,解決方法就很簡單了,咱們能夠寫一個批處理程序,在此程序中重設PATH環境變量,使cscope使用GNU版的sort.exe。示例程序以下:進程
D:\Temp> type cs.bat @echo off set path=c:\cygwin\bin; cscope -Rbkq
在這個批處理裏,首先把path環境變量指向c:\cygwin\bin;,個人cscope.exe和GNU版的sort.exe都在此目錄中。接下來現執行cscope命令,如今它使用的就是GNU版的sort.exe了。ci
在此感謝網友Liang Feng,謝謝他的提醒。rem