cmake编译工程列子
来源:互联网 发布:枯叶龟多少钱一只淘宝 编辑:程序博客网 时间:2024/05/21 10:26
理解:cmake是一个跨平台编译器工具,它可以生成各种编译文件。本文主要是将如何通过cmake来编译c++工程。它采取out-of-source(即中间产物与源码分离)方式。在c++中,可以认为cmake是将所有源文件.h和.cpp都放在同一个目录下,来进行编译和链接,最终生成工程。
1、工程目录结构
payment
|-----bin //生成可执行程序文件夹
|-----var //存放日志文件夹
|-----build //构建工程文件夹
|-----etc //配置文件夹
|-----include //源码.h文件夹
|-----business
|-----common
|-----src //源码.cpp文件夹
|-----business
|-----common
|------CMakeLists.txt (1)
|------CMakeLists.txt (2)
(2)的文件内容为:
#工程名字
PROJECT(PaymentService)
#cmkae最低版本,低于2.6会停止构建
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
#指定编译器和编译方式
SET(CMAKE_CXX_FLAGS "-g -std=c++11 -lpthread")
#加载.h文件,PROJECT_SOURCE_DIR为cmake自定义变量,表示工程编译的根目录
INCLUDE_DIRECTORIES(
${PROJECT_SOURCE_DIR}/include
${PROJECT_SOURCE_DIR}/include/business
${PROJECT_SOURCE_DIR}/include/common
#下面为使用第三方库需要引进的.h文件
/usr/include/pay
/usr/include/pay/wpaybl
/usr/include/pay/busiframe
/usr/include/pay/newdbdal/include
/usr/include/pay/dbdal/oracle
/usr/include/pay/route)
#表示要使用的库文件路径
LINK_DIRECTORIES(/usr/libpay)
#设置输出工程的路径
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
#添加子CMakeLists.txt路径
PROJECT(PaymentService)
#cmkae最低版本,低于2.6会停止构建
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
#指定编译器和编译方式
SET(CMAKE_CXX_FLAGS "-g -std=c++11 -lpthread")
#加载.h文件,PROJECT_SOURCE_DIR为cmake自定义变量,表示工程编译的根目录
INCLUDE_DIRECTORIES(
${PROJECT_SOURCE_DIR}/include
${PROJECT_SOURCE_DIR}/include/business
${PROJECT_SOURCE_DIR}/include/common
#下面为使用第三方库需要引进的.h文件
/usr/include/pay
/usr/include/pay/wpaybl
/usr/include/pay/busiframe
/usr/include/pay/newdbdal/include
/usr/include/pay/dbdal/oracle
/usr/include/pay/route)
#表示要使用的库文件路径
LINK_DIRECTORIES(/usr/libpay)
#设置输出工程的路径
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
#添加子CMakeLists.txt路径
ADD_SUBDIRECTORY(src)
(1)的文件内容
PROJECT(PaymentService)
AUX_SOURCE_DIRECTORY(./business SRC_BUSINESS_LIST)
AUX_SOURCE_DIRECTORY(./common SRC_COMMON_LIST)
LIST(APPEND SRC_LIST ${SRC_COMMON_LIST})
#将列表加入可执行目标的编译
ADD_EXECUTABLE(PaymentServer ${SRC_LIST})
INSTALL(TARGETS PaymentServer RUNTIME DESTINATION ${INSTALL_DIR}/bin)
#收集目录中的文件名并赋值给变量
AUX_SOURCE_DIRECTORY(. SRC_LIST)AUX_SOURCE_DIRECTORY(./business SRC_BUSINESS_LIST)
AUX_SOURCE_DIRECTORY(./common SRC_COMMON_LIST)
#文件列表操作
LIST(APPEND SRC_LIST ${SRC_BUSINESS_LIST})LIST(APPEND SRC_LIST ${SRC_COMMON_LIST})
#将列表加入可执行目标的编译
ADD_EXECUTABLE(PaymentServer ${SRC_LIST})
#设置单个可执行目标所需要连接的库
TARGET_LINK_LIBRARIES(PaymentServer libACE.so libjson_linux-gcc-4.1.2_libmt.so libprotobuf.so libcurl.so libmemcached.so libmemcachedutil.so libclntsh.so libnewdal.so liblog4cpp.so libbusiframe.a libwpaybl.a liblog4cplus.a libcpproute.a)#cmake -DCMAKE_INSTALL_PREFIX=~ ..
#设置构建的路径,控制make install是文件会安装到什么地方,默认是/usr/local
SET(INSTALL_DIR "PaymentService/Business")INSTALL(TARGETS PaymentServer RUNTIME DESTINATION ${INSTALL_DIR}/bin)
0 0
- cmake编译工程列子
- cmake编译工程实例
- 三、使用 CMAKE 编译工程
- linux下使cmake编译cuda(附列子,亲测可用)
- cmake为visual studio2015编译工程
- cmake编译文件生成android工程
- 使用cmake编译protobuf生成vs2010工程
- 新建工程并用cmake编译和安装
- 用CMake写一个简单的交叉编译测试工程
- 用CMake写一个简单的交叉编译测试工程
- Mingw+Cmake 编译qt+vt工程问题(1)
- linux下cmake编译C++工程之总结篇
- Cmake 编译opengl开源库glfw工程及使用
- AndroidStudio2.2.3版本使用CMake编译NDK工程(ffmpeg)
- windows下编译使用opencv的cmake工程
- CMake编译
- Cmake编译
- linux下编译工程(使用命令行、Makefile、cmake编译helloworld)
- 粗略应用setBoeder,JTree
- 利用easyBCD安装ubuntu双系统常见错误总结
- PostgreSQL数组使用
- 有符号数溢出的判断
- LoadRunner几个重要的概念:事务、集合点、思考时间
- cmake编译工程列子
- HDOJ 3665 Seaside【Dijkstra】【SPFA】【Floyd】
- 处理GitHub不允许上传大于100M文件问题
- 安一个家在这里。
- LoadRunner性能测试-思考时间
- 王垠的过去和现状
- java synchronized详解
- LoadRunner性能测试-Std. Deviation标准差
- Timus Online Judge 1045 Funny Game