CMake介绍(一)--CMake教程

目录

1. 安装 CMake

Windows

macOS

Linux

2. 基本用法

创建基本的 CMakeLists.txt 文件

解释基本指令

构建项目

3. 常见任务

添加库

设置编译选项

添加测试

设置安装规则

4. 高级用法

多配置

使用预处理器宏

设置编译器版本

5. 实战案例

创建一个包含头文件和源文件的项目

创建一个带有子目录的项目

总结

6 CMake 的作用和优势

CMake 的作用

构建文件生成:

依赖管理和包查找:

多语言支持:

跨平台构建:

高级构建逻辑:

安装和打包:

CMake 的优势

跨平台性:

灵活性:

易于学习:

广泛的社区支持:

强大的查找和配置能力:

可扩展性:

持续集成支持:

示例

总结


CMake 是一个跨平台的自动化构建系统,用于管理软件构建过程。它使用一个名为 CMakeLists.txt 的文本文件来描述构建过程所需的各种指令。CMake 可以生成多种构建系统的文件,如 Makefiles、Xcode 项目文件等,从而简化了跨平台的软件开发。以下是详细的 CMake 教程,包括安装、基本用法和常见任务。

1. 安装 CMake

Windows
  1. 访问 CMake 的官方网站 cmake.org
  2. 下载适合 Windows 的安装程序。
  3. 运行安装程序并按照提示进行安装。
macOS
  1. 使用 Homebrew 安装:

     bash 

    深色版本

    1brew install cmake
  2. 使用 MacPorts 安装:

     bash 

    深色版本

    1sudo port install cmake
Linux
  1. 使用包管理器安装:
    • Debian/Ubuntu:

       bash 

      深色版本

      1sudo apt-get install cmake
    • CentOS/RHEL:

       bash 

      深色版本

      1sudo yum install cmake
    • Fedora:

       bash 

      深色版本

      1sudo dnf install cmake

2. 基本用法

创建基本的 CMakeLists.txt 文件

创建一个简单的 CMakeLists.txt 文件,用于构建一个 C++ 程序:

 

cmake

深色版本

1cmake_minimum_required(VERSION 3.10)
2project(HelloWorld)
3
4add_executable(HelloWorld main.cpp)
解释基本指令
  1. cmake_minimum_required:指定 CMake 的最低版本要求。
  2. project:定义项目名称。
  3. add_executable:添加可执行文件,参数包括可执行文件的名字和要编译的源文件列表。
构建项目
  1. 创建构建目录:通常不在源码目录中直接构建,而是创建一个单独的构建目录。

     bash 

    深色版本

    1mkdir build
    2cd build
  2. 生成 Makefiles/Xcode 项目文件

    • 生成 Makefiles:

       bash 

      深色版本

      1cmake ..
    • 生成 Xcode 项目文件:

       bash 

      深色版本

      1cmake -G Xcode ..
  3. 编译项目

    • 使用 Make:

       bash 

      深色版本

      1make
    • 使用 Ninja(如果安装了 Ninja):

       bash 

      深色版本

      1cmake --build .
    • 使用 Visual Studio(Windows):

       bash 

      深色版本

      1cmake --build . --config Release

3. 常见任务

添加库

假设你需要链接一个外部库 libfoo

 

cmake

深色版本

1find_package(Foo REQUIRED)
2include_directories(${Foo_INCLUDE_DIRS})
3target_link_libraries(HelloWorld ${Foo_LIBRARIES})
设置编译选项

你可以设置编译器的警告级别和其他选项:

 

cmake

深色版本

1if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
2  add_definitions(-Wall -Wextra)
3endif()
添加测试

使用 Google Test 框架添加测试:

 

cmake

深色版本

1enable_testing()
2
3find_package(GTest REQUIRED)
4include_directories(${GTEST_INCLUDE_DIRS})
5link_directories(${GTEST_LIBRARY_DIRS})
6
7add_executable(test_hello test_main.cpp)
8target_link_libraries(test_hello ${GTEST_BOTH_LIBRARIES} HelloWorld)
9add_test(NAME test_hello COMMAND test_hello)
设置安装规则

