Cygwin make找不到cygwin命令

时间:2010-07-21 09:42:16

标签: path makefile cygwin

在尝试安装构建服务器时,我遇到了一个有趣的问题,即所有cygwin命令都可以从DOS框运行,但有时在从make调用时不起作用。更奇怪的是一些制作目标,如“干净”,工作和其他,如“全部”,不要。

这是一个代表性的makefile摘录。引用已经隐藏了格式,但标签是应该的位置,相信我:

 .PHONY: all 
 all: update_autoconstants
    /usr/bin/rm -f $(OBJ_DIR)/myfile1.txt   
    rm -f  $(OBJ_DIR)/myfile2.txt   

 .PHONY: clean 
 clean:     
    rm -f $(OBJ_DIR)/*.*

请注意,在'all'中,一个rm调用具有完整路径,而一个没有路径。另请注意,clean的rm调用没有路径。

对'make -Cmafile all'的响应是:

/usr/bin/rm -f ../../obj/myfile1.txt 
rm -f ../../obj/myfile2.txt 
make: rm: Command not found 
make: *** [all] Error 127

即。完整路径有效,无路径无效。然后开始我的头部旋转是make中的'干净'目标,没有路径工作正常。它不仅仅是cygwin命令,make也找不到编译器。虽然设置了环境变量PATH,但是只有在make中才能显示某个路径被清除的地方 - 这在DOS提示符下运行正常。

C:\>cygpath --unix c:\programme\cygwin\bin\rm  
/usr/bin/rm

该机器在VMWare ESX上的虚拟机中运行Windows Server 2003德语,昨天完成了cygwin安装,安装在c:\ program \ cygwin \中,其他一切都是干净的vanilla Windows安装。

有什么想法吗?提前谢谢。

2 个答案:

答案 0 :(得分:1)

作为一种解决方法并不是真正的解决方案 - 我们使所有的makefile都使用了所需的exe文件的绝对路径,这在任何情况下都比搜索路径和获取你找到的内容更好。

为了节省某些人,可以最好地调用cygwin的bin目录中的一些Googling命令:

CYGWIN_EXE_PATH = /usr/bin
RM        = $(CYGWIN_EXE_PATH)/rm.exe
.PHONY: clean
clean:
    $(RM) -f $(OBJ_DIR)/*.*

程序文件目录中的类似文件如下:

COMPILER_DIR = "$(PROGRAMFILES)/TASKING/c563 v3.6r1"

希望有所帮助。

答案 1 :(得分:0)

我有完全相同的事情。

没有在make文件中找到make。

我的解决方法是从bash中运行makefile。以前我只是从windows cmd框运行make。这为我解决了这个问题,但却产生了新的问题。在make期间创建的某些文件的权限设置了非常奇怪的权限。