命令查询列表:http://www.cmake.org/cmake/help/v3.2/manual/cmake-commands.7.html

#

# Official dependency number 0: CMake.

# Obviously, we must have it if we are here but test version.

#

CMAKE_MINIMUM_REQUIRED( VERSION 2.6 FATAL_ERROR )



#

# Enter some information about the project

# This is the only configurable part of the build system

#

# project name 

PROJECT( stamp )

SET (CMAKE_VERBOSE_MAKEFILE "1")



#设置编译器

SET (CMAKE_CXX_COMPILER "g++")

# 使用-Wno-deprecated-declarations -Wno-deprecated,
去掉对于gcc4.6的一些报警

SET (CMAKE_CXX_FLAGS "-std=c++0x -fPIC -Wall -O2 -DNEWARCH -DPOSIX -DPOSIX-DMONGO_HAVE_STDINT -D__STDC_LIMIT_MACROS -Wno-deprecated-declarations-Wno-deprecated")

SET (CMAKE_C_FLAGS "-fPIC -Wall -O2 -DNEWARCH -DPOSIX -DMONGO_HAVE_STDINT-fno-strict-aliasing -fwrapv -Wstrict-prototypes")

#SET (CMAKE_SHARED_LINKER_FLAGS "-L/opt/lib/python2.7/config -lpthread-ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic")

#设置路径

MESSAGE ( STATUS "**************** Release ****************" )

SET (PROJECT_ROOT_DIR "../" )

#

# The out-of-source building directory

#

#INCLUDE( "../conf/${PROJECT_NAME}.cmake" )

GET_FILENAME_COMPONENT( PROJECT_BUILD_DIR"${${PROJECT_NAME}_SOURCE_DIR}" ABSOLUTE ) #把中间路径的值赋予第一个参数

GET_FILENAME_COMPONENT( PROJECT_ROOT_DIR "${PROJECT_BUILD_DIR}/../"ABSOLUTE )

GET_FILENAME_COMPONENT( PROJECT_CMAKE_DIR"${PROJECT_BUILD_DIR}/cmake/" ABSOLUTE )



MESSAGE( STATUS "DEBUG: ${PROJECT_NAME}_SOURCE_DIR${${PROJECT_NAME}_SOURCE_DIR}" )

MESSAGE( STATUS "DEBUG: PROJECT_ROOT_DIR ${PROJECT_ROOT_DIR}" )

MESSAGE( STATUS "DEBUG: PROJECT_CMAKE_DIR ${PROJECT_CMAKE_DIR}")



#包含其他cmake

# optional cmake prepare modules

INCLUDE( "cmake/contrib.cmake" OPTIONAL )

INCLUDE( "cmake/UseBoost.cmake" OPTIONAL )

INCLUDE( "cmake/UseIce.cmake" OPTIONAL )

INCLUDE( "cmake/slice.cmake" OPTIONAL )

INCLUDE( "cmake/UsePython.cmake" OPTIONAL )





# -----------------------------------------------------------------------------------

INCLUDE_DIRECTORIES( "${PROJECT_ROOT_DIR}/src/cpp/include" )



INCLUDE_DIRECTORIES( "/opt/Python-2.7/include" )

INCLUDE_DIRECTORIES( "/opt/Python-2.7/include/python2.7" )

#INCLUDE_DIRECTORIES( "../../../../../common/BfdProto/trunk/release/tmp/proto/")

#Generate a list of files that match the <globbing-expressions> and
store it into the <variable>生成文件列表

FILE( GLOB BUILD_SRC_RECOMMEND_SOURCE"${PROJECT_ROOT_DIR}/src/cpp/common/*.cpp""${PROJECT_ROOT_DIR}/src/cpp/common/*.cc" )

FILE( GLOB BUILD_SRC_RABBIT_SOURCE"${PROJECT_ROOT_DIR}/src/cpp/stamp/*.cpp" )

FILE( GLOB BUILD_SRC_RULE_SOURCE "${PROJECT_ROOT_DIR}/src/cpp/rule_engine/*.cpp")

FILE( GLOB BUILD_SRC_OPERATOR_SOURCE"${PROJECT_ROOT_DIR}/src/cpp/modules/operator/*.cpp" )

