Я очень новичок в Makefiles, поэтому я, вероятно, не делаю этого наилучшим образом (ваш вклад очень ценится, так как я хотел бы узнать, как/почему мой плохой). Во всяком случае, вот моя проблема:Makefile for Daemon
У меня есть Daemon, который я написал для моей программы, и я пытаюсь установить ее с помощью 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-файл в «Daemon /», как вы можете вывести), но я хочу знать, есть ли более чистый способ сделать это.
Во-вторых, поскольку функция «test» возвращает ненулевое значение, мне пришлось сделать «-» перед тем, чтобы ошибка была проигнорирована. К сожалению, это приводит к «сделать установку» выходного существа:
Installing Components
make: [install] Error 1 (ignored)
make: [install] Error 1 (ignored)
Installed.
Что очень некрасиво и, вероятно, не является хорошей практикой. Что я могу сделать в этом случае? (Я пробовал оба - @ и @ -, но @ не будет подавлять "игнорировал" выход)
С уважением, Крис
Спасибо, это здорово! Эта последняя строка должна была просто сказать: «Не удалось найти, куда ее переместить», – Chris