2011-10-18 38 views
0

我必須使用makefile才能將文件夾1的所有內容複製到文件夾2中。文件夾1的內容是名稱爲abc_1.c,abc_2.c的5個文件。 。 等等。 文件夾的路徑1 & 2都作爲makefile中的變量提供,然後給出複製命令。 問題是,即使使用通配符功能後,我能夠將整個文件夾1複製到文件夾2,而不是folder1的內容。 請通過建議將文件夾1的內容複製到2而不是整個文件夾的方法來幫助我。在Makefile中正確使用通配符

以下是代碼片段,我最初使用:
PATH_1 = /ace/1/*
PATH_2 = /ace/2/
代碼複製:shell cp -rf ("$(PATH_1)") ("$(PATH_2)")
PLS不介意上面的代碼行。

主要問題是在PATH_1中'*'未正確解析且內容未被複制。在去掉「*」從PATH_1代碼工作,但它再次複製整個文件夾1到2夾

後來,我修改PATH_1如下:
PATH_1 = /ace/1/(wildcard abc_*.c)

仍然是同樣的事情,整個文件夾1正在被複制到文件夾2中。 請幫助我解決這個問題。

+1

您使用的是什麼版本的產品? (嘗試輸入'make -v'。)上面的代碼片段不是工作的makefile規則。稍作修改就可以完美實現。你的規則是什麼? – Beta

+0

'「$(PATH_1)」'防止由於雙引號引起的'*'擴展。 '$(PATH_1)'可以做到這一點。 –

回答

0

嘗試一些在這些線路上:

PATH1=/ace/1 
PATH2=/ace/2 
C_SRCS=$(wildcard $(PATH1)/abc_*.c) 

copy: 
    cp -vi ${C_SRCS} $(PATH2) 

的複印選項v是冗長& i是互動的,而如果你願意,你可以忽略。
此規則將失敗,錯誤與C_SRCS是空的,以防止你可以對這些線條微微一愣規則的東西:

copy: 
    for C_SRC in ${C_SRCS}; do \ 
     cp -vi $$C_SRC $(PATH2); \ 
    done 

希望這有助於!