[makefile]6_make install的实现

1.常见目标流程

make(1)
make install(2/3/4)
make clean(5)
1 将源文件编译成二进制可执行文件(包括各种库文件)
2 创建目录,将可执行文件拷贝到指定目录(安装目录)
3 加全局可执行的路径
4 加全局的启停脚本
5 重置编辑环境,删除无关文件

2.make / make clean

TARGET:=006_main
OBJ:=$(TARGET).o
CC=g++
$(TARGET):$(OBJ) //没写命令,就是让他自己推导.o是怎么来的  
clean:
    $(RM) $(TARGET) $(OBJ)
.PHONY:clean

3.创建目录,将可执行文件拷贝到指定目录(安装目录)

TARGET:=006_main
OBJ:=$(TARGET).o
CC=g++
PATH:=/tmp/006_main/ #由于PATH是全局变量,你重定义后,madir cp都得加bin
$(TARGET):$(OBJ) 
install:$(TARGET)
    if[-d $(PATH)]; then echo $(PATH) exist; else /bin/madir $(PATH); /bin/cp $(TARGET) $(PATH);fi;
clean:
    $(RM) $(TARGET) $(OBJ)
    $(RM) -rf $(PATH)
.PHONY:clean

4.加全局可执行的路径

TARGET:=006_main
OBJ:=$(TARGET).o
CC=g++
PATH:=/tmp/006_main/
BIN:=/usr/local/bin
$(TARGET):$(OBJ)
install:$(TARGET)
    if[-d $(PATH)];\
        then echo $(PATH) exist;\
    else \
        /bin/makir $(PATH);\
        /bin/cp $(TARGET) $(PATH);\
        /bin/ln -sv $(PATH)$(TARGET) $(BIN);\
    fi;
clean:
    $(RM) $(TARGET) $(OBJ)
    $(RM) -rf $(PATH)
.PHONY:clean

5.加全局的启停脚本

  • echo中>表示写入文件,并将文件内所有文字替换,也就是说会先清除文件内容再写入。这里相当于换名字。
  • 而>>则是在末行追加一行新的到文件中。
  • chmod a+x a.txt 等价于 chmod +x a.txt  给所有用户给予a.txt文件可执行权限。
  • tail 命令用于显示文件的末尾内容,默认显示文件的最后 10 行。通常情况下,tail 命令用于实时查看日志文件。
TARGET:=006_main
OBJ:=$(TARGET).o
CC=g++
PATHS:=/tmp/006_main/
BIN:=/usr/local/bin
START_SH:=$(TARGET)_start 
STOP_SH:=$(TARGET)_stop
LOG:=$(PATHS)$(TARGET).log
$(TARGET):$(OBJ)
install:$(TARGET)
    if[-d $(PATHS)];\
        then echo $(PATHS) exist;\
    else \
        makir $(PATHS);\
        cp $(TARGET) $(PATHS);\
        ln -sv $(PATHS)$(TARGET) $(BIN);\
        touch $(LOG);\                                   #为了运行可执行文件
        chmod a+rwx $(LOG);\                             #不会一直terminal
        echo "$(TARGET)>$(LOG) &">$(PATHS)$(START_SH);\  #打印弄成后台打印
        #echo $(TARGET)>$(PATHS)$(START_SH);\
        echo "killall $(TARGET)">$(PATHS)$(STOP_SH);\  
        chmod a+x $(PATHS)$(START_SH);\
        chmod a+x $(PATHS)$(STOP_SH);\
        ln -sv $(PATHS)$(START_SH) $(BIN);\
        ln-sv $(PATHS)$(STOP_SH) $(BIN);\  
    fi;
clean:
    $(RM) $(TARGET) $(OBJ) $(BIN)$(TARGET) $(BIN)$(START_SH) $(BIN)$(STOP_SH)
    $(RM) -rf $(PATHS)
.PHONY:clean
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值