命令查询列表: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 ****************")

转载于:https://www.cnblogs.com/catkins/p/5270375.html

一个Cmake的例子相关推荐

  1. 一个简单的例子学会github repository的webhook

    2019独角兽企业重金招聘Python工程师标准>>> github的webhook是个有用的功能,允许开发人员指定一个服务器的url.当开发者对github仓库施加操作,比如提交代 ...

  2. .net中的对象序列化(1): 序列化是什么, 以及一个简单的例子

    1. 为什么需要序列化,什么是序列化 对于一个程序来说, 使用到的对象都是存在于内存中的.如果想保存这些对象的运行时状态, 或者需要在不同进程或者网络间传递对象,就需要序列化. 序列化就是讲运行中的对 ...

  3. 一个具体的例子学习Java volatile关键字

    相信大多数Java程序员都学习过volatile这个关键字的用法.百度百科上对volatile的定义: volatile是一个类型修饰符(type specifier),被设计用来修饰被不同线程访问和 ...

  4. 一个简单的例子看java线程机制

    一个简单的例子看java线程机制 作者: zyf0808 发表日期: 2006-03-26 11:20 文章属性: 原创 复制链接 import java.util.*; public class T ...

  5. Cassandra使用 —— 一个气象站的例子

    使用场景: Cassandra非常适合存储时序类型的数据,本文我们使用一个气象站的例子(该气象站每分钟需要存储一条温度数据). 一.方案1:每个设备占用一行 这个方案的思路就是给每个数据源创建一行,比 ...

  6. blockchain 区块链200行代码:在JavaScript实现的一个简单的例子

    blockchain 区块链200行代码:在JavaScript实现的一个简单的例子 了解blockchain的概念很简单(区块链,交易链块):它是分布式的(即不是放置在同一台机器上,不同的网络设备上 ...

  7. 多态性与虚拟函数一个典型的例子第一步

    **#include <iostream> #include <strings.h> #include <cstring>using namespace std; ...

  8. ​【Python基础】告别枯燥,60 秒学会一个 Python 小例子(文末下载)

    本文推荐一个python的傻瓜式的学习资源,内容简单易懂,让人可以在60 秒学会一个 Python 小例子 当前库已有 300多 个实用的小例子 本文来源:https://github.com/jac ...

  9. pycharm安装scrapy失败_Scrapy ——环境搭配与一个简单的例子

    在我刚接触爬虫的时候就已经听过Scrapy大名了,据说是一个很厉害的爬虫框架,不过那个时候沉迷于Java爬虫.现在终于要来揭开它神秘的面纱了,来一起学习一下吧 欢迎关注公众号:老白和他的爬虫 1.环境 ...

最新文章

  1. 如何让网站打开更快第三弹--开启压缩篇
  2. Java数组实现循环队列的两种方法
  3. spring原始注解开发-01
  4. 项目实战之服务端分页的实现——SQL
  5. python目录操作_Python 简明教程 --- 25,Python 目录操作
  6. 给你看一下真实的后浪...
  7. 编译原理第三版 作业一
  8. 微信小程序商城毕业设计毕设作品(8)毕业设计论文
  9. 递推和递归:一个自下而上,一个自上而下
  10. java label 位置_java 怎样设置label的位置
  11. android 图片加载 软引用_Android 异步加载网络图片并缓存到本地 软引用 学习分享(转)...
  12. DNS域名劫持的几种解决方法
  13. 游戏抽奖界面html,基于JavaScript实现幸运抽奖页面
  14. 华为手机的不明照片是哪来的?这几个设置得关闭,否则128G也不够
  15. [奥塔在线]JAVA启蒙:WIN10下的JDK环境部署
  16. Chrome 和 Chromium 区别
  17. ipadmini5远程服务器,为什么iPadmini5被称为“等等党的耻辱”?原因可以分为3点!...
  18. xfs和ext4文件系统大小调整
  19. unity接入facebook SDK时 警告:“OpenSSL not found. Make sure that OpenSSL is installed
  20. 《涨知识啦19》---HEMT 的电流崩塌效应

热门文章

  1. 约瑟夫环问题(顺序表和单向链表)
  2. 最长公共子序列LCS(动态规划)—详解
  3. 深入谷歌开源项目【1】 - Camer2 - 环境搭建和源码编译
  4. 易方机器人教育怎么样_定州3岁以上儿童机器人教学多少钱
  5. git 32位_完整的GIT笔记 快速上手小白教程
  6. java面向对象的多态_java面向对象(五)之多态
  7. java string sscanf_倾情奉献——JAVA sscanf函数!!!
  8. flink sql 部署_在FlinkSQL中使用SQL client时,如何使用 query配置?
  9. 在…视域下是什么意思_电影中出现的出品人是什么意思?你需要了解下
  10. 3项目里面全局用less变量 cli vue_vue-cli3配置使用vw实现移动端适配案例