在尝试安装构建服务器时,我遇到了一个有趣的问题,即所有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安装。
有什么想法吗?提前谢谢。
答案 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期间创建的某些文件的权限设置了非常奇怪的权限。