Linux初体验之makefile

本文详细介绍了makefile的格式和使用,包括目标、伪目标、前置条件、命令、注释、通配符、模式匹配、变量与赋值、内置变量、自动变量、判断和循环以及函数等核心概念。通过实例解析了makefile的编写技巧和注意事项,帮助读者从模仿到熟练掌握makefile的编写。
摘要由CSDN通过智能技术生成

makefile

makefile的内容非常的多,好在我们只要掌握一部分够用就可以了。

makefile 学习路线:

  1. 模仿阶段,能够根据搜集到的网上的或者现有工程里的makefile文件自己根据自己的实际情况做修改。

  2. 熟悉阶段,虽然不能自己独立写出完整的代码,但能够知道完整代码中每个符号,语句的意义。

  3. 掌握阶段,能够根据自己的需求个性化定制自己的makefile。

makefile 设计的内容比较综合,需要勤动手搜索探寻究竟,不断的学习别人的经验,并在项目实践中摸索练习。

 

build:
    gcc -o mb_tiles_importer mbtilesimporter.c sqlite3.c encode.c sqlimporter.c -lpthread -ldl
#top level
all:
        make clean -C client
        make -C client
        make -C server
​
client:
        make clean -C client
        make -C client
​
server:
        #@make clean -C server
        make -C server
​
clean:
        make clean -C client
        make clean -C server
​
.PHONY: client server
​
#############################################
​
#client/Makefile
CXXFLAGS := $(CXXFLAGS) -std=gnu++14 -O2 -Wall -g
CXXFLAGS += -Wno-unused-result -Wno-write-strings -Wno-sign-compare #-Wno-format-overflow # inherit from env
LDFLAGS := $(LDFLAGS) -pthread -lm # inherit from env
LDFLAGS += $(shell curl-config --libs)
CXXFLAGS += $(shell curl-config --cflags)  -I include -I contrib
LDFLAGS += -DTHREAD_CNT=2
​
#LDFLAGS += -DUSE_FTP_SERVER
#LDFLAGS += -DUSE_LOCAL
#LDFLAGS += -DUSE_SQLITE
#LDFLAGS += -DAS_CLIENT
​
TARGET := vtloader
BINDIR := ../bin
​
​
DIR := src
SRCS := $(wildcard $(DIR)/*.cpp)
OBJS =$(patsubst %.cpp,%.o, $(SRCS))
​
​
all: $(TARGET)
​
$(OBJS):%.o: %.cpp
        $(CXX) -c $(CXXFLAGS) $< -o $@ $(LDFLAGS)
​
$(TARGET):$(OBJS)
        $(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS)
        @if test -d $(BINDIR); then true; else mkdir $(BINDIR); fi;
        @mv -f $@ $(BINDIR)
        @echo " Build success!"
        @echo " Run as :"
        @echo " nohup bin/$(TARGET) -m -l -c config -p test 2>&1 > logs/$(TARGET).`date +%H%M%S-%m%d`.log &"
        @echo " nohup bin/$(TARGET) -m -r -p 127.0.0.1:9001 2>&1 > logs/$(TARGET).`date +%H%M%S-%m%d`.log &"
#   $(CXX) -shared $(CXXFLAGS) $^ -o $@ $(LDFLAGS)
#   rm -rf $(OBJS)
run:$(TARGET)
        #nohup ./bin/$(TARGET) -m -l -c config -p test 2>&1 >  logs/$(TARGET).`date +%H%M%S-%m%d`.log &
        nohup ./bin/$(TARGET) -m -r -p 127.0.0.1:9001 2>&1 > logs/$(TARGET).`date +%H%M%S-%m%d`.log &
        @ps aux | grep $(TARGET) | grep -v grep
        tail -200f $(TARGET).log
#install:
#       mkdir -p /usr/local/bin
#       cp ./tileinfo /usr/local/bin/tileinfo
#       chmod +x /usr/local/bin/tileinfo
​
#test:
​
clean:
        -@rm -f $(BINDIR)/$(TARGET)
        -@rm -f $(OBJS)
​
.PHONY: all clean test
​
#######################################################
#server/Makefile
​
CC=gcc
CFLAGS=-Wall -g -O2 -std=gnu99 -Wno-unused-result -Wno-format-overflow
LDFLAGS :=$(LDFLAGS) -lm -lpthread  -D_GNU_SOURCE -DPICE_RANGE=64 #-lsqlite3
BIN=vtserver
INSTALLDIR := /opt/vtloader
BINDIR:= ../bin
CONFIG := config
OBJS=main.o ini.o socket.o session.o xproto.o util.o
#LIBS=-lcrypt
​
all:$(BIN)
​
$(BIN):$(OBJS)
        $(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS)
        @if test -d $(BINDIR); then true; else mkdir $(BINDIR); fi;
        @mv -f $@ $(BINDIR)
        @echo "server build success!"
        @echo " Run as :"
        @echo " nohup bin/$(BIN) -c config 2>&1 > logs/$(BIN).`date +%m%d%H%M%S
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值