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

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


安装CMake

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


创建项目文件夹

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


创建源代码文件

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

#include <iostream>

int main() {
    std::cout << "Hello, World!\n";
    return 0;
}

新建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可以根据项目的规模和需求,灵活配置构建选项,方便快捷地完成自动化构建。

#C++##面试##后端##开发##程序员#
全部评论

相关推荐

C++的上限非常高,但是分阶段性逐步学习是没有问题的,一步步的学,慢慢领悟,总有一天会熟练掌握的。C++&nbsp;语言的学习其实就三个阶段就好了:(1)&nbsp;入门阶段这个阶段的学习主要是熟悉&nbsp;C++&nbsp;语言的语法知识。在这个阶段要做到理解对象的思想方法,培养自己的编程思维能力。目标是可以开发一些像贪吃蛇这种简单的控制台小程序。(2)&nbsp;进阶阶段进阶阶段的学习主要是要掌握&nbsp;C++&nbsp;标准模板库(STL)、设计模式、数据结构基础以及&nbsp;UI&nbsp;界面开发、数据库开发等高级技能。在这个阶段是要达到可以开发复杂的程序,达到工作中&nbsp;C++&nbsp;开发程序员的能力。(3)&nbsp;应用阶段这个是实战阶段,要具备一定的综合性应用软件开发能力。这个阶段就是多观摩别人的项目,看人家的写法,模仿项目,学习其中的思想,一点点的积累,一步步形成自己的东西,厚积而薄发,慢慢你就会发现你也可以了。注意!下面都是超极干的干货一、入门阶段入门阶段的学习主要是熟悉&nbsp;C++&nbsp;语言的语法知识。除了基础的变量、常量、关键字、数据类型、运算符、数组、函数、指针、结构体外,还要学习&nbsp;C++&nbsp;的面向对象编程思想、命名空间&nbsp;namespace、引用、函数扩展、类的封装、构造和析构、继承、多态、异常处理等内容。语言部分的学习建议不要拖太久,一定要规划好时间,一鼓作气,不然自己容易泄气!1.视频推荐此时同学们应该是毫无基础或者稍微有点&nbsp;C&nbsp;语言基础的小白。对于小白来说,不建议上来就看书,因为干看看不懂,容易劝退。可以先从视频教程开始,教材为辅。我当初&nbsp;C++&nbsp;视频是在&nbsp;b&nbsp;站看的黑马程序员的&nbsp;C++&nbsp;课程(我不是他们的托儿从&nbsp;0&nbsp;到&nbsp;1&nbsp;教&nbsp;C++,三百多个小节,每个小节时间都不是很长,除了个别几个在二十多分钟,其余的基本上都在几分钟到十几分钟之间。每一个阶段都会有相应的小项目教学,对初学者来说是很友好的。看视频的时候不是看看就过去了,编程毕竟是门一门手艺活,孰能生巧。建议一边看,一边将视频中的示例或者小项目教学自己也实现一下,刚开始不会可以照着敲,比只看不动手强一百倍。此外,我最近发现深蓝学院出品的「C++&nbsp;基础与深度解析」课程也很不错,深入基础,讲解语法细节。从基础语法讲到&nbsp;Modern&nbsp;C++,从面向过程开发到新编程范式,对大家学习&nbsp;C++&nbsp;很有帮助。2.书籍推荐入门阶段的书籍为辅,怎么为辅呢?就是视频看完一个阶段,然后就可以去看书上对应阶段的内容,这样看书,一方面看书的时候会很快,容易理解,另一方面可以印证自己在看视频的时候一些不太理解的地方。入门阶段推荐两本书,一本薄的,一本厚的,都是超级经典的书籍。《Essential&nbsp;C++》《Essential&nbsp;C++》是一本内容不多但很实用的&nbsp;C++&nbsp;入门书籍,这本书强调的是快速上手与理解&nbsp;C++&nbsp;编程。主要围绕一系列逐渐复杂的程序问题,以及用以解决这些问题的语言特性展开讲解。你不只学到&nbsp;C++&nbsp;的函数和结构,也会学习到它们的设计目的和基本原理。《C++&nbsp;Primer&nbsp;Plus》&amp;amp;《C++&nbsp;Primer》很多人&nbsp;C++&nbsp;入门的时候会推荐《C++&nbsp;Primer&nbsp;Plus》,很多人&nbsp;C++&nbsp;入门的时候会推荐《C++&nbsp;Primer&nbsp;Plus》,我当年先看的也是这本书,当年&nbsp;C&nbsp;语言除了学校的教材,我看的就是《C&nbsp;Primer&nbsp;Plus》。这本书怎么说的,讲的超级全面,甚至有点过于全面了,书中的例子和课后习题循序渐进,不夸张的讲所有的知识点可能都囊括进去了,作者可能为了怕大家学不明白,讲的巨细,甚至我感觉都有点啰嗦,造成这本书巨厚,字又巨小,看完感觉近视又加了几度。当时我学习的时候《C++&nbsp;Primer》还是第&nbsp;4&nbsp;版,现在都到第&nbsp;5&nbsp;版了!《C++&nbsp;Primer》堪称&nbsp;C++&nbsp;语法学习的最权威书籍,非常全面地讲解了C++的语法以及C++11的各种新特性,看完之后真的帮助特别大!如果有时间建议至少看两遍以上!时面向&nbsp;C++&nbsp;语言的初学者,是一本很友好的自学教材!而且例程和习题丰富,相信认真读过之后,可以完成&nbsp;C++&nbsp;语言入门这个目标!!如果你在这个阶段觉得差不多了,可以尝试找一些在线的练习题做下,如果你不知道去哪找,那可以去下面这个初学者练习编程巩固语法的绝佳去处。它有专门的&nbsp;C++&nbsp;入门编程练习题,专门练习语法和大家的编程逻辑,从变量、数据类型这些基础语法,到数组、字符串这种复合类型,再到函数、面向对象,以及在&nbsp;C++&nbsp;中很重要的&nbsp;STL,最后再来点综合练习,差不多&nbsp;70&nbsp;多道题,够你练的。除了编程练习以外,如果你想知道你自己的知识点掌握的如何,也可以做一下专项练习。以类似试卷的形式,可以很好的检验自己的学习成果,不管是对之后应对考试,或者应付笔试面试都很有帮助。二、进阶阶段在进阶阶段,你已经对&nbsp;C++&nbsp;有一定的认知了。这个时候我们可以深入学习&nbsp;C++&nbsp;标准模板库(STL)、设计模式、数据结构基础以及&nbsp;UI&nbsp;界面开发、数据库开发等高级技能。1.书籍推荐《C++标准程序库》关于&nbsp;STL,可以先读这本侯捷老师翻译的《C++&nbsp;标准程序库》。通过这本书对STL有个基本认识,学会使用&nbsp;STL。《STL源码剖析》读完&nbsp;《C++&nbsp;标准程序库》,就可以来读这本侯捷老师编写的《STL源码剖析》了。这本书建议必读!这本书讲解了&nbsp;C++&nbsp;底层实现,主要包括&nbsp;C++&nbsp;底层内存管理、各种容器的数据结构实现、常见算法的实现等。可以帮助深入理解C++底层,同时也是对数据结构的复习和巩固。《Effective&nbsp;C++》《Effective&nbsp;C++》讲了&nbsp;C++&nbsp;编程的&nbsp;55&nbsp;条准则,提高你的&nbsp;C++&nbsp;编程质量,也是侯捷老师翻译的!这本书有助于梳理在编写&nbsp;C++&nbsp;程序时的一些常见错误和注意事项,也是面试常考的。《深度探索C++对象模型》《深度探索C++对象模型》这本书讲解了C++面向对象特性的底层实现机制。侯捷老师翻译的,看完这本书,对C++面向对象的理解帮助极大,建议必读!2.视频推荐不知道大家注意了没,上面我推荐了四本书,都和一个人有关:侯捷老师。书要么是他翻译的,要么是他写的,C++&nbsp;领域&nbsp;YYDS!同意吧?侯捷老师当然也有讲课,针对书都有对应内容的视频课程!三、应用阶段其实编程语言就是要多练,怎么多练,就是代码量。自己多写,然后多观摩别人的项目,看人家的写法,模仿项目,学习其中的思想,一点点的积累,一步步形成自己的东西,厚积而薄发,慢慢你就会发现你也可以了。面经可以参考c++面经&nbsp;总结的很详细https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
分享
评论
2
6
分享

创作者周榜

更多
牛客网
牛客企业服务