我对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