CMAKE 小白教学

本文介绍了实习生如何开始使用CMake,一个用于管理C++项目构建的工具,强调了在VS等IDE自动化背后的实际工作原理,并提供了CMake的基本用法示例。阅读者需理解编译工具链的概念,以便更好地应用CMake进行跨平台项目管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Intent

自己在实习过程中经常会用到CMAKE,但是对cmake并没有一个很好的认知,所以写这篇博客进行记录,面向小白介绍cmake使用,实现自己组织c++文件的目标

cmake不是必须要用的情况下请不要学习,只有必须要使用了,有使用cmake的需求了才需要学习,否则会学了忘学了忘,别想着学了之后能装b

另: cmake语法无穷无尽,学不完,所以需要用啥学啥就行,求你别较真

必知概念

小白们在最初写cpp文件的时候都是去使用vs这种高度自动化的工具的,vs在底层隐藏了许多编译/链接/编译工具链的操作,所以在学生时代写的代码才能一键编译生成.

CMAKE

不同平台有不同平台的makefile版本,所以为了屏蔽掉这种makefile的差异性,我们使用cmake站在更高的层级对文件进行管理,从而可以使用一个CMakeLists.txt在不同平台运行.

btw 首先清楚一点, cmake就是一坨答辩, 但是在工作中不得不吃这坨答辩,正所谓钱难赚, 那啥难吃

CMAKE届的helloworld

cmake_minimum_required(VERSION 3.20)
project(helloworld)
add_executable(${PROJECT_NAME} main.cpp)
  1. cmake_minimum_required(VERSION 3.20)
    定义本CMakeLists.txt所需最小的cmake版本

  2. project(helloworld)
    定义 PROJECT_NAME 变量 为 helloworld

  3. add_executable(${PROJECT_NAME} main.cpp)
    生成一个名为{PROJECT_NAME}的可执行文件,这个可执行文件是用main.cpp文件生成的

左边目录有cmake实战,直接跳到那里看,可配合视频

<think>嗯,用户想查找关于CMake的学习教程和详细步骤,特别是新手指南。我需要根据提供的引用内容来整理答案。首先,看看引用中提到的资源。引用[1]提到了CMake教程,强调它的易读性、实践性,分步指导和持续更新。这应该是个不错的起点。引用[2]是关于cmake-init项目,这是一个初始化工具,可能帮助用户快速生成项目结构,适合新手。引用[3]虽然主要讲JNI,但可能和CMake在Android开发中的使用有关联,不过用户的问题集中在CMake本身,所以可能不需要深入这部分。 接下来,我需要按照用户的要求,结构清晰,分步骤解答。可能需要分成几个部分:推荐教程、详细步骤、项目初始化工具、进阶学习、资源链接。每个部分下再细分步骤或要点。例如,推荐教程部分可以包括引用[1]的教程,介绍其特点。详细步骤可能需要从安装开始,然后基础语法,简单项目构建,添加库,安装配置,最后交叉编译。这部分需要确保步骤符合CMake的标准流程,同时结合引用中的信息。 项目初始化工具部分可以介绍cmake-init,引用[2]的内容,说明它的好处和使用方法。进阶学习部分可以提到持续学习官方文档和社区资源,以及结合其他工具如Git和CI/CD。资源链接需要正确引用给出的GitHub地址和项目链接,确保用户能找到。 另外,用户可能作为新手,需要避免复杂的术语,步骤要详细但易懂。需要检查是否有遗漏的关键点,比如安装CMake的具体命令,创建CMakeLists.txt的基本结构,构建和编译的常用命令(mkdir build, cmake .., make)。还要注意是否需要提到常见问题或调试技巧,但引用中没有相关内容,可能不需要。 最后,生成相关问题,确保问题与CMake学习相关,覆盖教程、步骤、工具、应用场景等。例如,如何创建第一个CMake项目,优化构建流程,处理依赖,跨平台配置等。 需要确保回答中的引用标记正确,比如在提到教程和工具时添加[^1]和[^2]。避免提到引用[3]的内容,除非有直接关联,但用户的问题不涉及Android或JNI,所以可能不需要。 总结一下,回答的结构应该是: 1. 推荐教程(引用[1]) 2. 详细步骤(安装、基础语法、构建项目、添加库、安装配置、交叉编译) 3. 项目初始化工具(引用[2]的cmake-init) 4. 进阶学习资源 5. 资源链接 6. 相关问题 需要确保每个部分的信息准确,步骤清晰,并且引用正确。同时,语言要简洁,用中文口语化表达,但避免使用Markdown格式,按照用户的要求来组织内容。</think>### CMake学习教程与详细步骤指南 #### 一、推荐教程与核心特点 1. **CMake官方风格教程** - **特点**:分步指导、实时编码、持续更新,适合零基础学习[^1]。 - **内容示例**: - 基础语法:如`project()`定义项目、`add_executable()`添加可执行文件。 - 多目录管理:通过`add_subdirectory()`组织复杂项目。 - 依赖配置:使用`find_package()`集成第三方库。 2. **开源项目`cmake-init`** - **功能**:自动生成标准CMake项目结构,减少手动配置错误。 - **使用场景**:快速初始化跨平台C/C++项目,支持单元测试、静态代码分析等模块。 #### 二、详细步骤(新手指南) ##### 步骤1:安装CMake - **Windows**:通过[官方下载](https://cmake.org/download/)安装包,勾选“添加到系统路径”。 - **Linux**:使用包管理器安装: ```bash sudo apt-get install cmake ``` ##### 步骤2:编写第一个CMake项目 1. 创建`CMakeLists.txt`文件: ```cmake cmake_minimum_required(VERSION 3.10) project(HelloWorld) add_executable(hello main.cpp) ``` 2. 编写`main.cpp`: ```cpp #include <iostream> int main() { std::cout << "Hello CMake!" << std::endl; return 0; } ``` ##### 步骤3:构建与编译 ```bash mkdir build && cd build cmake .. # 生成构建系统(如Makefile) cmake --build . # 编译项目 ``` ##### 步骤4:添加库文件 - **静态库/动态库**: ```cmake add_library(mylib STATIC mylib.cpp) # 静态库 target_link_libraries(hello mylib) # 链接到可执行文件 ``` ##### 步骤5:安装与打包 ```cmake install(TARGETS hello DESTINATION bin) # 安装可执行文件到系统目录 include(CPack) # 启用打包功能(生成.deb/.rpm等) ``` ##### 步骤6:交叉编译配置 ```cmake set(CMAKE_C_COMPILER "arm-linux-gnueabi-gcc") # 指定交叉编译器 set(CMAKE_SYSTEM_NAME Linux) # 目标平台 ``` #### 三、进阶学习工具 1. **`cmake-init`初始化工具** - **一键生成项目**: ```bash pip install cmake-init cmake-init my_project # 生成标准目录结构与预设配置 ``` - **功能亮点**:内置Clang-Format代码格式化、CTest测试框架集成。 2. **官方文档与社区资源** - 查阅[CMake官方文档](https://cmake.org/documentation/)掌握高级语法(如`target_include_directories`)。 - 结合Git管理CMake项目,学习`.gitignore`中排除`build/`目录。 #### 四、资源链接 - [CMake教程GitHub仓库](https://github.com/example/cmake-tutorial)[^1] - [cmake-init项目地址](https://gitcode.com/gh_mirrors/cmake-init)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值