掌握CMake基础:从零开始实战编译工程

一、CMake简介

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为CMakeLists.txt。

Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再以一般的建构方式使用。可以通过CMake官方网站获得更多关于cmake 的信息。

可以理解为,编写Makefile难度太大,CMake基于Makefile做了二次开发。

1.1、cmake 的特点

    1    开放源代码,使用类BSD 许可发布。

    2    跨平台,并可生成native 编译配置文件,在Linux/Unix 平台,生成 makefile,在苹果平台,可以生成xcode,在 Windows 平台,可以生成 MSVC 的工程文件。

    3    能够管理大型项目,KDE4 就是最好的证明。

    4    简化编译构建过程和编译过程。Cmake 的工具链非常简单:cmake+make。

    5    高效率,CMake 构建KDE4 的 kdelibs 要比使用autotools 来构建KDE3.5.6 的 kdelibs 快40%,主要是因为 Cmake 在工具链中没有libtool。

    6    可扩展,可以为cmake 编写特定功能的模块,扩充cmake 功能。

1.2、注意

    1    cmake 很简单,但绝对没有想象中那么简单,简单是相对Makefile而言的。

    2    cmake 编写的过程实际上是编程的过程,跟使用autotools 一样,不过需要编写的是CMakeLists.txt(每个目录一个),使用的是cmake 语言和语法。

    3    cmake 跟已有体系的配合并不是特别理想,比如pkgconfig。

1.3、使用建议

    1    如果工程只有几个文件,直接编写Makefile 是最好的选择。

    2    如果使用的是C/C++/Java 之外的语言,建议不要使用cmake。

    3    如果使用的语言有非常完备的构建体系,比如java 的 ant,也不需要学习cmake。

    4    如果项目已经采用了非常完备的工程管理工具,并且不存在维护问题,没有必要迁移到 cmake。

    5    如果仅仅使用qt 编程,没有必要使用 cmake,因为qmake 管理 Qt 工程的专业性和自动化程度比cmake 要高很多。

二、安装 cmake

我当前的CMake版本:

$ cmake --version

cmake version 3.5.1

 

CMake suite maintained and supported by Kitware (kitware.com/cmake).

有些项目有最低版本要求,如果版本过低,可能项目会编译不了,可以升级CMake。

(1)卸载已经安装的旧版的CMake[非必需]。

sudo apt-get autoremove cmake

(2)下载CMake压缩包。

wget https://cmake.org/files/v3.21/cmake-3.21.3-linux-x86_64.tar.gz

(3)解压压缩包。

tar zxvf cmake-3.21.3-linux-x86_64.tar.gz

查看解压后目录:

cmake-3.21.3-linux-x86_64

├── bin

│   ├── ccmake

│   ├── cmake

│   ├── cmake-gui

│   ├── cpack

│   └── ctest

├── doc

│   └── cmake

├── man

│   ├── man1

│   └── man7

└── share

    ├── aclocal

    ├── applications

    ├── bash-completion

    ├── cmake-3.21

    ├── emacs

    ├── icons

    ├── mime

    └── vim

 

15 directories, 5 files

bin下面有各种cmake家族的产品程序。

(4)创建软链接。

注意,文件路径是可以指定的, 一般选择在/opt 或 /usr 路径下, 这里选择/opt 。

sudo mv cmake-3.21.3-Linux-x86_64 /opt/cmake-3.21.3

sudo ln -sf /opt/cmake-3.21.3/bin/*  /usr/bin/

检查版本号:

$ cmake --version

cmake version 3.21.3

 

CMake suite maintained and supported by Kitware (kitware.com/cmake).

三、CMake的简单使用

3.1、准备工作

(1)首先,建立一个文件夹,用来存放工程文件。

cd cmake

mkdir t1

cd t1

(2)在 t1 目录建立main.c 和 CMakeLists.txt(注意文件名大小写):

main.c 文件内容:

//main.c

#include <stdio.h>

int main()

{

    printf(“Hello World from t1 Main!\n”); 

    return 0;

}

CMakeLists.txt 文件内容:

PROJECT(HELLO)

SET(SRC_LIST main.c)

MESSAGE(STATUS "This is BINARY dir " ${HELLO_BINARY_DIR})

MESSAGE(STATUS "This is SOURCE dir "${HELLO_SOURCE_DIR})

ADD_EXECUTABLE(hello ${SRC_LIST})

ADD_EXECUTABLE(hello2 ${SRC_LIST})

关于CMakeLists.txt 文件内容的语法,后面会做详细说明。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值