FILE( GLOB BUILD_SRC_CACHEADAPTER_SOURCE"${PROJECT_ROOT_DIR}/src/cpp/CacheAdapter/*.cpp" )

FILE( GLOB BUILD_SRC_KAFKAADAPTER_SOURCE"${PROJECT_ROOT_DIR}/src/cpp/KafkaProducerAdapter/*.cpp" )

#ADD_LIBRARY  Adds
a library target called <name> to
be built from the source files listed in the command invocation.

# TARGET_LINK Specify
libraries or flags to use when linking a given target.

ADD_LIBRARY( operator ${BUILD_SRC_OPERATOR_SOURCE} )



ADD_LIBRARY( CacheAdapter.cm.1.0.0 SHARED ${BUILD_SRC_CACHEADAPTER_SOURCE})

TARGET_LINK_LIBRARIES( CacheAdapter.cm.1.0.0 libBfdProto.so )



ADD_LIBRARY( KafkaProducerAdapter ${BUILD_SRC_KAFKAADAPTER_SOURCE} )

TARGET_LINK_LIBRARIES( KafkaProducerAdapter libKafkaSlice.a )



ADD_LIBRARY( stampcommon ${BUILD_SRC_RECOMMEND_SOURCE} )

TARGET_LINK_LIBRARIES( stampcommon stampSlice json log4cxx

    boost_program_options ssl)



ADD_LIBRARY( rule_engine SHARED ${BUILD_SRC_RULE_SOURCE} )

TARGET_LINK_LIBRARIES( rule_engine operator python2.7 Tripod json log4cxxboost_program_options dl util pthread boost_program_options IceUtil Iceboost_thread boost_system rt m stampcommon )

 

#ADD_LIBRARY( rule_engine SHARED ${BUILD_SRC_RULE_SOURCE} )

#TARGET_LINK_LIBRARIES( rule_engine operator python2.7 Tripod json log4cxxboost_program_options dl util pthread stampcommon boost_program_options IceUtilIce boost_thread boost_system rt m librediscluster.a  )



#ADD_EXECUTABLE( stamp ${BUILD_SRC_RABBIT_SOURCE} )

ADD_LIBRARY( stamp SHARED ${BUILD_SRC_RABBIT_SOURCE} )

TARGET_LINK_LIBRARIES( stamp stampcommon util UtilCxx IceUtil Ice IceBox

    IceGrid json log4cxx boost_program_optionszookeeper_mt

CacheAdapter.cm.1.0.0 Tripod

    memcached KafkaProducerAdapterrule_engine operator protobuf ssl)



#=======================================================================================

# @@service handlers@@

# =======================================================================================



# If RELATIVE flag
is specified, the results will be returned as relative paths to the given path.

SET ( HANDLER_DIR "${PROJECT_ROOT_DIR}/src/cpp/handlers" )

FILE( GLOB HANDLERS RELATIVE "${HANDLER_DIR}""${HANDLER_DIR}/[a-zA-Z]?*")

FOREACH ( handler ${HANDLERS} )

  FILE( GLOB HANDLER_SOURCE

      "${PROJECT_ROOT_DIR}/src/cpp/handlers/${handler}/*.cpp")

  ADD_LIBRARY(${handler} SHARED"${HANDLER_SOURCE}")

  TARGET_LINK_LIBRARIES(${handler}log4cxx json boost_program_options UtilCxx zookeeper_mt libBfdProto.sostampcomm)

# The PREFIX and SUFFIX properties override the default target name prefix (such as “lib”) and
suffix (such as ”.so”)

  SET_TARGET_PROPERTIES(${handler}PROPERTIES PREFIX "")

ENDFOREACH ( handler )





#-----------------------------------------------------------------------------------

MESSAGE ( STATUS "**************** CMAKE Complete ****************")

