OUTPUT_DLL := libmy.so
LIBS :=-L../public/lib/x64/linux -lzookeeper_mt -lcurl \
-lfreetype -lopencv_core -lopencv_highgui -lopencv_imgproc \
-lsqlite3 -locilib \
-L../public/lib/x64/linux/librdkafka-V0.11.0 -lrdkafka \
-L../public/lib/x64/linux/pqxx -lpqxx -lpq \ #if make x64 or x32 YES or NO
MAKE64 := YES #base
CC := gcc
CXX := g++
LD := g++
SHELL := /bin/sh #path
ifeq (YES, $(MAKE64))
BIN_DIR := ../bin/x64/linux/
OBJ_DIR := ../obj/x64/linux/
else
BIN_DIR := ../bin/x86/linux/
OBJ_DIR := ../obj/x86/linux/
endif #compile all .c .cpp files found in src dir
SRCS := $(wildcard *.c) $(wildcard *.cpp)\
$(wildcard ./database/*.c) $(wildcard ./database/*.cpp)\
$(wildcard ./kafka/*.c) $(wildcard ./kafka/*.cpp)\
$(wildcard ./ws/bigdata/*.c) $(wildcard ./ws/bigdata/*.cpp)\
$(wildcard ./ws/env/*.c) $(wildcard ./ws/env/*.cpp)\
$(wildcard ./ws/*.c) $(wildcard ./ws/*.cpp)\ OBJS := $(addsuffix .o,$(basename $(SRCS)))
VPATH := $(OBJ_DIR) #include path
INCLUDE_BASE := ../public/include
INCLUDE += $(INCLUDE_BASE):\
$(INCLUDE_BASE)/my:\
$(INCLUDE_BASE)/my1:\
$(INCLUDE_BASE)/curl:\
$(INCLUDE_BASE)/my3:\
$(INCLUDE_BASE)/freetype:\
$(INCLUDE_BASE)/opencv:\
$(INCLUDE_BASE)/librdkafka-V0.11.0:\
$(INCLUDE_BASE)/ocilib:\
$(INCLUDE_BASE)/pqxx/linux:\
./database:\
./HTTPPlugin:\
./ws:\ #if debug
DEBUG := YES
PROFILE := NO DEBUG_CFLAGS := -Wall -Wno-format -g -fvisibility=hidden
RELEASE_CFLAGS := -Wall -Wno-unknown-pragmas -Wno-format -O3 -D_CONSOLE -fvisibility=hidden
DEBUG_CXXFLAGS := $(DEBUG_CFLAGS)
RELEASE_CXXFLAGS := $(RELEASE_CFLAGS)
DEBUG_LDFLAGS := -g -Wl,-rpath=./
RELEASE_LDFLAGS := -Wl,-rpath=./ ifeq (YES, $(DEBUG))
CFLAGS := $(DEBUG_CFLAGS)
CXXFLAGS := $(DEBUG_CXXFLAGS)
LDFLAGS := $(DEBUG_LDFLAGS)
else
CFLAGS := $(RELEASE_CFLAGS)
CXXFLAGS := $(RELEASE_CXXFLAGS)
LDFLAGS := $(RELEASE_LDFLAGS)
endif ifeq (YES, $(PROFILE))
CFLAGS := $(CFLAGS) -pg -O3
CXXFLAGS := $(CXXFLAGS) -pg -O3
LDFLAGS := $(LDFLAGS) -pg
endif CFLAGS += $(patsubst %, -I%,$(subst :, ,$(INCLUDE)))
CXXFLAGS += $(patsubst %, -I%,$(subst :, ,$(INCLUDE))) all: $(OUTPUT_DLL) $(OUTPUT_LIB) lib:$(OUTPUT_LIB) dll:$(OUTPUT_DLL) $(OUTPUT_DLL):$(OBJS)
@echo ===================== Linking $(OUTPUT_DLL) in $(BIN_DIR) =========================
$(LD) -shared -fPIC -o $(BIN_DIR)$@ $(LDFLAGS) $(patsubst %, $(OBJ_DIR)%,$(OBJS)) $(LIBS) $(OUTPUT_LIB):$(OBJS)
@echo ===================== Linking $(OUTPUT_LIB) in $(BIN_DIR) =========================
@ar -rsv -o $(BIN_DIR)$@ $(patsubst %, $(OBJ_DIR)%,$(OBJS)) %.o:%.cpp
@echo ===================== compiling $< =======================
$(CXX) -c $(CXXFLAGS) $< -fPIC -o $(OBJ_DIR)$@
%.o:%.c
@echo ===================== compiling $< ========================
$(CC) -c $(CFLAGS) $< -fPIC -o $(OBJ_DIR)$@
#
# @command clean
# @brief remove all output files and clear screen
#
clean:
-@rm $(patsubst %,$(OBJ_DIR)%,$(OBJS))
-@rm $(patsubst %,$(BIN_DIR)%,$(OUTPUT_LIB))
-@rm $(patsubst %,$(BIN_DIR)%,$(OUTPUT_DLL))
clear

linux通用makefile文件的更多相关文章

  1. linux中Makefile文件相关内容

    第一章.概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,m ...

  2. Linux内核Makefile文件(翻译自内核手册)

    --译自Linux3.9.5 Kernel Makefiles(内核目录documention/kbuild/makefiles.txt) kbuild(kernel build) 内核编译器 Thi ...

  3. Linux平台Makefile文件的编写基础篇(转)

    目的:       基本掌握了 make 的用法,能在Linux系统上编程.环境:       Linux系统,或者有一台Linux服务器,通过终端连接.一句话:有Linux编译环境.准备:      ...

  4. Linux平台Makefile文件的编写基础篇

    目的:        基本掌握了 make 的用法,能在Linux系统上编程. 环境:        Linux系统,或者有一台Linux服务器,通过终端连接.一句话:有Linux编译环境. 准备: ...

  5. Linux平台Makefile文件的编写基础入门(课堂作业)

    根据老师的要求,写一个超简单的makefile准备:       准备三个文件:file1.c, file2.c, file2.h       file1.c: #include "file ...

  6. 【410】Linux 系统 makefile 文件

    makefile 主要是用来合并编译文件 CC = gcc puzzle: puzzle.c boardADT.o $(CC) puzzle.c boardADT.o -o puzzle -lm bo ...

  7. linux内核Makefile整体分析

    转自:http://www.cnblogs.com/amanlikethis/p/3675486.html <请阅读原文> 一.概述 1.本文的意义 众多的资料(<嵌入式Linux应 ...

  8. 编写一个通用的Makefile文件

    1.1在这之前,我们需要了解程序的编译过程 a.预处理:检查语法错误,展开宏,包含头文件等 b.编译:*.c-->*.S c.汇编:*.S-->*.o d.链接:.o +库文件=*.exe ...

  9. linux下通用Makefile写法

    linux编译多个源文件的程序比较麻烦,这下就需要通用的Makefile了,编译的时候执行一下make命令就OK,下面介绍通用makfile的写法. 假设现在有以下源文件:file1.h file1. ...

随机推荐

  1. Excel VBA 入门

    一.文件格式 要使用VBA,excel文件必须保存为启用宏的工作簿,即xlsm格式. 二.启动VBA编辑器 打开工作簿后,要启动VBA编辑器,有两种方法,一是在工作表的名字上面点击右键,选择“查看代码 ...

  2. java.util.Optional

    public class OptionalDemo { public static void main(String[] args) { //创建Optional实例,也可以通过方法返回值得到. Op ...

  3. angularJs 之deferred

    angularJs 对promise的封装 var deferred = $q.defer(); deferred.promise.then(function(){ var result = {} c ...

  4. python 匿名函数的使用(并没有那么简单)

    以下为几种匿名函数的使用方式:x=[(lambda x:x**2)(x) for x in range(10)]print(x)y=[x**2 for x in range(10)]print(y)i ...

  5. JDK与JRE、JVM三者间的关系及JDK的安装部署

    JDK与JRE.JVM三者间的关系及JDK的安装部署 一.JDK与JRE.JVM三者间的关系 JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了 ...

  6. 异或+构造 HDOJ 5416 CRB and Tree

    题目传送门 题意:给一棵树,问f (u, v) 意思是u到v的所有路径的边权值的异或和,问f (u, v) == s 的u,v有几对 异或+构造:首先计算f (1, u) 的值,那么f (u, v) ...

  7. Android内存堆上限Android的缺省值是16M(某些机型是24M)

    转自: http://www.cnblogs.com/jacktu/archive/2010/12/30/1921475.html 大家都知道Android的上层应用是基于 Dalvik Virtua ...

  8. 416 Partition Equal Subset Sum 分割相同子集和

    详见:https://leetcode.com/problems/partition-equal-subset-sum/description/ C++: class Solution { publi ...

  9. D. Arpa's weak amphitheater and Mehrdad's valuable Hoses 分组背包模板题

    http://codeforces.com/problemset/problem/742/D 并查集预处理出所有关系. 一开始的时候,我预处理所有关系后,然后选择全部的时候,另起了一个for,然后再判 ...

  10. mysql配置mha高可用防火墙未关闭报错

    ########################################################################## l  问题背景:检查主从复制之后做高可用报错 [r ...