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

打印 上一主题 下一主题

主题 823|帖子 823|积分 2469

目录
介绍
下载
下载迟钝或进不去网站解决方法
安装
直接下一步
勾选协议
添加环境+快捷方式
建议改路径
点击安装
安装中
安装乐成
检测安装
命令提示符检测
输入 cmake --verison
简单入门
构建新项目
选择CMake项目
建议更改路径
创建乐成
 项目结构分析
CMakeLists.txt
CMakePresets.json
Demo.cpp
Demo.h
怎样使用这些文件
在命令行中构建项目
使用 Visual Studio 构建项目
注意事项
项目分析
CMakeLists.txt
CMakePresets.json
CMakePresets.json 文件的作用
简化构建设置:
跨平台构建:
IDE 集成:
脚本化构建:
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项目


建议更改路径


创建乐成

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


 项目结构分析

  1. Demo/
  2. ├── CMakeLists.txt         # 主项目的 CMake 配置文件
  3. ├── CMakePresets.json      # 用于存储 CMake 的构建预设(presets)
  4. ├── Demo.cpp               # 项目 源文件
  5. ├── 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. 1mkdir build
    复制代码
  • 切换到构建目录:
    1. 1cd build
    复制代码
  • 运行 CMake 来设置构建系统:
    1. 1cmake -DCMAKE_BUILD_TYPE=Debug ..
    复制代码
  • 构建项目:
    1. 1cmake --build .
    复制代码
使用 Visual Studio 构建项目

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



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

项目分析

CMakeLists.txt


  1. # CMakeList.txt: Demo 的 CMake 项目,在此处包括源代码并定义
  2. # 项目特定的逻辑。
  3. #
  4. cmake_minimum_required (VERSION 3.8)
  5. # 如果支持,请为 MSVC 编译器启用热重载。
  6. if (POLICY CMP0141)
  7.   cmake_policy(SET CMP0141 NEW)
  8.   set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<IF:$<AND:$<C_COMPILER_ID:MSVC>,$<CXX_COMPILER_ID:MSVC>>,$<$<CONFIG:Debug,RelWithDebInfo>:EditAndContinue>,$<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>>")
  9. endif()
  10. project ("Demo")
  11. # 将源代码添加到此项目的可执行文件。
  12. add_executable (Demo "Demo.cpp" "Demo.h")
  13. if (CMAKE_VERSION VERSION_GREATER 3.12)
  14.   set_property(TARGET Demo PROPERTY CXX_STANDARD 20)
  15. endif()
  16. # TODO: 如有需要,请添加测试并安装目标。
复制代码
CMakePresets.json

CMakePresets.json 文件的作用


  • 简化构建设置

    • 存储构建选项,如构建目录、天生器、编译器选项等。
    • 允许快速切换构建设置。

  • 跨平台构建

    • 支持差别平台的构建设置。
    • 方便在差别操纵系统间共享构建设置。

  • IDE 集成

    • 许多当代 IDE 和构建工具支持读取 CMakePresets.json 文件来自动设置构建环境。

  • 脚本化构建

    • 可以通过脚本调用 cmake 命令来使用预设设置,简化构建过程。

CMakePresets.json 文件的结构

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


  • version:指定 CMake Presets 规范的版本。
  • vendor:可选部分,用于存储特定于某个工具的信息。
  • configurePresets:一组设置预设。
  • buildPresets:一组构建预设。
  • testPresets:一组测试预设。

  1. {
  2.     "version": 3,
  3.     "configurePresets": [
  4.         {
  5.             "name": "windows-base",
  6.             "hidden": true,
  7.             "generator": "Ninja",
  8.             "binaryDir": "${sourceDir}/out/build/${presetName}",
  9.             "installDir": "${sourceDir}/out/install/${presetName}",
  10.             "cacheVariables": {
  11.                 "CMAKE_C_COMPILER": "cl.exe",
  12.                 "CMAKE_CXX_COMPILER": "cl.exe"
  13.             },
  14.             "condition": {
  15.                 "type": "equals",
  16.                 "lhs": "${hostSystemName}",
  17.                 "rhs": "Windows"
  18.             }
  19.         },
  20.         {
  21.             "name": "x64-debug",
  22.             "displayName": "x64 Debug",
  23.             "inherits": "windows-base",
  24.             "architecture": {
  25.                 "value": "x64",
  26.                 "strategy": "external"
  27.             },
  28.             "cacheVariables": {
  29.                 "CMAKE_BUILD_TYPE": "Debug"
  30.             }
  31.         },
  32.         {
  33.             "name": "x64-release",
  34.             "displayName": "x64 Release",
  35.             "inherits": "x64-debug",
  36.             "cacheVariables": {
  37.                 "CMAKE_BUILD_TYPE": "Release"
  38.             }
  39.         },
  40.         {
  41.             "name": "x86-debug",
  42.             "displayName": "x86 Debug",
  43.             "inherits": "windows-base",
  44.             "architecture": {
  45.                 "value": "x86",
  46.                 "strategy": "external"
  47.             },
  48.             "cacheVariables": {
  49.                 "CMAKE_BUILD_TYPE": "Debug"
  50.             }
  51.         },
  52.         {
  53.             "name": "x86-release",
  54.             "displayName": "x86 Release",
  55.             "inherits": "x86-debug",
  56.             "cacheVariables": {
  57.                 "CMAKE_BUILD_TYPE": "Release"
  58.             }
  59.         }
  60.     ]
  61. }
复制代码
解释示例



  • configurePresets:定义了两个设置预设,分别是 debug 和 release。

    • name:预设名称。
    • displayName:表现名称,用于用户界面。
    • description:描述。
    • generator:构建天生器,如 Ninja。
    • binaryDir:构建目录。
    • cacheVariables:CMake 缓存变量,如 CMAKE_BUILD_TYPE。

  • buildPresets:定义了两个构建预设,分别对应 debug 和 release 设置预设。

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

  • testPresets:定义了测试预设,用于运行测试。

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

使用 CMakePresets.json 文件

一旦你有了 CMakePresets.json 文件,就可以通过各种工具来使用这些预设。比方,你可以使用 cmake 命令行工具来构建项目:
  1. cmake --preset debug
  2. cmake --build debug
复制代码

Demo.cpp


  1. // Demo.cpp: 定义应用程序的入口点。
  2. //
  3. #include "Demo.h"
  4. using namespace std;
  5. int main()
  6. {
  7.         cout << "Hello CMake." << endl;
  8.         return 0;
  9. }
复制代码
Demo.h


  1. // Demo.h: 标准系统包含文件的包含文件
  2. // 或项目特定的包含文件。
  3. #pragma once
  4. #include <iostream>
  5. // TODO: 在此处引用程序需要的其他标头。
复制代码

项目运行


完结散花

以上便是我个人学习过程中,慢慢笔记的
(到底啦)


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

石小疯

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表