被广泛引用的博客
具体示例: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
(一)生成可执行程序的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