命令查询列表: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. NIC Bonding: 2 nic port as 1 interface

    The following is concluded from here. Consider we have 2 interfaces: eth0 & eth1 bond the two in ...

  2. 找回误删除的UBUNTU16.04桌面壁纸图片,或把桌面背景图片另存。20170114

    今天遇到一个小问题,之前下载并设置为桌面壁纸的一张图片在整理文件的时候不小心删除了.由于想不起来当时从哪里找到的图,所以就想把当前桌面壁纸重新保存.经网上查询,未见正确的保存方法,故写在此处备忘. 1 ...

  3. 二十、oracle pl/sql基础

    一.pl/sql developer开发工具pl/sql developer是用于开发pl/sql块的集成开发环境(ide),它是一个独立的产品,而不是oracle的一个附带品. 二.pl/sql介绍 ...

  4. ES 集群调整、升级 最佳实践

    日常应用中我们会经常对es 集群做一些参数调整或者升级版本,但是每次关闭节点再打开 其中的数据同步的痛苦估计有很多人领悟过(有可能出现IO或者网络拥堵导致恶性循环)官网有套方案可以尝试一下: 1.关掉 ...

  5. 2016 Technology

    rem 62.5%在chrome谷歌和其他浏览器不一样 http://www.5imoban.net/jiaocheng/div+css/201512191529.html http://blog.c ...

  6. ASP.NET Page执行顺序

    using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...

  7. 《JS权威指南学习总结--7.9 ES5中的数组方法》

    内容要点: ES5中定义了9个新的数组方法来遍历.映射.过滤.检测.简化和搜索数组. 概述:首先,大多数方法的第一个参数接收一个函数,并且对数组的每个元素(或一个元素)调用一次该函数. 如果是稀疏数组 ...

  8. PAT 团体程序设计天梯赛-练习集 L2-003. 月饼

    月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意:销售时允许取出一部分库存.样 ...

  9. Linux 抓包命令

    可使用如下命令,在Linux系统上进行抓包命令 tcpdump -n -i eth0 tcp port and host 192.168.9.45 -w ./filename.cap 说明: eth0 ...

  10. NSConditionLock

    一.NSConditionLock定义了一个可以指定条件的互斥锁,用于线程之间的互斥与同步. 这里的条件并不是bool表达式中的条件,而是一个特定的int值. 二.NSConditionLock的AP ...