2010-07-21 101 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過程中創建的一些文件的權限設置了非常奇怪的權限。