Windows系统中 CMake 快速图解入门 ( 解决你的开发环境 )

目录

介绍

下载

下载缓慢或进不去网站解决方法

安装

直接下一步

勾选协议

添加环境+快捷方式

建议改路径

点击安装

安装中

安装成功

检测安装

命令提示符检测

[输入 cmake --verison](#输入 cmake --verison)

简单入门

构建新项目

选择CMake项目

建议更改路径

创建成功

项目结构分析

CMakeLists.txt

CMakePresets.json

Demo.cpp

Demo.h

如何使用这些文件

在命令行中构建项目

[使用 Visual Studio 构建项目](#使用 Visual Studio 构建项目)

注意事项

项目分析

CMakeLists.txt

CMakePresets.json

[CMakePresets.json 文件的作用](#CMakePresets.json 文件的作用)

简化构建配置:

跨平台构建:

[IDE 集成:](#IDE 集成:)

脚本化构建:

[CMakePresets.json 文件的结构](#CMakePresets.json 文件的结构)

解释示例

[使用 CMakePresets.json 文件](#使用 CMakePresets.json 文件)

Demo.cpp

Demo.h

项目运行

完结散花


介绍

  • CMake 是一个跨平台的自动化构建系统,它使用配置文件(CMakeLists.txt)来生成标准的构建文件,如Unix的Makefile或Windows的Visual Studio解决方案。
  • CMake 能够处理项目的组织、编译器选项、库依赖和目标文件的生成。
  • CMake 并不直接管理依赖,但它可以找到已安装在系统上的库,并根据需要生成适当的链接指令。
  • CMake 常用于C和C++项目,尤其是那些需要跨平台支持的项目。

下载

CMake 官网- https://cmake.org/

两者都可以

都会跳到 https://github.com/Kitware/CMake

下载缓慢或进不去网站解决方法

考虑部分同学的网络有点慢,

可能需要VPN,公棕号 wmcode 回复 【 vpn 】即可

安装

直接下一步

勾选协议

添加环境+快捷方式

建议改路径

点击安装

安装中

安装成功

检测安装

命令提示符检测

Ctrl + R 输入 cmd

输入 cmake --verison

如果有版本则安装成功

简单入门

我们直接创建简单的项目

构建新项目

选择CMake项目

建议更改路径

创建成功

可以看到它帮我们已经创建好了相关的文件

项目结构分析

Demo/
│
├── CMakeLists.txt         # 主项目的 CMake 配置文件
├── CMakePresets.json      # 用于存储 CMake 的构建预设(presets)
├── Demo.cpp               # 项目 源文件
├── Demo.h                 # 项目 头文件

让我们来简单分析一下每个文件的作用:

CMakeLists.txt

  • 这是 CMake 的主要配置文件,其中包含了构建项目所需的指令和规则。在这个文件里,你可以指定源代码文件、库依赖、编译选项、生成的目标以及其他与构建相关的配置。

CMakePresets.json

  • 如之前所述,这是一个 JSON 文件,用于存储 CMake 构建预设。这些预设可以包括构建类型(如 Debug 或 Release)、生成器(如 Ninja 或 Visual Studio)、构建目录位置等信息。这样可以在不同的环境中快速配置并运行 CMake。

Demo.cpp

  • 这是你的源代码文件,包含了实现程序功能的具体代码。

Demo.h

  • 这是头文件,一般用来声明类、函数原型和其他公共接口。在 C++ 中,头文件通常包含在多个源文件中,以便于重用代码。

如何使用这些文件

当你准备好构建项目时,可以使用 CMake 从 CMakeLists.txt 文件生成构建文件。这些构建文件可以被构建工具(如 MSBuild 或 Ninja)用来编译和链接源代码。

在命令行中构建项目

如果你想要手动构建项目,可以通过命令行来执行 CMake 和构建命令。假设你想在一个名为 build 的子目录中构建 Debug 版本,可以按照以下步骤操作:

  1. 打开命令提示符或终端窗口。

  2. 导航到项目根目录。

  3. 创建一个构建目录(如果尚未创建):

    1mkdir build
    
  4. 切换到构建目录:

    1cd build
    
  5. 运行 CMake 来配置构建系统:

    1cmake -DCMAKE_BUILD_TYPE=Debug ..
    
  6. 构建项目:

    1cmake --build .
    

使用 Visual Studio 构建项目

如果你使用的是 Visual Studio,你可以直接打开项目解决方案文件(.sln 文件),然后选择要构建的配置(Debug 或 Release),并使用 Visual Studio 的构建菜单或快捷键来构建项目。

注意事项

  • 确保 CMakeLists.txt 文件正确配置了你的项目,包括添加源文件、定义目标等。
  • 如果你在使用 CMakePresets.json 文件时遇到问题,确保它的格式正确并且与你的构建需求相匹配。
  • 如果你对某些 CMake 指令不熟悉,查阅官方文档或在线资源会有帮助。

项目分析

CMakeLists.txt

# CMakeList.txt: Demo 的 CMake 项目,在此处包括源代码并定义
# 项目特定的逻辑。
#
cmake_minimum_required (VERSION 3.8)

# 如果支持,请为 MSVC 编译器启用热重载。
if (POLICY CMP0141)
  cmake_policy(SET CMP0141 NEW)
  set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<IF:$<AND:$<C_COMPILER_ID:MSVC>,$<CXX_COMPILER_ID:MSVC>>,$<$<CONFIG:Debug,RelWithDebInfo>:EditAndContinue>,$<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>>")
endif()

project ("Demo")

# 将源代码添加到此项目的可执行文件。
add_executable (Demo "Demo.cpp" "Demo.h")

if (CMAKE_VERSION VERSION_GREATER 3.12)
  set_property(TARGET Demo PROPERTY CXX_STANDARD 20)
endif()

# TODO: 如有需要,请添加测试并安装目标。

CMakePresets.json

CMakePresets.json 文件的作用

简化构建配置
  • 存储构建选项,如构建目录、生成器、编译器选项等。
  • 允许快速切换构建配置。
跨平台构建
  • 支持不同平台的构建配置。
  • 方便在不同操作系统间共享构建设置。
IDE 集成
  • 许多现代 IDE 和构建工具支持读取 CMakePresets.json 文件来自动配置构建环境。
脚本化构建
  • 可以通过脚本调用 cmake 命令来使用预设配置,简化构建过程。

CMakePresets.json 文件的结构

CMakePresets.json 文件通常包含以下部分:

  • version:指定 CMake Presets 规范的版本。
  • vendor:可选部分,用于存储特定于某个工具的信息。
  • configurePresets:一组配置预设。
  • buildPresets:一组构建预设。
  • testPresets:一组测试预设。
{
    "version": 3,
    "configurePresets": [
        {
            "name": "windows-base",
            "hidden": true,
            "generator": "Ninja",
            "binaryDir": "${sourceDir}/out/build/${presetName}",
            "installDir": "${sourceDir}/out/install/${presetName}",
            "cacheVariables": {
                "CMAKE_C_COMPILER": "cl.exe",
                "CMAKE_CXX_COMPILER": "cl.exe"
            },
            "condition": {
                "type": "equals",
                "lhs": "${hostSystemName}",
                "rhs": "Windows"
            }
        },
        {
            "name": "x64-debug",
            "displayName": "x64 Debug",
            "inherits": "windows-base",
            "architecture": {
                "value": "x64",
                "strategy": "external"
            },
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "Debug"
            }
        },
        {
            "name": "x64-release",
            "displayName": "x64 Release",
            "inherits": "x64-debug",
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "Release"
            }
        },
        {
            "name": "x86-debug",
            "displayName": "x86 Debug",
            "inherits": "windows-base",
            "architecture": {
                "value": "x86",
                "strategy": "external"
            },
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "Debug"
            }
        },
        {
            "name": "x86-release",
            "displayName": "x86 Release",
            "inherits": "x86-debug",
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "Release"
            }
        }
    ]
}

解释示例

  • configurePresets :定义了两个配置预设,分别是 debugrelease

    • name:预设名称。
    • displayName:显示名称,用于用户界面。
    • description:描述。
    • generator:构建生成器,如 Ninja
    • binaryDir:构建目录。
    • cacheVariables:CMake 缓存变量,如 CMAKE_BUILD_TYPE
  • buildPresets :定义了两个构建预设,分别对应 debugrelease 配置预设。

    • name:预设名称。
    • configurePreset:关联的配置预设名称。
  • testPresets:定义了测试预设,用于运行测试。

    • name:预设名称。
    • configurePreset:关联的配置预设名称。

使用 CMakePresets.json 文件

一旦你有了 CMakePresets.json 文件,就可以通过各种工具来利用这些预设。例如,你可以使用 cmake 命令行工具来构建项目:

cmake --preset debug
cmake --build debug

Demo.cpp

// Demo.cpp: 定义应用程序的入口点。
//

#include "Demo.h"

using namespace std;

int main()
{
	cout << "Hello CMake." << endl;
	return 0;
}

Demo.h

// Demo.h: 标准系统包含文件的包含文件
// 或项目特定的包含文件。

#pragma once

#include <iostream>

// TODO: 在此处引用程序需要的其他标头。

项目运行

完结散花

以上便是我个人学习过程中,慢慢笔记的

(到底啦)

相关推荐
麻衣带我去上学3 小时前
Pytest使用Jpype调用jar包报错:Windows fatal exception: access violation
windows·python·pytest·jar
数据猎手小k4 小时前
OSPTrack:一个包含多个生态系统中软件包执行时生成的静态和动态特征的标记数据集,用于识别开源软件中的恶意行为。
数据集·开源软件·机器学习数据集·ai大模型应用
sukalot5 小时前
windows C#-取消任务列表(下)
windows·c#
油泼辣子多加7 小时前
2024年11月26日Github流行趋势
github
Stanford_11068 小时前
关于IDE的相关知识之一【使用技巧】
前端·ide·windows·微信小程序·微信公众平台·twitter·微信开放平台
喵呜角角8 小时前
QML TableView 实例演示 + 可能遇到的一些问题(Qt_6_5_3)
开发语言·windows·qt·qml·qt quick
Smilejudy8 小时前
三行五行的 SQL 只存在于教科书和培训班
后端·github
流浪的小新9 小时前
Windows下安装FreeSurfer教程
windows
Sunrisepeak14 小时前
xlings: 跨平台一键安装功能设计与思考 - 多编程环境搭建、工具软件安装、项目依赖管理
程序员·开源·github
OkeyProxy14 小时前
簡單易懂:如何在Windows系統中修改IP地址?
windows·ip地址·代理ip·代理服务器·海外ip代理