C++——gcc、clang和cmake以及make

文章目录

  • 1. CMake和make
    • 1.1 生成内容区别
    • 1.2 CMakeLists.txt和Makefile内容比较
  • 2. clang, gcc和make
    • 2.1 基本概念
    • 2.2 改进历史(gcc,make,cmake,Ninja)

1. CMake和make

1.1 生成内容区别

在这里插入图片描述

环境CMake生成最终生成
WindowsXXX.slnVisual Studio(MSBuild)处理.sln生成.exe可执行二进制文件
linux/macOSMakeFileMake处理MakeFile生成可执行二进制文件
  • 如果在Windows上编译过OpenCV或者ITK这类型的库,那么CMake-GUI配置结束后会出现[Open Project],会在Visual Studio中打开xxx.sln的解决方案。(默认Visual Studio是用MSBuild构建.sln文件的)
    • 更详细的过程可以看看:Windows下使用CMake进阶中一键型编译的部分。
  • linux或者MacOS的话,CMake会生成Makefile,然后用make构建项目。

Cmake和make就是linux或者macOS下构建过程中所使用的两个阶段的不同工具。
Cmake用处更广泛,跨平台。
make仅限于linux或者macOS这类型的平台,不过Windows上也有类似于make的工具,叫nmake。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/141267.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】树与二叉树(七):二叉树的遍历(先序、中序、后序及其C语言实现)

文章目录 5.2.1 二叉树二叉树性质引理5.1:二叉树中层数为i的结点至多有 2 i 2^i 2i个,其中 i ≥ 0 i \geq 0 i≥0。引理5.2:高度为k的二叉树中至多有 2 k 1 − 1 2^{k1}-1 2k1−1个结点,其中 k ≥ 0 k \geq 0 k≥0。引理5.3&…

Oracle Unifier 22.12 ~ 23.10 功能改进清单表

序言 时隔近一年,Oracle Unifier 22还没握熟,新版本23便已迭代到23.10,根据甲骨文常规的发布规律,相信不久之后便会正式迎来正式本地版V23,了解Unfier的朋友或许知晓,本地版是云版迭代一年后的版本&#x…

【PG】PostgreSQL 目录结构

目录 1 软件安装目录 2 数据文件目录 base/:存储每个数据库的基本数据文件 global/:包含了全局性质的系统表空间文件 pg_tblspc/:包含了表空间的符号链接 pg_twophase/:包含了两阶段提交中使用的文件 pg_stat_tmp/&#xff…

【系统架构设计】架构核心知识: 3.3 DSSA和ABSD

目录 一 特定领域软件架构DSSA 1 DSSA 2 DSSA的基本活动和产物 3 参与DSSA的人员 4 建立过程

Power Automate-创建计划的云端流

选择第三个计划的云端流 根据实际需求选择开始日期和间隔时间 点击创建 测试运行 点击右上角的测试 选择手动,点击测试,然后运行流 运行失败会有报错原因

springboot引入外部jar,package打包报错找不到程序包XXX

springboot引入外包jar包有两种方法: 一、第一种: 点击idea左上角file,然后点击project选择Modules,点击右侧Dependencies,点击右侧加号选择JARs or directories,然后选择要导入的jar包。这种方式,引入ja…

java网络编程之UDP协议

文章目录 UDP简介一发一收客户端:服务端: 多发多收实现多开客户端:服务端 UDP简介 UDP(User Datagram Protocol) DatagramSocket 用于创建客户端、服务端DatagramSocket() :创建客户端的Socket对象,系统随…

异常、堆内存溢出、OOM的几种情况【转载】

1、堆内存溢出 【情况一】:   java.lang.OutOfMemoryError: Java heap space:这种是java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环;   如果是java堆内存不够的话,可以通过调整JVM下面…

ubuntu安装mysql8.0.35过程和报错处理

ubuntu安装mysql8.0.35过程 1.更新包列表:首先,确保您的系统已更新到最新状态。运行以下命令来更新包列表和安装最新的软件包: sudo apt update sudo apt upgrade2.安装MySQL服务器:运行以下命令来安装MySQL服务器: …

深度学习模型基于Python+TensorFlow+Django的垃圾识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 要使用Python、TensorFlow和Django构建一个垃圾识别系统,您可以按照以下步骤进行操作: 安装…

vite + electron引入itk报错

代码 import { readImageArrayBuffer } from itk-wasm console.log(readImageArrayBuffer)通过itk-wasm官网,创建新的项目vitevue(vue2或者vue3),都没问题。加入electeon后包此错。通过排查,意外找到原因,…

ES常用查询命令

一、基本命令 1、获取所有_cat命令 curl -X GET localhost:9200/_cat 2、获取es集群服务健康状态 curl -X GET localhost:9200/_cat/health?v epoch: 时间戳的 Unix 时间戳格式,表示快照生成的时间。 timestamp: 可读性更强的时间戳格式,表示快照生…

105.am40刷机(linux)折腾记1-前期的准备工作1

前段时间在某鱼上逛的时候,发现一款3399的盒子只要150大洋,内心就开始澎拜,一激动就下手了3台,花了450大洋(现在想想,心都碎了一地)。 然后自己又来来回回折腾了几天,目前能跑上fire…

数据跨领域应用实例—车辆通行大数据应用场景(二)

2023年10月25日,国家数据局正式揭牌。标志着我国数据基础制度正在不断完善,数据资源使用水平稳步提升,数据要素市场将进入发展快车道。当前,数字经济已成为我国经济高质量发展的新动能,国家数据局的成立,在…

【Orangepi Zero2 全志H616】驱动串口实现Tik Tok—VUI(语音交互)

一、编程实现语音和开发板通信 wiringpi库源码demo.c 二、基于前面串口的代码修改实现 uartTool.huartTool.cuartTest.c 三、ADB adb控制指令 四、手机接入Linux热拔插相关 a. 把手机接入开发板 b. 安装adb工具,在终端输入adb安装指令: sudo apt-g…

抢疯了!OpenAI开出1000万美元天价年薪 北大AI博士未毕业拿百万offer

图片 抢疯了,抢疯了!OpenAI和谷歌的抢人大战,已经进入白热化。 OpenAI给谷歌员工抛出了终极诱惑——500万到1000万美元的年薪!以及来自微软的用不完的算力! 图片 这不,谷歌复仇神器Gemini模型的关键研究…

【chatglm3】(3):在AutoDL上,使用4090显卡,部署ChatGLM3API服务,并微调AdvertiseGen数据集,完成微调并测试成功!附视频演示。

在AutoDL上,使用4090显卡,部署ChatGLM3API服务,并微调AdvertiseGen数据集,完成微调并测试成功! 其他chatgpt 和chatglm3 资料: https://blog.csdn.net/freewebsys/category_12270092.html 视频地址&#…

戳气球(算法题Java)

戳气球 题目描述 有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。如果你戳破气球 i ,就可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 …

ssh秘钥登录

1.设置 SSH 通过密钥登录 密钥形式登录的原理是:利用密钥生成器制作一对密钥——一只公钥和一只私钥。 将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过 SSH 暴力…

【入门Flink】- 08Flink时间语义和窗口概念

Flink-Windows 是将无限数据切割成有限的“数据块”进行处理,这就是所谓的“窗口”(Window)。 注意:Flink 中窗口并不是静态准备好的,而是动态创建——当有落在这个窗口区间范围的数据达到时,才创建对应的窗…