Linux makefile 模板 3.4

Linux makefile 模板 3.4http://huobumingbai.blog.51cto.com/1196746/308526

被广泛引用的博客

具体示例: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)

 

今天的文章Linux makefile 模板 3.4分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/12526.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注