你可以设置安装规则,以便生成安装脚本:

 

cmake

深色版本

1install(TARGETS HelloWorld DESTINATION bin)
2install(DIRECTORY include/ DESTINATION include)

4. 高级用法

多配置

如果你需要支持多配置(Debug/Release),可以使用以下方式:

 

cmake

深色版本

1option(BUILD_TYPE "Build type; one of Debug, Release, RelWithDebInfo, MinSizeRel" Release)
2set(CMAKE_BUILD_TYPE "${BUILD_TYPE}" CACHE STRING "Choose the type of build." FORCE)
使用预处理器宏

你可以在 CMakeLists.txt 中定义预处理器宏:

 

cmake

深色版本

1add_definitions(-DHELLO_WORLD)
设置编译器版本

你可以指定编译器的版本:

 

cmake

深色版本

1set(CMAKE_CXX_STANDARD 14)
2set(CMAKE_CXX_STANDARD_REQUIRED True)

5. 实战案例

创建一个包含头文件和源文件的项目

假设你有一个简单的 C++ 项目,包含一个头文件 hello.h 和一个源文件 hello.cpp

 

cmake

深色版本

1cmake_minimum_required(VERSION 3.10)
2project(HelloWorld)
3
4add_library(hello SHARED hello.cpp)
5add_executable(HelloWorld main.cpp)
6target_link_libraries(HelloWorld hello)
创建一个带有子目录的项目

如果你的项目包含多个子目录,可以使用 add_subdirectory 指令:

 

cmake

深色版本

1cmake_minimum_required(VERSION 3.10)
2project(HelloWorld)
3
4add_subdirectory(src)
5add_subdirectory(libs)

总结

通过上述步骤,你可以使用 CMake 来管理你的构建过程,包括生成构建文件、编译项目、添加库、设置编译选项、添加测试和安装规则等。CMake 的强大之处在于它的灵活性和可扩展性,适用于从小型项目到大型复杂系统的各种场景。

6 CMake 的作用和优势

CMake 是一个跨平台的自动化构建系统,用于管理和生成构建文件(如 Makefiles)。它通过解析 CMakeLists.txt 文件来描述项目的构建逻辑,并能够生成多种构建系统的输出文件,使得开发人员能够在不同的操作系统和编译环境下一致地构建项目。以下是 CMake 的主要作用和优势:

CMake 的作用
  1. 构建文件生成
    • CMake 可以生成多种构建系统的文件,如 GNU Make、Ninja、Visual Studio 项目文件、Xcode 项目文件等。
    • 这使得开发人员能够在不同的操作系统上使用相同的构建逻辑。
  2. 依赖管理和包查找
    • CMake 提供了一系列函数来查找和管理外部依赖库,如 find_package 和 find_library
    • 它能够自动检测库的存在,并设置相应的编译选项和链接选项。
  3. 多语言支持
    • CMake 支持多种编程语言,包括 C、C++、Fortran、Java、Python 等。
    • 这使得 CMake 成为了一个通用的构建工具,适用于多种类型的项目。
  4. 跨平台构建
    • CMake 支持 Windows、Linux、macOS、iOS、Android 等多种操作系统。
    • 它能够处理不同平台上的编译器差异,并生成相应的构建文件。
  5. 高级构建逻辑
    • CMake 支持编写复杂的构建逻辑,如条件编译、循环依赖处理、动态库和静态库的构建等。
    • 可以使用 CMake 的宏和函数来实现复杂的构建需求。
  6. 安装和打包
    • CMake 可以生成安装脚本,使得项目可以被方便地安装到系统中。
    • 它还支持生成打包文件,如 Debian 包、RPM 包等。
