首页 > 其他分享 >cmake使用方法

cmake使用方法

时间:2024-10-13 12:21:07浏览次数:14  
标签:... CMakeLists cmake 使用 CMake txt 方法 ###

CMake 是一个跨平台的构建系统生成器,广泛用于 C++ 项目。它允许开发者编写平台无关的构建脚本(称为 `CMakeLists.txt`),然后在不同的平台上生成对应的构建文件(如 Makefile、Visual Studio 项目文件等)。以下是使用 CMake 的基本步骤和一些常见的用法。

 

### 安装 CMake

首先,你需要安装 CMake。你可以从 CMake 的官方网站下载安装包,或者使用包管理器来安装。例如,在 Ubuntu 上可以使用以下命令:

 

```sh

sudo apt-get update

sudo apt-get install cmake

```

 

在 macOS 上可以使用 Homebrew:

 

```sh

brew install cmake

```

 

在 Windows 上可以从 CMake 官方网站下载安装程序。

 

### 创建 CMakeLists.txt 文件

在你的项目根目录下创建一个名为 `CMakeLists.txt` 的文件。这个文件定义了项目的构建规则。

 

#### 基本的 CMakeLists.txt 示例

```cmake

# 指定 CMake 的最低版本要求

cmake_minimum_required(VERSION 3.10)

 

# 设置项目名称

project(MyProject)

 

# 查找源文件

file(GLOB SOURCES "src/*.cpp")

 

# 添加可执行文件目标

add_executable(MyExecutable ${SOURCES})

 

# 可选:指定编译器标志

# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -Wall -Wextra")

```

 

### 使用 CMake 生成构建文件

在命令行中,进入包含 `CMakeLists.txt` 的项目目录,然后创建一个构建目录(通常命名为 `build`),并在该目录中运行 CMake 来生成构建文件。

 

```sh

mkdir build

cd build

cmake ..

```

 

### 构建项目

生成构建文件后,你可以在 `build` 目录中使用相应的构建工具来构建项目。

 

- **在 Unix/Linux/macOS 上**:

  ```sh

  make

  ```

 

- **在 Windows 上**(如果你生成的是 Visual Studio 项目文件):

  ```sh

  cmake --build . --config Release

  ```

 

### 常见的 CMake 命令

- **`cmake_minimum_required(VERSION <version>)`**:指定所需的 CMake 最低版本。

- **`project(<name> [VERSION <major>[.<minor>[.<patch>]]] [DESCRIPTION <description>] [HOMEPAGE_URL <url>] ...)`**:设置项目的基本信息。

- **`add_executable(<name> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] source1 [source2 ...])`**:添加一个可执行文件目标。

- **`add_library(<name> [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] source1 [source2 ...])`**:添加一个库目标。

- **`target_link_libraries(<target> [item1 [item2 [...]]])`**:为某个目标链接库。

- **`find_package(<PackageName> [version] [EXACT] [REQUIRED] [COMPONENTS [componets...]])`**:查找并加载外部库或框架。

- **`include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])`** 或 **`target_include_directories(<target> [SYSTEM] [BEFORE <INTERFACE|PUBLIC|PRIVATE>] [items1...] [<INTERFACE|PUBLIC|PRIVATE> [items2...]])`**:指定头文件搜索路径。

- **`set(CMAKE_CXX_STANDARD 11)`**:设置 C++ 标准版本。

 

### 更多高级功能

- **自定义变量**:你可以定义自己的变量,并在 CMakeLists.txt 中使用它们。

- **条件语句**:使用 `if()`, `else()`, `elseif()`, `endif()` 进行条件判断。

- **循环语句**:使用 `foreach()` 和 `endforeach()` 进行循环操作。

- **宏和函数**:定义宏和函数以简化和重用代码。

 

### 示例:一个更复杂的 CMakeLists.txt

```cmake

cmake_minimum_required(VERSION 3.10)

project(MyProject VERSION 1.0)

 

# 设置 C++ 标准

set(CMAKE_CXX_STANDARD 14)

set(CMAKE_CXX_STANDARD_REQUIRED ON)

 

# 查找源文件

file(GLOB SOURCES "src/*.cpp")

 

# 添加可执行文件目标

add_executable(MyExecutable ${SOURCES})

 

# 添加库

add_library(MyLibrary STATIC src/library.cpp)

 

# 链接库到可执行文件

target_link_libraries(MyExecutable MyLibrary)

 

# 包含目录

target_include_directories(MyExecutable PRIVATE include)

 

# 查找并使用外部库

find_package(Boost REQUIRED COMPONENTS system)

if(Boost_FOUND)

    include_directories(${Boost_INCLUDE_DIRS})

    target_link_libraries(MyExecutable ${Boost_LIBRARIES})

endif()

```

 

标签:...,CMakeLists,cmake,使用,CMake,txt,方法,###
From: https://blog.csdn.net/weixin_43803780/article/details/142688305

相关文章

  • Spring Boot知识管理系统:技术与方法论
    2相关技术2.1MYSQL数据库MySQL是一个真正的多用户、多线程SQL数据库服务器。是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适用于Web站点或者其他......
  • 操作方法分享:4G模组中移OneNET轻松上云平台
    ​一、简介 1.1IoT_CLOUD的功能IoT_CLOUD库本质就是上层设计一套通用的API,用库来实现每个平台功能的对接。目前已经实现了各个平台的所有注册方式,其中自动注册会将相关验证信息保存KV,随后使用此验证信息进行连接,通知针对每个平台添加了特有系统实现,比如:设备上线通知、设备......
  • 高级java每日一道面试题-2024年10月11日-数据库篇[Redis篇]-Redis都有哪些使用场景?
    如果有遗漏,评论区告诉我进行补充面试官:Redis都有哪些使用场景?我回答:Redis是一个开源的、基于键值对的数据结构存储系统,,它支持多种数据类型,包括字符串、散列、列表、集合和有序集合。它可以用作数据库、缓存和消息中间件。由于其高性能、丰富的数据结构支持以及多种......