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. facebook chat api 使用

    官方API文档: https://developers.facebook.com/docs/chat/ 下面是根据文档修改的类: <?php class Invite_Chat{ protect ...

  2. 设计模式之观察者模式(Observer pattern)

    最近参加了一次面试,其中笔试题有一道编程题,在更换掉试题的描述场景后,大意如下: 上课铃声响起,学生A/B/C/D进入教室:下课铃声响起,学生A/B/C/D离开教室. 要求使用设计模式的思想完成铃与学 ...

  3. C# a标签请求下载文件

    服务器文件后台处理方式: a标签: <a href="/FileUpload/DownloadFile?file=/UploadFiles/File/bfcd676b-13a8-419 ...

  4. 51nod 1237 最大公约数之和 V3【欧拉函数||莫比乌斯反演+杜教筛】

    用mu写lcm那道卡常卡成狗(然而最后也没卡过去,于是写一下gcd冷静一下 首先推一下式子 \[ \sum_{i=1}^{n}\sum_{j=1}^{n}gcd(i,j) \] \[ \sum_{i= ...

  5. javascript监听值变化

    最近面了有道前端实习,人品爆发一面过了.但是在一面中面试官问了一个问题”MVC用javascript如何实现?如果实现双向绑定?值变化监听?“ 当时我回答”js好像没函数进行值变化监听“ 后来想想很不 ...

  6. Python添加自己的模块路径

    进入Python编辑环境后可以,通过Python的sys.path属性获得当前搜索路径的配置,可以看到之前我们设置的路径已经在当前搜索路径中了. 然后通过sys.path.append('F:\Pyt ...

  7. git介绍及安装

    git介绍 git是一个开源的分布式版本控制系统,用于敏捷高效的处理任何或大或小的项目.git是linus Torvalds为了帮助管理Linux内核开发的一个开放源码的版本控制软件. Git 与常用 ...

  8. 题解报告:hdu 1171 Big Event in HDU(多重背包)

    Problem Description Nowadays, we all know that Computer College is the biggest department in HDU. Bu ...

  9. jmeter(十)JMeter 命令行(非GUI)模式

    前文 讲述了JMeter分布式运行脚本,以更好的达到预设的性能测试(并发)场景.同时,在前文的第一章节中也提到了 JMeter 命令行(非GUI)模式,那么此文就继续前文,针对 JMeter 的命令行 ...

  10. Windows 7下如何在Cygwin下正确安装Tcpreplay(图文详解)

    可以在大家安装的Cygwin的安装目录下执行(我的这里是D:\SoftWare\cygwin) #winpcap的安装过程:|$ unzip WpdPack_4_1_2.zip|$ cp -r Wpd ...