nsq之Makefile文件解读

文章目录

Makefile文件

PREFIX=/usr/local
BINDIR=${PREFIX}/bin
DESTDIR=
BLDDIR = build
BLDFLAGS=
EXT=
ifeq (${GOOS},windows)
    EXT=.exe
endif

APPS = nsqd nsqlookupd nsqadmin nsq_to_nsq nsq_to_file nsq_to_http nsq_tail nsq_stat to_nsq
all: $(APPS)

$(BLDDIR)/nsqd:        $(wildcard apps/nsqd/*.go       nsqd/*.go       nsq/*.go internal/*/*.go)
$(BLDDIR)/nsqlookupd:  $(wildcard apps/nsqlookupd/*.go nsqlookupd/*.go nsq/*.go internal/*/*.go)
$(BLDDIR)/nsqadmin:    $(wildcard apps/nsqadmin/*.go   nsqadmin/*.go nsqadmin/templates/*.go internal/*/*.go)
$(BLDDIR)/nsq_to_nsq:  $(wildcard apps/nsq_to_nsq/*.go  nsq/*.go internal/*/*.go)
$(BLDDIR)/nsq_to_file: $(wildcard apps/nsq_to_file/*.go nsq/*.go internal/*/*.go)
$(BLDDIR)/nsq_to_http: $(wildcard apps/nsq_to_http/*.go nsq/*.go internal/*/*.go)
$(BLDDIR)/nsq_tail:    $(wildcard apps/nsq_tail/*.go    nsq/*.go internal/*/*.go)
$(BLDDIR)/nsq_stat:    $(wildcard apps/nsq_stat/*.go             internal/*/*.go)
$(BLDDIR)/to_nsq:      $(wildcard apps/to_nsq/*.go               internal/*/*.go)

$(BLDDIR)/%:
	@mkdir -p $(dir $@)
	go build ${BLDFLAGS} -o $@ ./apps/$*

$(APPS): %: $(BLDDIR)/%

clean:
	rm -fr $(BLDDIR)

.PHONY: install clean all
.PHONY: $(APPS)

install: $(APPS)
	install -m 755 -d ${DESTDIR}${BINDIR}
	for APP in $^ ; do install -m 755 ${BLDDIR}/$$APP ${DESTDIR}${BINDIR}/$$APP${EXT} ; done

在此文件中包含命令有

  1. make all
    此命令用作构建nsq项目的所有可执行文件,执行以下子命令
make nsqd
make nsqlookupd
make nsqadmin
make nsq_to_nsq
make nsq_to_file
make nsq_to_http
make nsq_tail
make nsq_stat
make to_nsq
# 以下是所有子命令的运行命令
mkdir -p build
go build  -o build/nsqd ./apps/nsqd
go build  -o build/nsqlookupd ./apps/nsqlookupd
go build  -o build/nsqadmin ./apps/nsqadmin
go build  -o build/nsq_to_nsq ./apps/nsq_to_nsq
go build  -o build/nsq_to_file ./apps/nsq_to_file
go build  -o build/nsq_to_http ./apps/nsq_to_http
go build  -o build/nsq_tail ./apps/nsq_tail
go build  -o build/nsq_stat ./apps/nsq_stat
go build  -o build/to_nsq ./apps/to_nsq
  1. make install
    此命令需root权限运行,用于nsq项目的安装部署操作,执行此命令时会自动执行make all命令,将可执行文件存放到./build目录下,此命令会给/usr/local/bin755权限,若目录不存在则创建,后面会执行install -m 755 build/$APP /usr/local/bin/$APP命令,安装到/usr/local/bin/目录,赋予755权限,命令执行完后,终端可以使用nsqd nsqlookupd nsqadmin nsq_to_nsq nsq_to_file nsq_to_http nsq_tail nsq_stat to_nsq任一命令
  2. make clean
    清理nsq项目构建的可执行文件,子命令rm -fr build
  3. make nsqd
    构建nsqd可执行文件
  4. make nsqlookupd
    构建nsqlookupd可执行文件
  5. make nsqadmin
    构建nsqadmin可执行文件
  6. make nsq_to_nsq
    构建nsq_to_nsq可执行文件
  7. make nsq_to_file
    构建nsq_to_file可执行文件
  8. make nsq_to_http
    构建nsq_to_http可执行文件
  9. make nsq_tail
    构建nsq_tail可执行文件
  10. make nsq_stat
    构建nsq_stat可执行文件
  11. make to_nsq
    构建to_nsq可执行文件

收获

此文件告诉我们nsq项目的所有入口文件对应的位置

  1. nsqd的入口文件在./apps/nsqd下即./apps/nsqd/main.go
  2. nsqlookupd的入口文件在./apps/nsqlookupd下即./apps/nsqlookupd/main.go
  3. nsqadmin的入口文件在./apps/nsqadmin下即./apps/nsqadmin/main.go
  4. nsq_to_nsq的入口文件在./apps/nsq_to_nsq下即./apps/nsq_to_nsq/nsq_to_nsq.go
  5. nsq_to_file的入口文件在./apps/nsq_to_file下即./apps/nsq_to_file/nsq_to_file.go
  6. nsq_to_http的入口文件在./apps/nsq_to_http下即./apps/nsq_to_http/nsq_to_http.go
  7. nsq_tail的入口文件在./apps/nsq_tail下即./apps/nsq_tail/nsq_tail.go
  8. nsq_stat的入口文件在./apps/nsq_stat下即./apps/nsq_stat/nsq_stat.go
  9. to_nsq的入口文件在./apps/to_nsq下即./apps/to_nsq/to_nsq.go
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值