2017-01-04 55 views
-1

因此,問題的核心是我想在Linux和Windows下使用我的Makefile。 當我使用普通的CFILES := $(shell find $(SDIR) -name '*.cpp')來查找我的.cpp文件時,Windows下的shell轉義會調用一個忽略MSYS64/bin是在PATH中查找程序的第一個目錄並使用Windows內部查找命令的環境,與unix find程序有很大不同。Makefile找到Windows中的所有* .cpp和* .h文件中斷

所以我需要或者

一)找到一種方法,在Windows下廠名外殼逃逸確實使用「unixary」發現在我的路上發現

B)找到一種方法來找到所有文件沒有外殼逃生...

+0

嘗試'CFILES:= $(通配符$(SDIR)/ * CPP)'。但是這不會遞歸到子目錄中。 –

+0

不幸的是,這是我需要的東西,因爲項目不可管理其他 – salbeira

+0

您可以將文件添加到當前目錄或路徑上的另一個目錄嗎?你可以在'myfind.bat'和'myfind'前面調用'MSYS64 \ bin \ find.exe',後者只需調用'find'。 –

回答

0

如果你想要目錄以及嘗試下面並刪除notdir函數。

YOUR_DIRECTORY =你\目錄\凡\到\查找\ FILES

YOUR_DIRECTORY_FILES = $(notdir $(殼DIR/AD/B/S $(YOUR_DIRECTORY)*。CPP))

要驗證

$ {信息文件$(YOUR_DIRECTORY_FILES)}

+0

聽起來很有希望,但由於某些原因,dir的參數被解釋爲目錄,而在終端輸入命令時,我自己產生正確的結果 – salbeira

+0

只驗證它指向的shell是否爲sh.exe(使用$ {info $(SHELL) ),如果不是那麼在路徑變量下移動當前shell(作爲輸出獲取)的目錄並重新啓動命令提示符。 這是測試,它最近爲我工作 –