【C++学习笔记】七、cmake文件的基础使用

1 概述

选自百度百科:

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows [Visual C++](https://baike.baidu.com/item/Visual C%2B%2B/1811800?fromModule=lemma_inlink) 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。

linux 下系统直接安装

sudo apt install cmake

查看cmake版本

cmake --version
cmake version 3.16.3

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

我们一般都是通过cmake生成对应的makefile后来运行make。

2 单个文件

只有单个main.cpp的时候可以用如下CMakeLists.txt文件

# cmake最低版本需求
cmake_minimum_required(VERSION 3.10)

# 工程名称
project (demo)

# 设置C标准还是C++标准
set(CMAKE_C_STANDARD 11)

add_executable(demo
        main.cpp)

3 多个文件夹

但是实际开发中玩玩会更加复杂。

比如:下面每个模块都有自己的文件夹,并且每个文件夹下都有自己对应的头文件和源文件。

.
├── abstract
│   ├── inc
│   │   └── abstractModel.h
│   └── src
│       └── abstractModel.cpp
├── blueEar
│   ├── inc
│   │   └── blueEarModel.h
│   └── src
│       └── blueEarModel.cpp
├── CMakeLists.txt
├── CmakeOut
├── main.cpp
├── out
└── README.md

这个时候我们可以看如下的内容。

# cmake最低版本需求
cmake_minimum_required(VERSION 3.10)

# 工程名称
project (demo)

# 设置C标准还是C++标准

#set(CMAKE_C_STANDARD 11) #c标准
set(CMAKE_CXX_STANDARD 11)#c++标准11

# 设置可执行文件输出路径
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/out)

# set (EXECUTABLE_OUT_PATH ${PROJECT_SOURCE_DIR}/out)

#
include_directories (   abstract/inc/
                        blueEar/inc/
                        )

aux_source_directory (abstract/src/ abstract_path)
aux_source_directory (blueEar/src/ blueEar_path)

add_executable(demo
        main.cpp
        ${abstract_path}
        ${blueEar_path})

可以看到如上的内容。

通过include_directories将相关的头文件包含进来

include_directories
使用的格式如下:
include_directories (   abstract/inc/
                        blueEar/inc/
                        )

另外通过aux_source_directory将相关的cpp文件都加载到对应的变量中

aux_source_directory

#使用的格式如下:
aux_source_directory (abstract/src/ abstract_path)
aux_source_directory (blueEar/src/ blueEar_path)
# 设置可执行文件输出路径.会输出到项目文件下的out目录下
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/out)

cmake过程中会生成大量的中间文件。

其中的一种做法可以跟我上面一样建立一个 CmakeOut文件夹.

然后进入到这个文件夹中,运行

cmake ..

这样就会把编译的中间文件生成到这个目录中,不至于破坏工程的目录。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高启强不卖鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值