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