cmake基础使用

目录

  • cmake基础使用
    • 介绍
    • 安装
    • 开始
    • 带有install属性的CMakeLists.txt

cmake基础使用

介绍

CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目。
通过编写CMakeLists.txt,可以控制生成的Makefile,从而控制编译过程。CMake自动生成的Makefile不仅可以通过make命令构建项目生成目标文件,还支持安装(make install)、测试安装的程序是否能正确执行(make test,或者ctest)、生成当前平台的安装包(make package)、生成源码包(make package_source)、产生Dashboard显示数据并上传等高级功能,只要在CMakeLists.txt中简单配置,就可以完成很多复杂的功能,包括写测试用例。

如果有嵌套目录,子目录下可以有自己的CMakeLists.txt。

总之,CMake是一个非常强大的编译自动配置工具,支持各种平台,KDE也是用它编译的,感兴趣的可以试用一下。

安装

ubuntu : sudo apt install cmake

开始

我这里使用的是 Visual Studio Code ,安装cmake 相关插件。

示例:

  1. 新建工程目录,用Code打开。
  2. 新建子目录如 bean,然后写一些类,例如person
  3. 新建main.cpp 及 CMakeLists.txt
    目录如下:

    .
    ├── bean
    │   ├── people.cpp
    │   └── people.h
    ├── CMakeLists.txt
    └── main.cpp

  4. CMakeLists.txt中
    #cmake最低版本需求,不加入此行会受到警告信息
    CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
    PROJECT(person) #项目名称
    #把前目录 bean 下所有源代码文件和头文件加入变量res
    AUX_SOURCE_DIRECTORY(bean res)
    #生成应用程序 person
    ADD_EXECUTABLE(person ${res})
  1. 创建build 文件夹,并进入。
    终端输入:
    cmake ..
    //生成Makefile
    make 
    //编译
    ./person
    //运行

当然,可以写一个shell脚本(我这里建立一个名为run.sh 的脚本)在build目录下,如:

#!/usr/bin
cmake ..
make
./person

然后:

    chmod +x ./run.sh
    ./run.sh

带有install属性的CMakeLists.txt

直接上了:

cmake_minimum_required(VERSION 3.2.0)
file(GLOB ff "main.cpp")
#GLOB 不能少,不然会报错
add_executable(final ${ff})
install(FILES ./build/final DESTINATION "/usr/bin/"
        PERMISSIONS WORLD_EXECUTE OWNER_WRITE OWNER_READ
        GROUP_EXECUTE GROUP_READ)
# 注意权限 普通用户也能执行的话是 WORLD_EXECUTE 

cmake .. 之后,不是 make ,而是 sudo make install 。以为复制到系统所以要sudo 权限。

你可能感兴趣的:(cmake基础使用)