makefile intall自动生成安装,并且写好启动和停止脚本

写一个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

#.表示当前目录,..表示上一级目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值