2016-05-17 44 views
0

我在makefile中遇到以下代碼。在makefile中使用ssh和rsync

ifdef MYBUILD                                                  
.PHONY: rsync all, clean 
all: rsync 
    ssh $(MYBUILD) make -C cs/src 
clean: rsync 
    ssh $(MYBUILD) make -C cs/src [email protected] 
rsync: 
    ssh $(MYBUILD) mkdir -p cs/src 
    rsync -Cavuz . $(MYBUILD):cs/src 

我似乎無法理解ssh和rsync在make系統中會做什麼?有人可以解釋上述用法。

+1

你知道'ssh'和'rsync'是做什麼的嗎? –

+0

@ IgnacioVazquez-Abrams - ssh是安全的shell登錄到遠程機器。 rsync是在兩臺不同的機器上同步源代碼? – liv2hak

+0

@ IgnacioVazquez-Abrams - 在這方面仍然沒有得到應用。 – liv2hak

回答

0

Makefile允許您在構建機器上而不是本地主機上運行構建。 (無論這是否需要,您需要決定)。

all目標將首先執行目標rsync,然後將ssh發送到遠程系統並在那裏運行make

rsync target將確保您的本地源文件被複制到構建機器。

如果你想測試它,使用密鑰文件,把該機器的一些不錯的地址或域名(我會用192.168.1.111),然後運行建立了一個獨立的編譯機SSH訪問

make MYBUILD="192.168.1.111" 
+0

看來OP正在尋找一種方法來構建他的本地機器。你應該提到,如果OP想在本地構建,他肯定可以運行'make MYBUILD = localhost'。這假設他不允許修改'Makefile'。 – alvits

+0

我看到它的方式他試圖理解「這段代碼做了什麼?」和「爲什麼有'ssh'和'rsync'當'make'完全是關於構建軟件*(我知道最後的假設是錯誤的BTW)* –