一个Cmake的例子
命令查询列表: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的例子的更多相关文章
- 用一个简单的例子来理解python高阶函数
============================ 用一个简单的例子来理解python高阶函数 ============================ 最近在用mailx发送邮件, 写法大致如 ...
- Spring-Context之一:一个简单的例子
很久之前就想系统的学习和掌握Spring框架,但是拖了很久都没有行动.现在趁着在外出差杂事不多,就花时间来由浅入深的研究下Spring框架.Spring框架这几年来已经发展成为一个巨无霸产品.从最初的 ...
- 高仿“点触验证码”做的一个静态Html例子
先上源码: <html> <head> <title>TouClick - Designed By MrChu</title> <meta htt ...
- 关于apriori算法的一个简单的例子
apriori算法是关联规则挖掘中很基础也很经典的一个算法,我认为很多教程出现大堆的公式不是很适合一个初学者理解.因此,本文列举一个简单的例子来演示下apriori算法的整个步骤. 下面这个表格是代表 ...
- 一个UWSGI的例子
摘要:uwsgi执行顺序:启动master进程,执行python脚本的公共代码(import同一层).然后生成worker进程,uwsgi.post_fork_hook=init_functions, ...
- 扩展Python模块系列(二)----一个简单的例子
本节使用一个简单的例子引出Python C/C++ API的详细使用方法.针对的是CPython的解释器. 目标:创建一个Python内建模块test,提供一个功能函数distance, 计算空间中两 ...
- fitnesse - 一个简单的例子(slim)
fitnesse - 一个简单的例子(slim) 2017-09-30 目录1 编写测试代码(Fixture code)2 编写wiki page并运行 2.1 新建wikiPage 2.2 运行 ...
- Struts2的配置和一个简单的例子
Struts2的配置和一个简单的例子 笔记仓库:https://github.com/nnngu/LearningNotes 简介 这篇文章主要讲如何在 IntelliJ IDEA 中使用 Strut ...
- 一个简单的例子搞懂ES6之Promise
ES5中实现异步的常见方式不外乎以下几种: 1. 回调函数 2. 事件驱动 2. 自定义事件(根本上原理同事件驱动相同) 而ES6中的Promise的出现就使得异步变得非常简单.promise中的异步 ...
随机推荐
- MySQL的保留关键字,使用时尽量避免
今天用phpmyadmin时,注意到一个提示: 列名 'update' 是一个MySQL 保留关键字. 突然意识到还是应该尽量避免这些保留关键字,也百度了一下.找到了这些关键字,列出来下 使用mysq ...
- .net通过WCF调用java发布的服务,获取数据
功能描述 java作为后台,连接数据库获取数据,然后发布SOAP services,让.net平台通过WCF进行引用. 实现步骤 1.在项目特定文件夹下,右键->添加服务引用,输入服务的url地 ...
- matlab imshow()函数显示白色图像问题
在MATLAB中,我们常使用imshow()函数来显示图像,而此时的图像矩阵可能经过了某种运算.在MATLAB中,为了保证精度,经过了运算的图像矩阵I其数据类型会从uint8型变成double型.如果 ...
- selenium webdriver学习-怎么等待页面元素加载完成
http://blog.csdn.net/aerchi/article/details/8055913 WebDriverWait类和ExpectedCondition
- Hack写法
文章来源: http://www.w3cplus.com/css/create-css-browers-hacks 条件注释:http://www.w3cplus.com/create-an-ie-o ...
- 第五、六章:图像&链接
图像有很多存储格式:JPEG.png.gif等,它们的文件大小也不同,使用的图片类型对于页面响应速度有不同的要求.下面就会简单阐述不同的格式的图片的特点. 1.JPEG格式 JPEG格式适用于彩色照片 ...
- 【LeetCode】24. Swap Nodes in Pairs
Given a linked list, swap every two adjacent nodes and return its head. For example,Given 1->2-&g ...
- CF 604B More Cowbell#贪心
(- ̄▽ ̄)-* //把最大单独放,然后第二大的和最小的放一起,第三大的和第二小的放一起 //由此类推,求最大值,即为盒的最小值 #include<iostream> #include&l ...
- git 恢复丢失的文件
务必进入当前controller下面,才能恢复 git checkout HEAD TestController.class.php
- SharePoint 网站登录不上,3次输入用户名/密码白页、
来源于:http://www.cnblogs.com/jianyus/p/3249091.html 新搭建的SharePoint 2013环境,第一次干的这么憋屈的慌,先是接了一个Ghost的服务器, ...