CMake

CMake

CMake是一个项目构建工具,是跨平台的。CMake允许开发者指定整个工程的编译流程,并根据编译平台,自动生成本地化的Makefile和工程文件,最后用户只需make编译即可,可以把CMake当作自动生成Makefile的工具,编译流程如下:

image-20230309130644912

CMake优点

  • 跨平台
  • 能够管理大型项目
  • 简化编译构建过程和编译过程
  • 可扩展,可以为cmake编写特定功能的模块,扩充cmake功能

CMake的使用

CMake支持大写、小写、混合大小写的命令

  • 注释:##[[]]

    # 行注释
    
    #[[块
    注
    释]]
    
    
  • cmake CMakeLists.txt所在路径:在当前路径./build执行cmake ..命令后生成了一个Makefile文件,在执行make命令,就可以对项目进行构建得到所需的可执行程序(默认可执行程序生成在./build目录下)

    .
    ├── CMakeLists.txt
    ├── add.c
    ├── build
    │   ├── CMakeCache.txt
    │   ├── CMakeFiles
    │   ├── Makefile
    │   └── cmake_install.cmake
    ├── head.h
    ├── main.c
    └── sub.c
    

    在执行cmake命令时指定宏的值:cmake CMakeLists.txt路径 -DCMAKE_CXX_STANDARD=11

  • cmake_minimum_required(VERSION 3.0):指定使用的cmake最低版本

  • project:定义工程名称,并可指定工程的版本、工程描述、web主页地址、支持的语言

    project(<PROJECT-NAME> [<language-name>...])
    project(<PROJECT-NAME>
           [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]
           [DESCRIPTION <project-description-string>]
           [HOMEPAGE_URL <url-string>]
           [LANGUAGES <language-name>...])
           
    project(csapp)
    
  • add_executable(可执行程序名 源文件名称):生成一个可执行程序,源文件可以有多个,并用空格或;间隔

  • set:定义变量or设置宏or拼接字符串

    set(变量名 [变量值] [CACHE TYPE DOCSTRING [FORCE]])
    
    # 定义变量
    set(SRC_LIST main.c;add.c;sub.c)
    add_executable(app ${SRC_LIST})
    
    # 设置宏CMAKE_CXX_STANDARD的值指定cxx版本
    set(CMAKE_CXX_STANDARD 11)
    
    # 设置宏EXECUTABLE_OUTPUT_PATH的值指定可执行程序输出路径,如果此路径不存在,会自动生成
    # 由于可执行程序是基于cmake命令生成的makefile文件然后再执行make命令得到的,此处的相对路径./是makefile所在目录
    set(EXECUTABLE_OUTPUT_PATH ../bin)
    
    # 拼接字符串,将从第二个参数开始往后所有的字符串进行拼接,最后将结果存储到第一个参数中,如果第一个参数中原来有数据会对原数据就行覆盖
    set(变量名1 ${变量名1} ${变量名2})
    
  • aux_source_directory:查找指定路径下的所有源文件

    aux_source_directory(<要搜索的目录> <将要搜索的目录下搜索到的源文件列表存储到该变量中>)
    
    CMAKE_CURRENT_SOURCE_DIR:宏表示当前访问的CMakeLists.txt文件所在路径
    PROJECT_SOURCE_DIR:宏就是在使用cmake命令时,后面紧跟对的目录,一般是工程的根目录
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值