CMake 的优势
  1. 跨平台性
    • CMake 的主要优势之一就是其跨平台性。无论是在 Windows、Linux 还是 macOS 上,CMake 都能够生成相应的构建文件,使得项目可以在不同的操作系统上一致地构建。
  2. 灵活性
    • CMake 的 CMakeLists.txt 文件可以包含非常复杂的逻辑,支持条件语句、循环、宏定义等。
    • 这使得 CMake 能够处理各种复杂的构建需求,如动态加载库、条件编译等。
  3. 易于学习
    • 尽管 CMake 支持复杂的构建逻辑,但它也有一个相对简单的入门门槛。
    • 基本的 CMakeLists.txt 文件可以很快上手,并且随着需求的增长逐步学习更高级的功能。
  4. 广泛的社区支持
    • CMake 有一个活跃的社区,提供了大量的示例和插件。
    • 遇到问题时,可以在 Stack Overflow、GitHub 等平台上找到很多解决方案和支持。
  5. 强大的查找和配置能力
    • CMake 提供了一系列函数来查找和配置外部库和工具。
    • 例如,find_package 可以帮助查找和配置外部库,并设置相应的编译和链接选项。
  6. 可扩展性
    • CMake 支持编写自定义的宏和函数,可以扩展 CMake 的功能。
    • 这使得 CMake 可以适应不同项目的需求,并且可以根据需要进行定制。
  7. 持续集成支持
    • CMake 生成的构建文件可以很容易地集成到持续集成(CI)系统中,如 Jenkins、Travis CI 等。
    • 这有助于自动化测试和构建过程,提高开发效率。
示例

以下是一个简单的 CMakeLists.txt 文件示例,展示了 CMake 的基本用法:

cmake

深色版本

1cmake_minimum_required(VERSION 3.10)
2project(HelloWorld)
3
4# 设置编译标准
5set(CMAKE_CXX_STANDARD 14)
6set(CMAKE_CXX_STANDARD_REQUIRED True)
7
8# 添加可执行文件
9add_executable(HelloWorld main.cpp)
10
11# 查找外部库
12find_package(Foo REQUIRED)
13include_directories(${Foo_INCLUDE_DIRS})
14target_link_libraries(HelloWorld ${Foo_LIBRARIES})
15
16# 设置安装规则
17install(TARGETS HelloWorld DESTINATION bin)
18install(DIRECTORY include/ DESTINATION include)
总结

CMake 是一个非常强大的构建工具,它不仅能够生成多种构建系统的文件,还支持复杂的构建逻辑和依赖管理。通过使用 CMake,开发人员可以在不同的操作系统和编译环境下一致地构建项目,并且能够处理各种复杂的构建需求。

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
cmake-3.11.2-win64-x64 是一个用于 Windows 操作系统的 CMake 版本。CMake 是一个跨平台的开源构建工具,用于自动生成适用于不同的操作系统(例如 Windows、Linux 和 macOS)和编译器的构建文件。 cmake-3.11.2-win64-x64 意味着这是一个适用于 64 位 Windows 系统的 CMake 版本,可以用于开发和构建 64 位的 Windows 应用程序。CMake 提供了一种简化和标准化项目构建过程的方法,通过 CMake 脚本文件,可以描述项目的源代码、依赖项、编译选项等信息。 使用 cmake-3.11.2-win64-x64,您可以在 Windows 操作系统上进行项目的构建和编译。首先,您需要将 cmake-3.11.2-win64-x64 下载到本地计算机上,并按照安装指南进行安装。安装后,您可以在命令行中使用 cmake 命令或者使用图形界面工具(如 CMake-GUI)来配置项目的构建环境。 通过使用 CMake 构建项目,您可以轻松地生成适用于 Visual Studio、MinGW、Ninja 等常见编译器和构建工具的构建文件。通过执行生成的构建文件,您可以在本地计算机上编译和构建项目,生成可执行文件或者库文件。 总结来说,cmake-3.11.2-win64-x64 是一个适用于 64 位 Windows 系统的 CMake 版本,它提供了一种简化和标准化的项目构建过程,可以帮助开发者在 Windows 下进行项目的构建和编译。通过 CMake,您可以自动生成适用于不同平台和编译器的构建文件,从而提高项目的可移植性和可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值