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. Create

    BOOL Create(LPCTSTR lpszClassName,LPCTSTR lpszWindowName, DWORD dwStyle,const RECT& rect,CWnd* p ...

  2. java获取操作系统的MAC地址和硬盘序列号

    1.判断操作系统是Windows还是Linux private static Boolean isLinux() { String os = System.getProperty("os.n ...

  3. E20170514-ts

    yield  n. 产量,产额; moldule  n. 模块; 组件;  exception n 例外 except  prep. 除…外;  vt. 把…除外; 不计 accessor  存取器; ...

  4. 【插件开发】—— 12 GEF入门

    介绍 前面也简单的介绍了一下插件开发的相关知识,下面主要就介绍一下GEF的相关使用.由于最近使用到编辑器这部分的操作,因此就跳过其他的内容,先介绍下GEF的相关知识. 前文回顾 1 插件学习篇 2 简 ...

  5. (DP ST表 线段树)51NOD 1174 区间中最大的数

    给出一个有N个数的序列,编号0 - N - 1.进行Q次查询,查询编号i至j的所有数中,最大的数是多少.   例如: 1 7 6 3 1.i = 1, j = 3,对应的数为7 6 3,最大的数为7. ...

  6. 原生JavaScript之深度克隆

    先看一下克隆成功后的结果 深度克隆就是将obj的属性克隆到obj1上面,并且在obj上面修改属性不影响obj1上面的属性. 1.先把所有的值都遍历一遍(看是引用值和原始值)用for ( var pro ...

  7. nginx_uWSGI_django_virtualenv_supervisor发布web服务器

    nginx_uWSGI_django_virtualenv_supervisor发布web服务器 nginx 导论 123456789101112131415161718192021222324252 ...

  8. ROS学习笔记十二:使用gazebo在ROS中仿真

    想要在ROS系统中对我们的机器人进行仿真,需要使用gazebo. gazebo是一种适用于复杂室内多机器人和室外环境的仿真环境.它能够在三维环境中对多个机器人.传感器及物体进行仿真,产生实际传感器反馈 ...

  9. 题解报告:hdu 1431 素数回文

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1431 Problem Description xiaoou33对既是素数又是回文的数特别感兴趣.比如说 ...

  10. Robot Framework and Ride

    Robot framework是诺西(NSN)开源的一套自动化测试工具,在通信设备自动化测试中很实用,它基于Python开发,主要模拟NMS网管配置数据到网元NODE,并读取配置看配置是否生效,ECI ...