这是植根于makefile中的好方法吗?
shell = / bin / sh
INSTDIR = / usr / bin /
OBJS = main.o file.o gen.o stat.o
程式1:$(OBJS)
gcc -o program1 $(OBJS)
main.o:main.c file.h gen.h stat.h
gcc -c main.c
file.o:file.c file.h
gcc -c file.c
gen.o:gen.c gen.h
gcc -c gen.c
stat.o:stat.c stat.h
gcc -c stat.c
清洁:
rm -f $(OBJS)程序1
安装:
@if [-f program1];然后 \
如果[$$(id -u)-eq 0];然后 \
cp程序1 $ {INSTDIR)&& \
echo“已安装在$(INSTDIR)中”; \
其他\
(sudo cp program1 $ {INSTDIR)2> / dev / null && \
回声“安装在$(INSTDIR)”)|| \
(回显“此机器上没有sudo,请尝试su。” \
&& su -c“cp program1 $(INSTDIR)” && \
回声“安装在$(INSTDIR)”); \
fi; \
其他\
echo“没有要安装的程序,请运行make。” ; \
科幻
卸载:
@if [-f $(INSTDIR)program1];然后 \
如果[$$(id -u)-eq 0];然后 \
rm $ {INSTDIR)program1 && \
echo“已在$(INSTDIR)中卸载”; \
其他\
(sudo rm $ {INSTDIR)program1 2> / dev / null && \
echo“已在$(INSTDIR)中卸载”)|| \
(回显“此机器上没有sudo,请尝试su。” \
&& su -c“rm $(INSTDIR)program1” && \
echo“已在$(INSTDIR)中卸载”); \
fi; \
其他\
回声“没有要删除的程序。” ; \
科幻
最佳答案
没有!
首先,通常用户执行sudo make install
。其次,您无需考虑将程序安装到自定义目录的情况,该目录并不总是需要root特权。打包工具使用此功能,例如,它们没有root特权。