项目所在路径
/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。
分享到:
相关推荐
在IT行业中,Linux和C/C++是至关...总之,Linux、C/C++以及Makefile是IT领域的基础技能,它们相互结合,为高效、可靠的软件开发提供了强大的工具集。不断学习和实践这些技术,将有助于你在IT行业中建立起坚实的基础。
在Unix环境下进行C++开发,`Makefile`是不可或缺的一部分,它能自动化编译、链接等过程,提高工作效率。本文将深入探讨如何配置和使用`Makefile`来管理C++项目。 首先,我们需要理解`Makefile`的基本结构。一个`...
以下详细阐述了make以及makefile的学习要点: 1. Makefile概述 Makefile是一个脚本文件,其中包含了编译和链接项目所需的各种规则。它描述了项目中哪些文件需要先编译,哪些文件需要后编译,哪些文件依赖于其他文件...
学习Makefile不仅是掌握其语法,更重要的是理解其背后的编译和链接机制。通过合理组织Makefile,可以高效地管理和自动化复杂的构建过程。对于程序员来说,了解Makefile是走向专业化的必经之路。特别是当涉及到跨平台...
【跟我一起学写Makefile】 Makefile是Unix和类Unix操作系统中用于自动化构建软件的文本文件,...学习编写Makefile不仅有助于理解编译和链接过程,还能提升项目管理和自动化能力,是成为一名专业程序员不可或缺的技能。
8. **C/C++编程与Makefile**:在C或C++项目中,Makefile通常用于管理编译过程,包括预处理、编译、链接等步骤。通过设置编译标志,可以控制优化级别、调试信息和警告等级。 9. **Linux面试中的Makefile**:在Linux...
《makefile学习三件套 电子书》是一个针对makefile技术的综合学习资源,它包含了三个核心部分:《gnu make》、《GNU make中文手册》和《跟我一起写Makefile》。这些文档旨在帮助读者深入理解和掌握makefile的编写与...
《跟我一起学Makefile》是一本专注于Makefile编写和使用的指南。...Makefile的学习和使用是一个逐渐积累和深入的过程,本书《跟我一起学Makefile》为初学者和有经验的开发者提供了一个非常好的学习资源。
在本项目"强化学习简单实现(C++)"中,开发者使用C++编程语言在Ubuntu 16.06环境下实现了一个基础的强化学习算法。下面我们将详细探讨强化学习的基本概念、C++在强化学习中的应用以及如何在Ubuntu环境下进行开发。 ...
### Makefile经典教程知识点梳理 #### 一、Makefile概览 ...通过以上内容的学习,您可以更好地理解Makefile的基本概念及其在软件开发过程中的重要作用,并掌握如何编写有效的Makefile来提高软件项目的构建效率。
【Makefile文件】是软件构建过程中的核心配置文件,它定义了项目的编译规则、依赖关系以及各种构建任务。...通过不断地学习和实践,开发者可以创建出更加高效和灵活的Makefile,以适应各种复杂的项目需求。
标题中的"C++写的机器学习库"指的是一个使用C++编程语言开发的专门用于机器学习的软件库。在计算机科学领域,机器学习是一种人工智能分支,它允许计算机系统通过数据学习和改进,而无需显式编程。C++作为一种高效、...
学习使用命令编译C++,使编译更快 学习使用命令编译C++,使编译更快 学习使用命令编译C++,使编译更快
标题中提到的“Makefile教程”是指关于Makefile的学习资料,而“Makefile快速学习资料”说明本资料是为快速掌握Makefile编写的入门级教程。Makefile是Unix系统中的一个工具程序,主要用于软件开发中的自动化编译。它...
**Makefile** 是一种自动化构建工具,在软件开发过程中极为常见,尤其是在 C 和 C++ 的项目中。它能够通过定义一系列规则来自动编译源代码,并管理整个项目的构建流程。本教程将深入探讨 Makefile 的基础知识及其...
通过学习和理解`makefile`,程序员不仅可以更好地组织和管理代码,还能提升大型项目的构建效率,这对于成为一名专业的Linux C程序员来说是必不可少的技能。因此,深入学习`makefile`的编写规则和实践是每个Linux C...
【Makefile学习笔记1】 Makefile是Unix环境下用于自动化编译和链接的脚本文件,它可以帮助开发者管理和构建复杂的C/C++项目。本篇笔记主要探讨Makefile在满足可重用性、易用性和全面覆盖性等需求时的实现方法。 ##...
在C++编程中,信号与槽机制是一种...通过分析并理解项目中的源代码,我们可以学习到如何创建、发射信号,定义槽函数,以及如何使用Makefile进行项目的构建。这对于理解和应用C++的事件驱动编程以及Qt框架有极大的帮助。
make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。