2010-07-21 104 views
1

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

这里是一个代表性的生成文件提取。该报价已经在该区的格式,但标签是他们应该的,相信我:

.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呼叫没有路径。

对此的响应 '让-C makefile文件全部':

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

即。完整的路径工作,没有路径不工作。然后开始我的头旋转是'干净'的目标,使没有路径工作正常。它不只是cygwin命令,也不能找到编译器。似乎很清楚,路径已经被占用,尽管设置了环境变量PATH,但只在make中 - 这在DOS提示符下工作正常。

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

机器运行Windows Server 2003的德语在VMware ESX的虚拟机,安装的cygwin昨天完成,安装在c:\程序\ Cygwin的\和其他一切是干净的香草的Windows安装。

任何想法?提前致谢。

+0

你是什么意思“设置环境变量PATH,但只在make中”? – ak2 2010-07-21 11:10:50

+0

啊,对不起,这不是很清楚 - PATH变量是以正常方式在Windows中设置的。当使用'make'时,看起来PATH没有被使用或不正确,即。 make找不到路径上的exe文件。我添加了一个@echo $(PATH)到makefile,得到: /cygdrive/c/Program/Source Insight 3:/ cygdrive/c/WINDOWS/system32:/ cygdrive/c/WINDOWS:/ cygdrive/c/WINDOWS/System32/Wbem:c:/ Program/TASKING/c563 v3.6r1/bin /:/ usr/bin:/ cygdrive/c/Program/IDM计算机解决方案/ UltraEdit/ – 0xDEADBEEF 2010-07-21 12:24:46

+0

对不起, – ak2 2010-07-22 11:36:38

回答

1

解决方案与解决方法不太相同 - 我们让所有的makefile都使用绝对路径来访问他们需要的exe文件,无论如何,它比搜索路径和获取所找到的更好。

或许节约一些谷歌搜索在Cygwin的bin目录下的命令可以最好地称为:在程序文件目录

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" 

希望有所帮助。

+0

因为你有没有找到更好的解决方案? – nlucaroni 2013-02-07 21:39:58

0

我有完全相同的东西。

rm在makefile中找不到make。

我的解决方法是从bash中运行makefile。以前,我只是从Windows cmd框中运行make。这为我解决了这个问题,但创造了新的问题。在make过程中创建的一些文件的权限设置了非常奇怪的权限。