【发布时间】:2010-07-21 09:42:16
【问题描述】:
在尝试安装构建服务器时,我遇到了一个有趣的问题,所有 cygwin 命令都可以从 DOS 框运行,但有时从 make 调用时不起作用。更奇怪的是,有些 make 目标,比如 'clean',work 而其他的,比如 'all',却没有。
这是一个代表性的 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)/*.*
请注意,在“全部”中,一个 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
即。完整路径有效,无路径无效。然后让我头晕目眩的是make中的“干净”目标,没有路径可以正常工作。不仅仅是cygwin命令,make也找不到编译器。似乎很清楚,尽管环境变量 PATH 已设置,但路径已在某处被冲洗,但仅在 make 中 - 这在 DOS 提示符下工作正常。
C:\>cygpath --unix c:\programme\cygwin\bin\rm
/usr/bin/rm
这台机器在 VMWare ESX 上的虚拟机中运行 Windows Server 2003 德语,昨天完成了 cygwin 安装,安装在 c:\programme\cygwin\ 中,其他一切都是干净的 vanilla Windows 安装。
有什么想法吗?提前致谢。
【问题讨论】:
-
“环境变量PATH已设置,但只在make中”是什么意思?
-
啊,抱歉,这不是很清楚 - PATH 变量是在 Windows 中以正常方式设置的。使用“make”时,似乎 PATH 未使用或不正确,即。 make 找不到路径上的 exe 文件。我在生成文件中添加了一个@echo $(PATH) 并得到:/cygdrive/c/Programme/Source Insight 3:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32 /Wbem:c:/Programme/TASKING/c563 v3.6r1/bin/:/usr/bin:/cygdrive/c/Programme/IDM Computer Solutions/UltraEdit/
-
抱歉,不知道有什么问题。