IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> cmake / cmake --build 如何理解 -> 正文阅读

[系统运维]cmake / cmake --build 如何理解

对于 cmake ,一直理解为项目构建工具,知道遇到 --build 才发现,cmake 还统一了各个平台的编译阶段。下面摘抄知乎上大神的理解:

简单说一下cmake项目构建过程:

1、首先,使用命令行:‘cmake <source tree>’,比如:cmake .. ,在你的构建目录(外部构建方式)下生成了项目文件 project files,官方文档中又叫 build tree / binary tree,这其中就包括,比如:Makefile,还有一些其他相关文件 / 目录 / 子目录。

2、其次,自然是对生成好的项目(project files)进行编译构建,使用到的就是你说的'cmake --build .'

3、最后,--build 后面的那个 ‘.’,指的是生成好的 build tree 的路径。一般来说,如果你明确知道,你的系统中使用的是哪种构建器(build generator), 比如:Unix Makefiles, 你完全可以直接使用 make 进行项目构建。对于这种 --build 的形式,多用于自动化脚本之中,或者 IDE 环境下。

注: <source tree>指的是源文件 + 顶层 CMakeLists 所在的路径,cmake .. 假设了路径在上一层。


作者:雨落惊风
链接:https://www.zhihu.com/question/63537567/answer/1723782096
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

总结来说,cmake 工作流程如下(当前目录为 CMakeLists.txt 所在的顶层目录):

1、构建项目

cmake . -Bbuild -G "Unix Makefiles"

2、编译项目

cmake --build build

在 linux 下就是执行 make 命令。?

3、说明?

-B? ? ? ? 指定构建的项目文件所在的目录

-G? ? ? ? Generator 的意思,该语句可以设置 IDE,比如?Xcode

cmake 支持的 IDE 如下:

  • Borland Makefiles: 生成 Borland makefile。
  • MSYS Makefiles: 生成 MSYS makefile。

    生成的 makefile 用 use /bin/sh 作为它的 shell。在运行 CMake 的机器上需要安装msys。

  • MinGW Makefiles: 生成供 mingw32-make 使用的 make file。

    生成的 makefile 使用 cmd.exe 作为它的 shell。生成它们不需要 msys 或者 unix shell。

  • NMake Makefiles: 生成 NMake makefile。
  • NMake Makefiles JOM: 生成 JOM makefile。
  • Unix Makefiles: 生成标准的 UNIX makefile。

    在构建树上生成分层的 UNIX makefile。任何标准的 UNIX 风格的 make 程序都可以通过默认的 make 目标构建工程。生成的 makefile 也提供了 install 目标。

  • Visual Studio 10: 生成 Visual Studio 10?工程文件。
  • Visual Studio 10 Win64: 生成 Visual Studio 10 Win64?工程文件。
  • Visual Studio 6: 生成 Visual Studio 6?工程文件。
  • Visual Studio 7: 生成 Visual Studio .NET 2002?工程文件。
  • Visual Studio 7 .NET 2003: 生成 Visual Studio .NET 2003 工程文件。
  • Visual Studio 8 2005: 生成 Visual Studio .NET 2005?工程文件。
  • Visual Studio 8 2005 Win64: 生成 Visual Studio .NET 2005 Win64 工程文件。
  • Visual Studio 9 2008: 生成 Visual Studio 9 2008?工程文件。
  • Visual Studio 9 2008 Win64: 生成 Visual Studio 9 2008 Win64 工程文件。
  • Watcom WMake: 生成 Watcom WMake makefiles。
  • CodeBlocks - MinGW Makefiles: 生成 CodeBlock 工程文件。

    在顶层目录以及每层子目录下为 CodeBlocks 生成工程文件,生成的 CMakeList.txt 的特点是都包含一个 PROJECT() 调用。除此之外还会在构建树上生成一套层次性的 makefile。通过默认的 make 目标,正确的 make 程序可以构建这个工程。makefile 还提供了 install 目标。

  • CodeBlocks - NMake Makefiles: 生成 CodeBlocks 工程文件。

    在顶层目录以及每层子目录下为 CodeBlocks 生成工程文件,生成的 CMakeList.txt 的特点是都包含一个 PROJECT() 调用。除此之外还会在构建树上生成一套层次性的 makefile。通过默认的 make 目标,正确的 make 程序可以构建这个工程。makefile 还提供了 install 目标。

  • CodeBlocks - Unix Makefiles: 生成CodeBlocks工程文件。

    在顶层目录以及每层子目录下为CodeBlocks生成工程文件,生成的CMakeList.txt的特点是都包含一个PROJECT()调用。除此之外还会在构建树上生成一套层次性的makefile。通过默认的make目标,正确的make程序可以构建这个工程。makefile还提供了install目标。

  • Eclipse CDT4 - MinGW Makefiles: 生成 Eclipse CDT 4.0 工程文件。

    在顶层目录下为 Eclipse 生成工程文件。在运行源码外构建时,一个连接到顶层源码路径的资源文件会被创建。除此之外还会在构建树上生成一套层次性的 makefile。通过默认的 make 目标,正确的 make 程序可以构建这个工程。makefile 还提供了 install 目标。

  • Eclipse CDT4 - NMake Makefiles: 生成 Eclipse CDT 4.0 工程文件。

    在顶层目录下为 Eclipse 生成工程文件。在运行源码外构建时,一个连接到顶层源码路径的资源文件会被创建。除此之外还会在构建树上生成一套层次性的 makefile。通过默认的 make 目标,正确的 make 程序可以构建这个工程。makefile 还提供了 install 目标。

  • Eclipse CDT4 - Unix Makefiles: 生成 Eclipse CDT 4.0 工程文件。

    在顶层目录下为 Eclipse 生成工程文件。在运行源码外构建时,一个连接到顶层源码路径的资源文件会被创建。除此之外还会在构建树上生成一套层次性的 makefile。通过默认的 make 目标,正确的 make 程序可以构建这个工程。makefile 还提供了 install 目标。

(SAW:Game Over!)

?

?

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 23:49:45  更:2022-04-01 23:54:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:34:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码