一个Cmake的例子的更多相关文章

  1. 用一个简单的例子来理解python高阶函数

    ============================ 用一个简单的例子来理解python高阶函数 ============================ 最近在用mailx发送邮件, 写法大致如 ...

  2. Spring-Context之一:一个简单的例子

    很久之前就想系统的学习和掌握Spring框架,但是拖了很久都没有行动.现在趁着在外出差杂事不多,就花时间来由浅入深的研究下Spring框架.Spring框架这几年来已经发展成为一个巨无霸产品.从最初的 ...

  3. 高仿“点触验证码”做的一个静态Html例子

    先上源码: <html> <head> <title>TouClick - Designed By MrChu</title> <meta htt ...

  4. 关于apriori算法的一个简单的例子

    apriori算法是关联规则挖掘中很基础也很经典的一个算法,我认为很多教程出现大堆的公式不是很适合一个初学者理解.因此,本文列举一个简单的例子来演示下apriori算法的整个步骤. 下面这个表格是代表 ...

  5. 一个UWSGI的例子

    摘要:uwsgi执行顺序:启动master进程,执行python脚本的公共代码(import同一层).然后生成worker进程,uwsgi.post_fork_hook=init_functions, ...

  6. 扩展Python模块系列(二)----一个简单的例子

    本节使用一个简单的例子引出Python C/C++ API的详细使用方法.针对的是CPython的解释器. 目标:创建一个Python内建模块test,提供一个功能函数distance, 计算空间中两 ...

  7. fitnesse - 一个简单的例子(slim)

    fitnesse - 一个简单的例子(slim) 2017-09-30 目录1 编写测试代码(Fixture code)2 编写wiki page并运行  2.1 新建wikiPage  2.2 运行 ...

  8. Struts2的配置和一个简单的例子

    Struts2的配置和一个简单的例子 笔记仓库:https://github.com/nnngu/LearningNotes 简介 这篇文章主要讲如何在 IntelliJ IDEA 中使用 Strut ...

  9. 一个简单的例子搞懂ES6之Promise

    ES5中实现异步的常见方式不外乎以下几种: 1. 回调函数 2. 事件驱动 2. 自定义事件(根本上原理同事件驱动相同) 而ES6中的Promise的出现就使得异步变得非常简单.promise中的异步 ...

随机推荐

  1. ANSII 与Unicode,Utf8之间的转换

    在项目开发中,我们难免会遇到各种问题,特别是字符直接的转换,这里列举字符直间转换的代码: using namespace std; wstring AnsiiToUnicode(const strin ...

  2. 给Linux添加google搜索命令

    一次面试时,面试官问怎么在终端直接做到在百度搜索自己的名字,当时没回答出来,面试官给了提示,问http协议.答案是说telnet连接www.baidu.com之后GET 昨天偶然看到一篇博客,http ...

  3. 安装Redis无错流程

    1.参考文章<安装3.0.3版本配置文章参考>http://www.iyunv.com/thread-89612-1-1.html 2.安装tcl组件包(安装Redis需要tcl支持) 下 ...

  4. Valid Number--LeetCode

    class Solution { public: bool isNumber(string s) { if(s == " ") return false; ; ; while(s[ ...

  5. openstack私有云布署实践【6 RabbitMQ】

    生产环境建议在集群三台controller上做rabbitmq 使用到队列的openstack组件 OpenStack Compute OpenStack Block Storage OpenStac ...

  6. openstack私有云布署实践【4.2 上层代理haproxy+nginx配置 (办公网测试环境)】

    续上一节说明 一开始我也是使用haproxy来做的,但后来方式改了,是因为物理机controller的高配置有些浪费,我需要1组高可用的上层nginx代理服务器来实现其它域名80代理访问,很多办公网测 ...

  7. MySQL5.5.28启动错误 The server quit without updating PID file

    今天重新安装了一次 MySQL5.5.28 ,但启动的时候老是报错 Starting MySQL.. ERROR! The server quit without updating PID file ...

  8. hadoop参数配置

    Hadoop参数汇总 linux参数 JVM参数 Hadoop参数大全 core-default.xml hdfs-default.xml yarn-default.xml Hadoop参数汇总 @( ...

  9. 你我公益模式系统APP开发

    你我公益模式系统APP开发(微or电 158.1500.1390 小凡团队)你我公益系统开发,你我公益系统模式定制,你我公益系统开发软件,你我公益平台系统开发. 互联网世界无边无界,互联网创业者应敢于 ...

  10. 2016WHD.china世界云计算日·北京站即将召开

    WHD.china自进驻中国以来,已在上海.北京成功举办多届,2015年于北京举办的会议更是盛况空前,注册参会者逾800人次,汇聚了国内外众多知名云服务商.IDC商.电子商务企业.电信运营商.ISP等 ...