C++ makefile 学习

项目所在路径
/ide/c_cpp/workspace/community_cpp

项目目录结构
-Debug
-src
-thrift
-thrift_cpp
Makefile


BASE_DIR = /ide/c_cpp/workspace/community_cpp
SRC_DIR = "$(BASE_DIR)/src"
THRIFT_GEN_DIR = "$(BASE_DIR)/thrift_cpp"

THRIFT_DIR = "/usr/local/include/thrift"
MONGO_DIR = "/opt/include"


I_REF = -I$(SRC_DIR) -I$(THRIFT_GEN_DIR) -I$(THRIFT_DIR) -I$(MONGO_DIR)

SUBDIR = src
SUBSRC = $(shell find $(SUBDIR) -mindepth 2 -name '*.cpp')
SUBSRC_ROOT = $(shell find $(SUBDIR) -maxdepth 1 -name '*.cpp')

THRIFT_GEN_CPP_SRC = $(shell find thrift_cpp -name '*.cpp')

default: server
server: src/community_cpp.cpp
g++ -DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H -Wall -g -o "community_service_cpp" $(I_REF) $(SUBSRC) $(SUBSRC_ROOT) $(THRIFT_GEN_CPP_SRC) -lthrift -lthriftnb -levent -lboost_thread-mt -lmongoclient -lboost_filesystem


解释
line 1: 定义项目路径
line 2: 定义源文件所在路径
line 3: 定义项目用到的thrift生成的源文件路径。

line 5: 定义thrift的安装路径。
line 6: 定义MongoDB的安装路径。


line 9: 根据路径,-I(即include)头文件。

line 11:定义所有头文件的路径。
line 12:使用shell脚本,从SUBSRC开始,寻找目录深度为2的所有后缀名为cpp的文件。
line 13:使用shell脚本,从SUBSRC开始,寻找目录深度为1的所有后缀名为cpp的文件。

line 15:使用shell脚本,从thrift_cpp开始,寻找thrift生成的所有后缀名为cpp的文件。

line 17:定义server
line 18:定义main方法所在cpp文件
line 19:g++开始编译cpp文件。
g++ 详解
-DHAVE_INTTYPES_H 引入C99加入的inttypes头文件,定义一些int的标准长度。thrift0.8需要加入,thrift0.7不用。
-DHAVE_NETINET_IN_H 引入netinet头文件,解决互联网地址族。thrift0.8需要加入,thrift0.7不用。
-Wall 一般使用该选项,允许发出GCC能够提供的所有有用的警告。
-g 调试选项,只是编译器,在编译的时候,产生调试信息,(默认为g2)。
-o 制定目标名称, "community_service_cpp" 编译后的可执行文件名。
$(I_REF) 文件路径
-l 链接库名 lib*.a。例如:-lthrift 链接thrift的.a文件,全名为libthrift.a。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值