makefile
makefile的内容非常的多,好在我们只要掌握一部分够用就可以了。
makefile 学习路线:
-
模仿阶段,能够根据搜集到的网上的或者现有工程里的makefile文件自己根据自己的实际情况做修改。
-
熟悉阶段,虽然不能自己独立写出完整的代码,但能够知道完整代码中每个符号,语句的意义。
-
掌握阶段,能够根据自己的需求个性化定制自己的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