Linux makefile 模板 3.4

被广泛引用的博客

具体示例:Linux下gcc与g++用法以及编写makefile_活不明白--技术用时方觉少的技术博客_51CTO博客
详细示例:Makefile经典教程(最掌握这部分足够---因为汇集全部精华)!!!!!!!!!! - 百度文库

常用模板:linux: 几个常用makefile模板_whitepop的博客-CSDN博客_makefile模板

系列:makefile 文件的编写 - kzangv - 博客园

vpath的使用:Makefile VPATH和vpath的使用 

makefile的语法:

INC

(需要的)头文件所在的路径,当需要头文件的时候会到这些目录里面去找

示例:

INC=-I../../include \
-I../../include/log  \
-I../../include/otl_mysql \
-I../../include/nl_message_queue \
-I../../include/gtest

LIBS

(需要的)动态链接库,-l指定链接谁,-L指定到哪里找

示例:

LIBS= -lpthread -lACE  -L$(ACE_ROOT)/lib -L../../../bin -L../../lib -L/usr/lib64 

CFLAGS

表示用于 C 编译器的选项,

CXXFLAGS

表示用于 C++ 编译器的选项。

使用C++11

CC_FLAG =   -fPIC -g -Wall -I${INC} -D__linux  -std=c++11

(一)生成可执行程序的makefile模板:

阅读博客之后整理

###########################################
#Makefile for simple programs
###########################################
INC=-I../../include \
	-I../../include/log  \
	-I../../include/otl_mysql \
	-I../../include/nl_message_queue \
	-I../../include/gtest

LIB= -lpthread  \
	-lACE -L../../lib/ace  \
	-llog -L../../lib \
	-lnl_message_queue -L../../lib \
	-lgtest -L../../lib/gtest

CC=g++
CC_FLAG= -fPIC   -DOTL_ODBC_UNIX -DOTL_ODBC_MYSQL -DOTL_STL
# -DOTL_ODBC  -DOTL_ODBC_UNIX  -DOTL_STL   
# -DOTL_ODBC_MYSQL 

PRG=exe
OBJ=    ./test_insert_data_to_db_otl_keep_alive.o
#all target
all:$(PRG)

$(PRG):$(OBJ)
	$(CC)  -o $@ $(OBJ)  $(LIB) 

.SUFFIXES: .c .o .cpp
.cpp.o:
	$(CC) $(CC_FLAG) $(INC) -c $*.cpp -o $*.o

.PRONY:clean
clean:
	@echo "Removing linked and compiled files......"
	rm -f $(OBJ) $(PRG)

(二)生成动态链接库的makefile模板

############################################################# 
# Makefile for shared library.
# 编译动态链接库
#############################################################
#(1)Makefile中的 符号 $@, $^, $< 的意思:
#  $@  表示目标文件
#  $^  表示所有的依赖文件
#  $<  表示第一个依赖文件
#  $?  表示比目标还要新的依赖文件列表
#
#(2)wildcard、notdir、patsubst的意思:
#
#  wildcard : 扩展通配符
#  notdir : 去除路径
#  patsubst :替换通配符


#包含的头文件
INC= -I./AMQP_include  	-I./AMQP_include/MessageQueue  

#包含的源文件
DIR_SRC = ./AMQP_src

#生成的中间文件
DIR_OBJ = 

#生成的目标文件
DIR_BIN = ./lib

#使用C编译器
#CC = gcc

#使用C++编译器
CC = g++

#-fPIC 编译成位置无关的动态库,编译成动态库时必选
#-g 表示调试模式
#-Wall 表示打印所有警告
CC_FLAG =   -fPIC -g -Wall -I${INC} -D__linux

#需要的动态链接库
LIB = ./libcentos/librabbitmq.so.4.2.0

#生成的动态链接库,位置及文件名
PRG = ./libcentos/libmq.so

SRC = ./AMQP_src
#需要的源文件
OBJ = $(SRC)/RabbitMQ_Adapter.o  $(SRC)/RabbitMQ.o

#all target
all:$(PRG)

$(PRG):$(OBJ)
	$(CC)  -shared -o $@ $(OBJ)  $(LIB) 

.SUFFIXES: .c .o .cpp
.cpp.o:
	$(CC) $(CC_FLAG) $(INC) -c $*.cpp -o $*.o
#PRONY表示伪目标文件
.PRONY:clean
clean:
	@echo "Removing linked and compiled files......"
#清楚生成的中间文件和可执行文件或动态链接库
	-rm -f $(OBJ) $(PRG)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C++程序员Carea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值