我對Makefiles非常陌生,所以我可能沒有這樣做,這是最好的方式(您的意見非常感謝,因爲我想了解我/我爲什麼不好)。無論如何,這裏是我的問題:守護進程的Makefile
我有一個守護進程,我爲我的程序寫的,我試圖用Makefile安裝它(目標是「安裝」)。 「安裝」目標應該做的是將守護進程二進制文件移動到某個位置,然後將「服務腳本」移動到/etc/init.d/或/etc/rc.d/中(因爲不同的發行版有不同的文件夾...)。這裏是我的makefile至今:
all:
@echo "Making Components"
@cd Daemon; make
@echo "Components Built"
install:
@echo "Installing Components"
@mkdir -p /usr/lib/
@cp Daemon/myprog_d /usr/lib/myprog_d
[email protected] -d /etc/init.d && cp Scripts/myprog /etc/init.d/
[email protected] -d /etc/rc.d && cp Scripts/myprog /etc/rc.d/
[email protected] ! -d /etc/init.d -a ! -d /etc/rc.d && echo " Warning: Couldn't install script. Manually install Scripts/myprog"
@mkdir -p /var/log/
@echo "Installed."
uninstall:
@echo "Uninstalling Components"
@./Scripts/myprog stop > /dev/null
@rm -f /usr/lib/myprog_d
@echo "Uninstall complete"
clean:
@echo "Cleaning Components"
@cd Daemon; make clean
@echo "Clean complete"
正如你所看到的,「安裝」目標測試,看看是否存在這兩個目錄,如果他們這樣做,複製腳本放進去(我還沒做它來「卸載」,不用擔心)。
我的第一個問題:這是正確的方法嗎? 「全部」和「乾淨」的目標工作(在「守護進程/」中有另一個生成文件,正如你可以推論的那樣),但是我想知道是否有更簡單的方法來做到這一點。其次,因爲「測試」函數返回非零值,所以我必須在它之前先做「 - 」,這樣錯誤纔會被忽略。不幸的是,這導致「make install」輸出爲:
Installing Components
make: [install] Error 1 (ignored)
make: [install] Error 1 (ignored)
Installed.
這是非常醜陋的,可能不是很好的做法。在這種情況下我能做些什麼? (我曾經嘗試都 - @和@ - ,但@不會抑制 「忽略」 輸出)
真誠, 克里斯
謝謝,多數民衆贊成在!最後一行意味着只是說「找不到移動它的位置」 – Chris 2012-03-05 22:20:45