CMAKE学习——初识CMAKE

本文详细介绍了CMAKE的学习过程,包括CMAKE的基本语法和使用,从hello,cmake开始,涵盖内部和外部构建,库的编译与安装,使用外部库,以及解决常见问题。通过实例演示了CMakeLists.txt的编写,展示了CMAKE在项目管理中的应用。
摘要由CSDN通过智能技术生成

cmake简介

cmake是一个开源,跨平台的软件构建工具,简单来说目的就是根据平台自动生成Makefile的,减少了手动编写Makefile的工作量。具有相同功能的另一个工具,就是autotools。但是cmake相比较于autotools,出现得更晚,解决了autotools工具的许多问题。

本文的目的,在于通过实践,了解cmake的基本语法和基本使用。

1. hello,cmake

1.1 编写源码

源码如下:

include <stdio.h>

int main()
{
   
        printf("hello, cmake\n");
        return 0;
}

1.2 编写CMakeLists.txt

CMakeList记录了如何生成Makefile的信息,编写如下

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})

PROJECT

PROJECT(projectname [CXX] [C] [Java])

指定工程名称(projectname)为HELLO,这条指令同时定义了两个cmake变量:_BINARY_DIR 和 _SOURCE_DIR为,前者指构建所在目录,而后者指源码所在目录。

SET

SET(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])

显示定义变量,这里是指设置变量SRC_LIST为main.c,当然可以指定多个源文件

cmkake中引用变量的方式为${变量名}

MESSAGE

MESSAGE([SEND_ERROR | STATUS | FATAL_ERROR] "message to display" ...)

ADD_EXECUTABLE

定义了这个工程会生成一个文件名为hello的可执行文件,相关的源文件为SRC_LIST中定义的源文件列表。

其实当前CMakeLists.txt可以简化为如下的形式:

PROJECT(HELLO)
ADD_EXECUTABLE(hello main.c)

1.3 cmake && make

(1)生成Makefile

cmake .

cmake后的 . 异地为指定当前目录为CMakeLists.txt所在的目录,它会在指定的目录下寻找CMakeLists.txt,并在cmake执行所在目录下生成Makefile
在这里插入图片描述

可以看到在当前目录下得到了Makefile以及用于生成Makefile所得到的中间文件,可以将它们全部删除,只保留Makefile和源码。
(2)构建

make

顺利构建,并在当前目录下得到了可执行文件hello
在这里插入图片描述

hello正常运

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值