cmake linux模板 多目录_CMake,大型项目采用的构建工具

本文详细介绍了CMake的基本用法和优势,包括如何进行外部构建以保持源代码目录整洁。通过一个简单的例子展示了如何组织一个多目录的工程结构,包括src、doc等子目录,以及如何通过CMakeLists.txt文件控制编译过程和安装路径。
摘要由CSDN通过智能技术生成

点击蓝字

关注我们

        本篇文章主要描述CMake的基本用法。在之前的文件中我对Makefile,Autotools这两个构建工具。相关文章如下:

  • 《linux下,Makefile是啥??》

  • 《实战Makefile前,该知道那些知识?》

  • 《Makefile的实战例子》

  • 《autotools及Yocto下通过autotools编译》

之前对这两个工具进行了描述,其中autotools最终的目的为了实现Makefile。在上一篇文章中我们介绍了autotools工具的时候说到,他是为了解决 Makefile复杂的语法结构的问题。使其更加方便。 不过就是有这么一堆大神觉得autotools还是有一些问题。所以这一堆整天闲着没事做的大神,就在思考如何优化这些问题。所以另外一个工具就产生了-- CMake 。 CMake的最终目的也是生成Makefile。所以建议学习这两个工具之前,先学习一下Makefile的内容。不过在此声明,不要因为CMake的出现,就不学Makefile和autotools。他们三者没有最好的,而是应该看应用场合,然后再去选择。比如只有几个文件的构建,使用Makefile是最好的选择。而autotools和CMake大多都是应用在大型的项目上。接下来讲讲新工具: 1c34c4aab48d90f5e0aa07e6dbffef0c.png CMake的特点 1c34c4aab48d90f5e0aa07e6dbffef0c.png
  • 开放源代码。

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

  • 能够管理大型项目。

  • 简化编译构建过程和编译过程,工具链也非常简单:cmake+make。

  • 高效率,比autotools效率快。主要原因:CMake在工具链中没有libtool。

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

15048ce11080098ea823a16a91773bf9.png 如何使用CMake编译工程 15048ce11080098ea823a16a91773bf9.png

一个简单的cmake例子只需要两个文件:CMakeLists.txt和main.c。我们准备一下这两个文件。其中main.c是我们要编译的源文件,CMakeLists.txt是关键,他就是告诉cmake如何编译。可以理解为编译的规则。接下来我们来初体验:

main.c:

include "stdio.h"int main(int argc, char *argv[]){
            printf("Rice CMake!!!\n");        return 0;}

CMakeLists.txt:

PROJECT(RICE)SET(SRC_LIST main.c)MESSAGE(STATUS "THIS IS BINARY DIR " ${PROJECT_BINARY_DIR})MESSAGE(STATUS "THIS IS SOURCE DIR " ${PROJECT_SOURCE_DIR})ADD_EXECUTABLE(rice ${SRC_LIST})

注意:CMakeLists.txt文件名的规范,注意大小写,否则编译不过。

编译测试 :首相执行命令 cmake . 命令,该命令会根据CMakeLists.txt的规则构建出Makefile,然后执行 make 命令,生成可执行程序,然后运行 ./rice 查看结果:
rice@rice:~/rice_file/cmake$ cm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值