Cmake 简单使用

作者: rmrfany | 来源:发表于2018-12-23 11:02 被阅读62次

一. CMake编译原理

  CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多。CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用make命令编译源码生成可执行程序或共享库(so(shared object))。因此CMake的编译基本就两个步骤:

cmake
make

  cmake 指向CMakeLists.txt所在的目录,例如cmake .. /表示CMakeLists.txt在当前目录的上一级目录。cmake后会生成很多编译的中间文件以及makefile文件,所以一般建议新建一个新的目录,专门用来编译,例如:

mkdir build
cd build
cmake ../
make

make根据生成makefile文件,编译程序。

二. CMakeLists.txt文件编写

#表示注释   
#cmake file for project association

#cmake 最低版本要求,低于2.8 构建过程会被终止。   
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

#定义工程名称
PROJECT(association)
                     
#打印相关消息消息   
#MESSAGE(STATUS "Project: ${PROJECT_NAME}")
#MESSAGE(STATUS "Project Directory: ${PROJECT_SOURCE_DIR}")  

#指定编译类型debug版
SET(CMAKE_BUILE_TYPE DEBUG)
#发行版
#SET(CMAKE_BUILE_TYPE RELEASE)

#SET(CMAKE_C_FLAGS_DEBUG "-g -Wall")          #C
#SET(CMAKE_CXX_FLAGS_DEBUG "-g -Wall")           #C++

#设置C++ 编译
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -s -Wall -W -O3")   
 
#添加子目录   
ADD_SUBDIRECTORY(src/include)

#设置变量,表示所有的源文件  
SET(SOURCE_FILES
    src/main.cpp    
    )


#配置相关库文件的目录,  
LINK_DIRECTORIES(                                  
    /usr/local/lib
    )  

#找BZip2
FIND_PACKAGE(BZip2)
if (BZIP2_FOUND)
    MESSAGE(STATUS "${BZIP_INCLUDE_DIRS}")  
    MESSAGE(STATUS " ${BZIP2_LIBRARIES}")  
endif (BZIP2_FOUND)
if (NOT BZIP2_FOUND)
    MESSAGE(STATUS "NOT  BZIP2_FOUND")  
endif (NOT  BZIP2_FOUND)


#相关头文件的目录
INCLUDE_DIRECTORIES(  
     /usr/local/include  
     ${PROJECT_SOURCE_DIR}/utility_inc
     ${BZIP_INCLUDE_DIRS}
    )

#链接库
LINK_LIBRARIES(
    ${PROJECT_SOURCE_DIR}/static_libs/libSentinelKeys64.a
    ${BZIP2_LIBRARIES}
    )

#生成可执行文件
ADD_EXECUTABLE(${PROJECT_NAME} ${SOURCE_FILES})

#依赖的库文件  
TARGET_LINK_LIBRARIES(${PROJECT_NAME} eventloop)

三. 子目录CMakeLists.txt文件编写

SET(EVENTLOOP_SOURCE_FILES
        tool/BlockingQueue.hpp
        tool/Copyable.h
        tool/ExecuteState.h
        tool/Likely.h
        EventLoop.h
        EventLoop.cpp
        )
#生成静态链接库eventloop 
ADD_LIBRARY(eventloop ${EVENTLOOP_SOURCE_FILES})

相关文章

  • Cmake 简单使用

    一. CMake编译原理   CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多。CMake主...

  • 简单cmake使用

    1.安装CMake sudo apt install cmake安装完成后,在终端下输入cmake -versio...

  • CMake 简介和 CMake 模板

    转载自我的博客:CMake 简介和 CMake 模板。 如果你用 Linux 操作系统,使用 cmake 会简单很...

  • android cmake 简介

    一、简单介绍 a、在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下: 二、简单使用...

  • jni开发入门

    jni开发流程 这里使用Cmake方式,简单方便(需要AS2.2以上)1.准备环境 下载NDK、CMake、LLD...

  • [Note] CMake的简单使用

    当前环境 macOS 和 cmake 3.9.4 一 gcc, make, cmake 的区别 gcc 是一个编译...

  • cmake学习笔记6-catkin的CmakeList.txt讲

    引用cmake学习笔记-cmakelist.txt创建项目示例cmake的介绍和使用 Cmake实践推荐cmake...

  • cmake初探

    本文主要是希望通过使用cmake构建一个简单的工程,来学习cmake的一些指令存在如下的目录结构,其中includ...

  • Android studio 2.2 JNI ffmpeg 简单

    背景 在上一次的初次使用cmake编译jni后,这次cmake文件再次升级。利用网上的代码来编译一个简单的播放器。...

  • CMake+Qt

    如何在Qt中使用CMake CMake官方文档在地址[https://cmake.org/documentatio...

网友评论

    本文标题:Cmake 简单使用

    本文链接:https://www.haomeiwen.com/subject/wxzykqtx.html