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. 1.Ext.onReady详解

    转自:https://blog.csdn.net/xufang461010923/article/details/37660139 我们知道,只有在Ext框架全部加载完后才能在客户端的代码中使用Ext ...

  2. sql server 变量 字符串拼接

    参考:SQL server中null+字符串,isnull以及把查询结果赋给一个字符变量组成另一个查询语句  1.开始定义的字符串都为null.例如:declare @sql,那么@sql就是null ...

  3. hdu4975 A simple Gaussian elimination problem.(最大流+判环)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4975 题意:和hdu4888基本一样( http://www.cnblogs.com/a-clown/ ...

  4. 手机APP测试点总结(参考)

    参考链接:http://www.zengyuetian.com/?p=2305 手机APP测试点: 功能测试:多注意核心业务风险(如:注册.登录.付费.订单等) 兼容性测试:系统兼容性.硬件兼容性.软 ...

  5. 通过IDEA制作包含Java应程序的Docker镜像

    IDEA官网在IDEA中把Java App制作成Docker镜像并启动一个容器运行 在idea上使用docker作为java的开发环境[][] ubuntu+docker+docker-compose ...

  6. 暴力 ZOJ 1403 Safecracker

    题目传送门 /* 暴力:纯暴力,在家水水 */ #include <cstdio> #include <cstring> #include <algorithm> ...

  7. -Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match问题处理

    使用MyEclipse运行Maven项目时报如下错误信息: -Dmaven.multiModuleProjectDirectory system property is not set. Check ...

  8. XmlPullParser简单教程

    官网: http://www.xmlpull.org 本文参考 : http://www.xmlpull.org/v1/download/unpacked/doc/quick_intro.html 1 ...

  9. java中什么包不需要导入

    java中Math.random()*10;在math包中不需要导入: 即import java.lang.Math; 即lang下的所有包都不需要导入.

  10. vue.js学习参考手册

    参考手册 示例:www.51siyuan.cn/161.html