CMake是什么?& 用CMake编译项目 & CMake和g++的区别

0.同样是编译c++文件有了g++为什么又出了个CMake?

g++适用于要编译的文件较少的情况。
而CMake像是写好的脚本,可以一键编译很多c++文件。

一.创建项目和CMakeLists.txt文件

1.1 创建一个项目,目录结构如下

在这里插入图片描述

1.2 在项目的根目录下创建一个CMakeLists.txt文件用来编译

CMakeLists.txt的内容如下:

# 1.指定cmake的版本要求
cmake_minimum_required(VERSION 3.0)

# 2.指定项目名称,一般用大写
project(HELLOWORLD)

# 3.编译helloworld.cpp文件生成可执行文件 
# 3.1 helloWorld_cmake是名字 helloworld.cpp是要编译的文件,两者用空格隔开
# 3.2 下面这句命令相当于 g++ helloworld.cpp -o helloworld
add_executable(helloWorld_cmake helloworld.cpp)

指定cmake的版本要求时,可以打开终端查看cmake版本

cmake --version

二.用CMake内部构建的方法构建项目(不推荐)

2.1 生成cmake文件
打开终端进入该项目的目录下,输入如下命令,表示编译当前目录下的项目

cmake .

在这里插入图片描述在这里插入图片描述上面的信息表示:检测c++语言编译器,生成配置信息。最后告诉你生成的文件放到了哪。
运行命令之后生成了许多cmake相关的文件如下:
在这里插入图片描述

2.2 编译项目并生成可执行文件

命令行直接输入

make

在这里插入图片描述

第一行表示正在构建cpp.o文件
第二行表示链接 helloWorld_camke可执行文件

最终生成了 hellWorld_cmake可执行文件
在这里插入图片描述

2.3 运行生成的可执行文件

./helloWorld_cmake

二.外部构建(推荐)

2.1 对简单文件构建

1. 文件目录
在这里插入图片描述

2. 首先在项目的根目录下创建一个CMakeLists.txt文件用来编译

CMakeLists.txt的内容如下:

# 1.指定cmake的版本要求
cmake_minimum_required(VERSION 3.0)

# 2.指定项目名称,一般用大写
project(HELLOWORLD)

# 3.编译helloworld.cpp文件生成可执行文件 
# 3.1 helloWorld_cmake是名字 helloworld.cpp是要编译的文件,两者用空格隔开
# 3.2 下面这句命令相当于 g++ helloworld.cpp -o helloworld
add_executable(helloWorld_cmake helloworld.cpp)

指定cmake的版本要求时,可以打开终端查看cmake版本

cmake --version

内部构建的方法会生成很多冗余文件,而外部构建是将输出文件与源文件放到不同目录中。

3. 核心构建代码

# 进入当前项目目录,创建build文件夹
mkdir build
cd build
# 对把上上级的目录进行构建,生成cmake文件
cmake ..
# 执行make命令对cpp文件进行编译并生成可执行文件
make

最终项目目录如下:

在这里插入图片描述

2.2 对多文件夹,多文件构建

项目目录为:
在这里插入图片描述在根目录创建 CMakeLists.txt,内容如下

cmake_minimum_required(VERSION 3.0)

project(SWAP)

# 把include文件夹包含在头文件搜索路径中
# 对应中的g++ main.cpp src/swap.cpp -Iinclude -o main中的 -Iinclude
include_directories(include)

# 指定输出文件名:main_cmake,后面是要编译的文件
add_executable(main_cmake main.cpp src/swap.cpp)

创建build文件夹并生成CMake相关的文件

mkdir build
cd build
cmake ..

使用make命令,编译文件并生成可执行文件

make

在这里插入图片描述

执行生成的可执行文件

./main_cmake

在这里插入图片描述

注意

项目名必须用英文,否则输入make命令没有反应

  • 22
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

computer_vision_chen

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

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

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

打赏作者

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

抵扣说明:

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

余额充值