C++ makefile 学习_C/C++_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > C/C++ > C++ makefile 学习

C++ makefile 学习

 2012/6/11 0:14:23  amornio19840908  程序员俱乐部  我要评论(0)
  • 摘要:项目所在路径/ide/c_cpp/workspace/community_cpp项目目录结构-Debug-src-thrift-thrift_cppMakefileBASE_DIR=/ide/c_cpp/workspace/community_cppSRC_DIR="$(BASE_DIR)/src"THRIFT_GEN_DIR="$(BASE_DIR
  • 标签:file 学习 c++ Make
项目所在路径
/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。
发表评论
用户名: 匿名