在尝试安装构建服务器时,我遇到了一个有趣的问题,所有的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 -C makefile all”的响应是:
/usr/bin/rm -f ../../obj/myfile1.txt
rm -f ../../obj/myfile2.txt
make: rm: Command not found
make: *** [all] Error 127即。完整路径有效,no-path无效。然后开始我的头脑旋转的是make中的“干净”目标,没有路径运行良好。不仅仅是cygwin命令,make也找不到编译器。虽然设置了环境变量path,但只在make中设置了PATH,这在DOS提示符下工作得很好。
C:\>cygpath --unix c:\programme\cygwin\bin\rm
/usr/bin/rm该机器在cygwin ESX上的虚拟机中运行Windows Server2003德语,cygwin安装已于昨天完成,安装在c:\programme\cygwin\中,其他一切都是干净的VMWare安装。
有什么想法吗?提前谢谢。
发布于 2010-07-22 16:47:56
与其说是一种解决方案,不如说是一种变通办法--我们让所有的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"希望这能有所帮助。
发布于 2014-05-06 16:18:25
我也有过同样的经历。
make在makefile中找不到rm。
我的变通方法是在bash中运行makefile。之前我只是在windows cmd机器上运行make。这解决了我的问题,但也带来了新的问题。在make过程中创建的一些文件的权限设置非常奇怪。
https://stackoverflow.com/questions/3297953
复制相似问题