Windows下cscope -q選項出錯的解決

 

之前曾有網友留言,在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

相關文章
相關標籤/搜索