在Windows上,Eclipse CDT clean会失败:尝试运行rm -rf

我在Windows 7上使用了与CDT的Juno。当我尝试使用内部构build器或使用MinGW提供的工具清理项目时,Eclipse运行* X命令rm -rf,并且清理操作失败。

从控制台使用外部生成器(mingw32-make)进行日志logging:

18:08:07 **** Clean-only build of configuration Debug for project threads_example **** mingw32-make clean rm -rf ./main.o ./main.d threads_example process_begin: CreateProcess(NULL, rm -rf ./main.o ./main.d threads_example, ...) failed. make (e=2): The system cannot find the file specified. mingw32-make: [clean] Error 2 (ignored) ' ' 18:08:07 Build Finished (took 137ms) 

使用内部构build器logging日志:

 10:39:35 **** Clean-only build of configuration Debug for project threads_example **** rm -rf threads_example main.o main.d Cannot run program "rm": Launching failed Error: Program "rm" not found in PATH PATH=[C:\CS_powerpc\bin;C:/Program Files (x86)/Java/jre7/bin/client;C:/Program Files (x86)/Java /jre7/bin;C:/Program Files (x86)/Java/jre7/lib/i386;C:\Program Files\Common Files\Microsoft Shared\Microsoft Online Services;C:\Program Files (x86)\Common Files\Microsoft Shared\Microsoft Online Services;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\Common Files\Roxio Shared\OEM\DLLShared\;C:\Program Files (x86)\Common Files\Roxio Shared\OEM\DLLShared\;C:\Program Files (x86)\Common Files\Roxio Shared\OEM\12.0\DLLShared\;C:\Program Files (x86)\Roxio\OEM\AudioCore\;C:\siriusSDK\CS_i686\bin;c:\siriusSDK\CS_powerpc\bin;C:\siriusSDK\MinGW\msys\1.0\bin;C:\MinGW\bin;;C:\work\eclipse] 10:39:35 Build Finished (took 41ms) 10:39:35 **** Clean-only build of configuration Debug for project threads_example **** 10:39:35 Build Finished (took 46ms) 

原来在.cproject文件中有一个属性xml控制着clean命令。

查找配置标签,并将cleanCommand属性设置为你想要的。 我已经将其设置为rm -rf并使用gnuutils来支持Windows上的命令。
你可以把命令改成任何东西。

 <configuration artifactExtension="so" artifactName="MyProject" ... cleanCommand="rm -rf" ...> 

最好的解决办法是安装GnuUtils / coreutils并将安装的目录(C:\ ProgramFile ??? \ GnuWin32 \ bin)添加到您的Windows路径并重新启动eclipse。

Eclipse现在应该执行rm-rf …

如果它仍然没有…重新启动Windows并再次检查您的路径,看看它是否\ GnuWin32 \ bin …然后启动Eclipse …

我已经找到了一个解决方法,这对我很好:如果你在托管的make makefile中查找,你可以找到一行“RM:= …”在那行后面有一行“-include ../makefile.defs “这在我的情况不存在。

如果你创建这个文件,你可以重新定义“RM:= …”宏到任何你想要的。

例如:RM:= del

在这种情况下,自动构建过程将使用您的定义来删除文件和文件夹,而不是预定义的eclipse定义。

我有这个错误,因为我有一个错误在MSYS_HOME 项目 – >属性 – > C / C ++构建 – >环境