2011-11-19 89 views
1

如何在Make中遞歸拷貝文件?我想把它作爲平臺中立的;特別是,我需要這個工作在普通的Windows上(沒有cp -r,沒有rsync,沒有cygwin,沒有interix等),我希望它能夠在Linux下工作,只需要很少的修改(沒有robocopy,沒有xcopy/xcopy32 )。我工作的環境非常以Windows爲中心,我想讓我們有可能轉向類Unix/Unix環境。理想情況下,這應該是獨立的(很少外部依賴),並且它應該只複製文件,如果它們不存在於目標中或目標中的文件比源文件早。Makefile中的遞歸拷貝

目標:如果文件不存在或者$ {DESTINATION}中的相應文件比源文件早,則遞歸地遍歷$ {SOURCE}並將其複製到$ {DESTINATION}中的相應位置。

我見過How to copy a directory in a Makefile?Recursive wildcards in GNU make?,但這些解決方案在我工作的以Windows爲中心的環境下不起作用。

+0

你考慮過使用'tar'嗎?默認情況下,它不會用較舊的文件覆蓋較新的文件,因此它可能會完成您之後的工作。這可能取決於您是否可以在Windows上使用其中一個Unix工作系統。 –

+0

Windows的庫存安裝沒有'tar'。 – user314104

+3

Windows的庫存安裝也沒有'make',所以你正在裝備機器來開發;添加您需要的工具使其工作。 –

回答

2

make本身甚至沒有能力複製單個文件。您將需要使用一些外部程序來執行此操作。我不相信任何一個合適的程序都可以在Linux和Windows上使用。

+1

+1。我想在這裏增加一個更強的(也許是有爭議的)推論:'make'不像'ant'那樣重新實現操作系統。 'make'是一個用於shell腳本的自動化工具。對於像非cygwin Windows這樣的回水操作系統來說,沒有辦法使它工作得很好,所以你越早放棄這個想法就越好。 – thiton