CMake入门教程:从零开始构建C/C++项目

简介: CMake是一个跨平台的自动化构建工具,可以用于构建各种类型的项目,包括C++、C、Python、Java等。本文将从零开始,介绍如何使用CMake构建一个简单的C/C++项目

CMake是一个跨平台的自动化构建工具,可以用于构建各种类型的项目,包括C++、C、Python、Java等。本文将从零开始,介绍如何使用CMake构建一个简单的C/C++项目


安装CMake

首先,需要下载并安装CMake。可以从CMake官网下载。如果404 Not Found,可以试一下这个国内镜像网址下载地址


创建项目文件夹

在本地创建一个项目文件夹,用于存放项目的源代码和构建文件。


创建源代码文件

在项目文件夹中创建一个源代码文件,例如hello.chello.cpp。在文件中编写一个简单的程序,例如输出“Hello, World!”。源码如下:

#include

 

intmain() {

   std::cout<<"Hello, World!\n";

   return0;

}


新建CMakeLists.txt文件

在项目文件夹中创建一个名为CMakeLists.txt的文件。该文件是CMake的构建配置文件,用于指定项目的源代码文件、编译选项和生成的可执行文件等信息。

以下是一个简单的CMakeLists.txt文件示例:

# 指定CMake版本

cmake_minimum_required(VERSION 3.10)

 

# 指定项目名称

project(hello)  

 

# 添加源代码文件

add_executable(hello hello.cpp)

上述代码中,cmake_minimum_required指定了CMake的最低版本要求,project指定了项目的名称。add_executable指定了生成的可执行文件名称和源代码文件的路径。


构建项目

在项目文件夹中打开终端,输入以下命令进行构建:

mkdir build  # 创建一个build文件夹

cd build  # 进入build文件夹

cmake ..  # 生成Makefile文件

make  # 编译源代码并生成可执行文件

执行完以上命令后,会在build文件夹中生成一个可执行文件hello


运行项目

在终端中输入以下命令运行生成的可执行文件:

./hello

此时,将输出Hello, World!信息。至此,一个简单的C/C++项目就被成功构建了。


跨平台构建

CMake支持在不同的操作系统和编译器下自动生成对应的构建文件。因此,只需要保证在不同平台上安装了相应的编译器和工具链,就可以实现跨平台构建。

下面是一个在WindowsLinux下都可以构建的CMakeLists.txt文件示例:

cmake_minimum_required(VERSION 3.10)

 

project(my_project)

 

if(WIN32)

   set(CMAKE_CXX_COMPILER "MSVC")

elseif(UNIX)

   set(CMAKE_CXX_COMPILER "g++")

endif()

 

set(CMAKE_CXX_STANDARD 11)

 

add_executable(hello hello.cpp)

在这个示例中,我们使用if语句来判断平台类型,并设置相应的编译器。通过这种方式,可以实现在不同平台下都可以编译和构建项目的目的。


总结

本文介绍了使用CMake构建一个简单的C/C++项目的步骤。首先需要安装CMake,并创建一个项目文件夹。然后创建源代码文件和CMakeLists.txt文件。最后,在终端中输入命令进行构建和运行。CMake可以根据项目的规模和需求,灵活配置构建选项,方便快捷地完成自动化构建。

最后

为了方便其他设备和平台的小伙伴观看往期文章,链接奉上:

牛客知乎开源中国CSDN思否掘金InfoQ简书博客园慕课51CTOhelloworld腾讯开发者社区阿里开发者社区

看完如果觉得有帮助,帮忙点个赞👍

相关文章
WK
|
3天前
|
机器学习/深度学习 人工智能 算法
那C++适合开发哪些项目
C++ 是一种功能强大、应用广泛的编程语言,适合开发多种类型的项目。它在游戏开发、操作系统、嵌入式系统、科学计算、金融、图形图像处理、数据库管理、网络通信、人工智能、虚拟现实、航空航天等领域都有广泛应用。C++ 以其高性能、内存管理和跨平台兼容性等优势,成为众多开发者的选择。
WK
15 1
|
22天前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
192 3
|
2月前
|
C++
【C++案例】一个项目掌握C++基础-通讯录管理系统
这篇文章通过一个通讯录管理系统的C++项目案例,详细介绍了如何使用C++实现添加、显示、删除、查找、修改和清空联系人等功能。
36 3
|
2月前
|
C++ Windows
HTML+JavaScript构建C++类代码一键转换MASM32代码平台
HTML+JavaScript构建C++类代码一键转换MASM32代码平台
|
2月前
|
C++
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
|
17天前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
20 4
|
17天前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
18 4
|
17天前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
17 1
|
27天前
|
存储 编译器 C++
【C++类和对象(下)】——我与C++的不解之缘(五)
【C++类和对象(下)】——我与C++的不解之缘(五)
|
27天前
|
编译器 C++
【C++类和对象(中)】—— 我与C++的不解之缘(四)
【C++类和对象(中)】—— 我与C++的不解之缘(四)