【cmake学习总结】

本文详细介绍了CMake中的关键文件CMakeLists.txt的作用,包括其与cmake文件的关系、CMake内置函数如set、add_library等的使用,第三方库引入的方法,install命令的FILES模式以及CMAKE_PREFIX_PATH对库文件查找的影响。
  • CMakeLists.txt 是cmake文件的命名方式
  • xxx.cmake 该文件类似C语言中的.h文件 被CMakeLists.txt文件引用

set_property
get_property
set_target_property
get_target_property

add_subdirectory
PROJECT_BINARY_DIR
PROJECT_SOURCE_DIR

add_library 动态库 静态库
get_filename_component 获取文件信息
cmake_parse_arguments 解析函数入参
target_link_libraries
file 文件操作
add_custom_target

CMake-第三方库引入
cmake内置函数的重写(可以封装更多功能)

install 命令可用于移动文件(选择FILES模式)
targe*** 命令中PUBLIC,PRIVATE,INTERFACE的含义添加链接描述

常用路径: 比如当前路径./code/build 执行cmake …
${CMAKE_BINARY_DIR} 为 ./code/build
${CMAKE_SOURCE_DIR} 为 ./code

CMAKE_PREFIX_PATH 用于指示CMake在查找包和项目所需库文件时的路径。在构建项目时,它可以帮助CMake定位库文件,头文件和执行文件等。当项目的库文件或头文件不在CMake默认的查找路径中时,可以通过设置CMAKE_PREFIX_PATH变量来为CMake提供额外的查找路径,从而缩短构建时间并提高构建成功率。类似C语言的 include “file”

<think>嗯,用户想学习CMake的使用方法或者教程,需要相关的学习资料。首先,我得先回顾一下用户提供的引用内容,看看有哪些信息可以利用。用户引用了四个关于CMake的资料,分别提到了CMake的基本概念、如何编写CMakeLists.txt文件、生成库以及打包安装包的内容。这些引用应该能帮助构建回答的结构。 接下来,用户的问题是关于CMake的使用教程或学习资料,所以需要整理出系统化的学习路径。可能需要从基础开始,逐步介绍CMake的核心概念、基本语法、项目结构、生成库的方法,以及进阶内容如安装和打包。同时,结合用户提供的引用,可以引用具体的例子,比如引用[2]中的add_library用法,引用[4]中的生成静态库或动态库的说明,以及引用[3]中的打包方法。 还要考虑用户可能的背景。用户可能已经有一定的编程经验,但对构建系统不太熟悉,或者之前使用过其他构建工具,现在想转向CMake。需要确保回答清晰易懂,步骤分明,适合新手入门。同时,用户可能希望了解实际应用中的例子,比如如何管理多目录项目,如何添加依赖库等,这些在引用中都有涉及,比如引用[2]中的子目录CMakeLists.txt配置。 另外,用户可能遇到的问题包括如何跨平台编译、如何管理不同的构建类型(Debug/Release)、如何处理第三方库依赖等。这些内容在回答中可以适当提及,但可能不需要太深入,毕竟用户主要寻求的是教程和资料。 需要确保回答结构符合用户的要求:使用中文,分步骤说明,引用相关段落并添加引用标识。同时,生成相关问题,这部分需要围绕CMake的常见疑问展开,比如与其他构建工具的比较、调试技巧、管理依赖的方法等。 最后,检查是否有遗漏的信息,比如推荐的学习资源,官方文档、书籍或在线教程。用户提供的引用中提到了OpenCV、KDE等项目使用CMake,可以作为成功案例提及,增强说服力。同时,确保所有技术术语解释清楚,避免用户混淆。 总结一下,回答的结构大致分为几个部分:核心概念、基本语法、项目配置、库生成、安装与打包、学习资源推荐,最后是相关问题。每个部分结合用户提供的引用内容,确保信息准确且有据可依。还要注意LaTeX格式的正确使用,数学表达式和独立公式的格式是否正确,但根据用户的问题,可能这部分内容较少,主要集中在代码块和引用格式上。</think>### CMake 使用教程与学习路径 #### 一、核心概念与安装 CMake 是一个**跨平台的编译配置工具**,通过编写平台无关的 `CMakeLists.txt` 文件定义编译流程,再生成平台相关的构建文件(如 Makefile 或 Visual Studio 工程),实现“一次编写,多平台运行”[^1]。 安装方法: - **Windows**:通过官网下载安装包 - **Linux**:`sudo apt-get install cmake` - **macOS**:`brew install cmake` --- #### 二、基础语法与项目结构 1. **最小化示例** 创建一个 `CMakeLists.txt`,内容如下: ```cmake cmake_minimum_required(VERSION 3.10) project(MyProject) add_executable(my_app main.cpp) ``` 2. **变量与路径管理** - `PROJECT_SOURCE_DIR`:项目根目录 - `PROJECT_BINARY_DIR`:构建目录(如 `build/`) - 设置头文件路径:`include_directories(include/)`[^4] --- #### 三、多目录项目配置 1. **子目录管理** ```cmake # 根目录 CMakeLists.txt add_subdirectory(src) # 添加子目录 add_subdirectory(lib) ``` 2. **库的生成与链接** ```cmake # 子目录 CMakeLists.txt(生成库) aux_source_directory(. DIR_SRCS) add_library(mylib STATIC ${DIR_SRCS}) # 静态库[^2][^4] # 主程序链接库 target_link_libraries(my_app mylib) ``` --- #### 四、进阶功能 1. **安装与打包** ```cmake # 安装可执行文件 install(TARGETS my_app DESTINATION bin) # 生成安装包 include(InstallRequiredSystemLibraries) include(CPack)[^3] ``` 2. **条件编译** ```cmake option(USE_OPENMP "Enable OpenMP" ON) if(USE_OPENMP) find_package(OpenMP REQUIRED) target_link_libraries(my_app OpenMP::OpenMP_CXX) endif() ``` --- #### 五、学习资源推荐 1. **官方文档** [CMake 官方教程](https://cmake.org/cmake/help/latest/guide/tutorial/index.html) 2. **书籍** 《Modern CMake for C++》 《CMake Cookbook》 3. **实战项目** - OpenCV 的 CMake 配置 - KDE Framework 的构建系统 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值