CMake

作者: 臻甄 | 来源:发表于2020-03-18 18:08 被阅读0次

官网tutorials https://cmake.org/examples/

1 make 和 cmake

很多C++开源库下载下来要安装使用,都会有make的过程,比如glogprotobuf

  • make: cpp-->编译-->可执行文件,make就是编译的工具,且需要一个叫『makefile』的文件清晰描述如何构建程序。优点:(1)用户不需要知道构建过程,直接make即可;(2)使得改变一点点代码后重新编译整个程序变得更高效。
  • cmake:"cross platform make",顾名思义,支持跨平台make,自动根据平台识别该用什么编译器。优点:(1)CMakefile可读性强;(2)可使用make命令;(3)支持多个IDE如Xcode, Eclipse, Visual Studio, etc。

2 如何使用cmake

$> ccmake directory ## 配置编译选项,如项目目录,一般这步可省略。
$> cmake directory  ## 根据 CMakeLists.txt 生成 Makefile 文件
$> make             ## make 命令

3 CMakefile.txt

cmake要求工程 主目录源代码子目录 下都要编写CMakefile.txt文件,注意大小写。举个栗子(参考

  • 一个简单的工程
.
├── CMakelists.txt
├── include
│   └── pow.h
└── src
    ├── main.c
    └── pow.c

2 directories, 4 files

pow.h

#ifndef POW_H
#define POW_H

#include <math.h>

double calc_pow(double x, double y);

#endif

pow.c

#include "pow.h"

double calc_pow(double x, double y) {
    return pow(x, y);
}

main.c

#include <stdlib.h>
#include <stdio.h>
#include "../include/pow.h"

int main(int argc, char const *argv[])
{
    if (argc < 3) {
        printf("Error arg count!\n");
        return -1;
    }

    double result = calc_pow( atof(argv[1]), atof(argv[2]) );
    printf("pow result = %f\n", result);

    return 0;
}

CMakelists.txt

## 指定允许执行的最低 CMake 版本要求;不写会出警告
cmake_minimum_required( VERSION 2.8 )

## 指定项目的名称,通常对应于项目文件夹名
project( SAMPLE_SINGLE_DIR )

## 指定引用目录
include_directories( include )

## 自动构建源文件目录
aux_source_directory( src DIR_SRCS )

## 指定编译目标文件
add_executable( demo ${DIR_SRCS} )

## 添加链接库,相同于指定-l参数(此处没有用到)
#target_link_libraries(${PROJECT_NAME} m) #比如我们用到了libm.so(命名规则:lib+name+.so)

make一下

$ mkdir build
$ cd build/
$ cmake ..
......
-- Build files have been written to: /Users/XXOO/Documents/cmake-samples/smaple-1/build
XXOO:build$ make 
Scanning dependencies of target demo
[ 33%] Building C object CMakeFiles/demo.dir/src/main.c.o
[ 66%] Building C object CMakeFiles/demo.dir/src/pow.c.o
[100%] Linking C executable demo
[100%] Built target demo

$ ls
CMakeCache.txt    CMakeFiles    Makefile    cmake_install.cmake    demo

运行

$ ./demo
Error arg count!
$ ./demo 2 3
pow result = 8.000000
$ ./demo 3 2
pow result = 9.000000

推荐阅读:

对于CMakeFile.txt的指令解释的很齐全,又附带例子

相关文章

网友评论

      本文标题:CMake

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