写一个makefile,生成一个目标,并且通过make intall安装这个目标到指定的路径下。
方法一
TARGET=test_install
OBJS=test_install.o
CC:=g++
OUT=/usr
#这个OUT参数也可以通过外部命令去更改,make install OUT=../out,这个时候目标就会被复制到../out/bin/中,makefile里的OUT会被覆盖
$(TARGET):$(OBJS) #这里虽然没有写CMD,但是能自动推导出编译命令
install:$(TARGET)
@echo "begin install "$(TARGET)
mkdir -p $(OUT)/bin/
cp $(TARGET) $(OUT)/bin/
@echo $(TARGET) "install success!"
.PHONY:install
#.表示当前目录,..表示上一级目录
使用函数的方式来install,自定义函数
TARGET=test_install
OBJS=test_install.o
CC:=g++
OUT=/usr
#这个OUT参数也可以通过外部命令去更改,make install OUT=../out,这个时候目标就会被复制到../out/bin/中,makefile里的OUT会被覆盖
#定义函数
define Install
@echo "begin install"$(1)
-mkdir -p $(2)
cp $(1) $(2)
@echo $(1) " install success!"
endef
$(TARGET):$(OBJS) #这里虽然没有写CMD,但是能自动推导出编译命令
install:$(TARGET)
#调用函数,根据位置信息,替换$(1)和$(2),第一个传进来的就是$(1)
$(call Install,$(target),$(OUT)/bin/)
.PHONY:install
#.表示当前目录,..表示上一级目录
写一个启动脚本,和停止脚本
两个命令
nohup test_install 5 & #后台启动一个脚本
killall test_install #停止
TARGET=test_install
OBJS=test_install.o
CC:=g++
OUT=/usr
#这个OUT参数也可以通过外部命令去更改,make install OUT=../out,这个时候目标就会被复制到../out/bin/中,makefile里的OUT会被覆盖
STARTSH=start_$(TARGET)
STOPSH=stop_$(TARGET)
#定义函数
define Install
@echo "begin install"$(1)
-mkdir -p $(2)
cp $(1) $(2)
echo "nohup $(1) $(3) &" > $(STARTSH)
#用echo创建shell脚本
chmod +x $(STARTSH)
cp $(STARTSH) $(2)
echo "killall $(1)" > $(STOPSH)
cp $(STOPSH) $(2)
@echo $(1) " install success!"
endef
$(TARGET):$(OBJS) #这里虽然没有写CMD,但是能自动推导出编译命令
install:$(TARGET)
#调用函数,根据位置信息,替换$(1)和$(2),第一个传进来的就是$(1)
$(call Install,$(target),$(OUT)/bin/,5)
.PHONY:install
#.表示当前目录,..表示上一级目录