当前位置: 首页 > news >正文

cmake 多线程编译 指定 Visual Studio 编译器 命令行

当使用CMake来配置和构建一个Visual Studio 项目时,以下命令是关键的。
第一行是用于配置项目,而第二行用于构建项目。


Visual Studio 15 2017
Visual Studio 16 2019
Visual Studio 17 2022


在CMake中,DCMAKE_BUILD_TYPE是用于指定项目的构建类型的选项。通常,它有以下常见的几种类型:

Debug:
Debug类型的构建用于开发和调试目的。它包含了调试符号,关闭了大多数优化,并启用了额外的调试信息。这使得在调试器中跟踪代码更容易。

Release:
Release类型的构建用于生产环境。它启用了更多的编译器优化,以提高代码执行速度。这种构建通常不包含调试信息,因此通常不适合调试。

RelWithDebInfo:
这个构建类型是一种混合类型,它包含了一些优化,但仍然包含调试信息。这在需要性能优化但仍然需要一些调试信息的情况下很有用。

MinSizeRel:
MinSizeRel是一种极小的构建,旨在最小化可执行文件的大小。它会应用更多的优化以减小可执行文件的体积,但可能会损失一些性能。

这些构建类型的可用性可能因操作系统、编译器和项目的设置而异。你可以根据项目的需求选择适当的构建类型。通常,在开发和调试阶段,使用Debug构建,而在部署到生产环境之前,使用Release或其他相关类型进行最终构建。


  1. 配置项目:

    cmake .. -G "Visual Studio 16 2019" -DCMAKE_BUILD_TYPE=Debug
    

    这个命令告诉CMake去配置项目,使用Visual Studio 2019生成器。其中的参数解释如下:

    • ..: 这表示在上一级目录中查找CMakeLists.txt文件。你应该在项目目录的build子目录中运行这个命令,以避免混淆源代码和生成的文件。
    • -G "Visual Studio 16 2019": 指定了使用Visual Studio 2019作为构建工具。
    • -DCMAKE_BUILD_TYPE=Debug: 这设置了构建类型为Debug,这将包括调试信息和关闭优化以便于调试。
  2. 构建项目:

    cmake --build . --config Debug -- /m:%NUMBER_OF_PROCESSORS%
    

    这个命令是用于实际构建项目,参数的含义如下:

    • --build .: 这告诉CMake在当前目录中构建项目。
    • --config Debug: 指定构建的配置为Debug,以确保使用了Debug构建类型。
    • -- /m:%NUMBER_OF_PROCESSORS%: 这部分会传递给底层构建系统(在Visual Studio中是MSBuild),它使用多线程构建来加快构建过程。%NUMBER_OF_PROCESSORS%是一个环境变量,它会自动使用你计算机的处理器核心数来并行构建。

这两个命令的组合使你能够配置和构建Visual Studio 2019项目,确保使用Debug配置和多线程构建,以便于开发和调试。这是一个基本的CMake和Visual Studio 2019集成教程,你可以根据需要进一步扩展和优化项目配置。


  1. 本地项目配置和构建:

    • cmake .. -G "Visual Studio 16 2019" -DCMAKE_BUILD_TYPE=Debug

      • cmake ..: 这个命令告诉CMake在当前目录的上一级目录中查找CMakeLists.txt文件,这是CMake项目的配置文件。
      • -G "Visual Studio 16 2019": 这个部分指定了使用的生成器,即Visual Studio 2019。这将生成适用于Visual Studio 2019的项目文件。
      • -DCMAKE_BUILD_TYPE=Debug: 这一部分设置了构建类型为Debug,这意味着生成的项目将包含调试信息,并关闭优化,以便进行调试。
    • cmake --build . --config Debug -- /m:$env:NUMBER_OF_PROCESSORS

      • cmake --build .: 这个命令实际上执行了项目的构建。--build参数告诉CMake构建项目,.表示当前目录。
      • --config Debug: 这部分指定了构建的配置为Debug,以确保使用了Debug构建类型。
      • /m:$env:NUMBER_OF_PROCESSORS: 这部分传递给底层构建系统,以指示使用多线程构建。$env:NUMBER_OF_PROCESSORS使用了环境变量NUMBER_OF_PROCESSORS,它会根据你的计算机配置自动确定可用的处理器核心数量。这将提高构建速度,因为它会同时利用多个处理器核心。
  2. Jenkins集成:

    • cmake --build . --config Debug -- /m:%NUMBER_OF_PROCESSORS%
      • cmake --build .: 与之前的本地构建命令相同,这个部分告诉CMake构建项目,.表示当前目录。
      • --config Debug: 这一部分指定了构建的配置为Debug,确保使用Debug构建类型。
      • /m:%NUMBER_OF_PROCESSORS%: 这部分是类似的,但在Jenkins环境中,你可以使用%NUMBER_OF_PROCESSORS%来获取可用的处理器核心数量,而不是使用环境变量$env:NUMBER_OF_PROCESSORS

这些命令组合使你能够配置和构建一个Visual Studio 2019项目,确保使用了Debug配置和多线程构建。这对于在本地开发和在Jenkins CI/CD系统中实现自动化构建和持续集成非常有用。

相关文章:

cmake 多线程编译 指定 Visual Studio 编译器 命令行

当使用CMake来配置和构建一个Visual Studio 项目时,以下命令是关键的。 第一行是用于配置项目,而第二行用于构建项目。 Visual Studio 15 2017 Visual Studio 16 2019 Visual Studio 17 2022 在CMake中,DCMAKE_BUILD_TYPE是用于指定项目的构建…...

将 mysql 数据迁移到 clickhouse (最新版)

一、前驱知识 已经在mysql中插入了海量的数据了,这个时候mysql 承载不了这么大的数据,并且数据只需要查询,修改和删除非常少,并且不需要支持事务,这个时候需要换一个底层存储,这里选用的是 clickhouse 来进…...

LeetCode 69.x的平方

LeetCode 69.x的平方 思路&#xff1a; 二分查找。从1到x进行二分查找&#xff0c;每次判断mid的平方是否<x&#xff0c; 如果是&#xff0c;则更新ansmid&#xff0c;并缩小区间&#xff1b; 如果不是&#xff0c;则缩小区间&#xff1b; 最后则找到最接近的ans&#xff0…...

【小白入门】ASP.NET Core 创建 Web API

ASP.NET Core 支持使用 C# 创建 RESTful 服务&#xff0c;也称为 Web API。 若要处理请求&#xff0c;Web API 使用控制器。 Web API 中的 控制器 是派生自 ControllerBase 的类。 本文介绍了如何使用控制器处理 Web API 请求。 Web API 包含一个或多个派生自 ControllerBase …...

如何使用摩尔信使MThings连接网络设备

帽子&#xff1a; 摩尔信使MThings支持Modbus-TCP、Modbus-RTU Over TCP、Modbus-TCP Over UDP、Modbus-RTU Over UDP。 TCP链接中&#xff0c;摩尔信使MThings支持灵活的连接方式&#xff0c;主机可作为客户端也可以作为服务端&#xff0c;同时支持模拟从机以客户端方式向远…...

2023自动驾驶 车道线检测数据集

目录 2023自动驾驶 车道线检测关键数据集 下载链接 labelme标注制作数据: 车道线分割项目记录-tusimple数据集处理 2023自动驾驶 车道线检测关键数据集 下载链接 2023自动驾驶 车道线检测关键数据集 下载链接_Xiaobai_Zhao的博客-CSDN博客 labelme标注制作数据:...

排序算法-冒泡排序法(BubbleSort)

排序算法-冒泡排序法&#xff08;BubbleSort&#xff09; 1、说明 冒泡排序法又称为交换排序法&#xff0c;是从观察水中的气泡变化构思而成的&#xff0c;原理是从第一个元素开始&#xff0c;比较相邻元素的大小&#xff0c;若大小顺序有误&#xff0c;则对调后再进行下一个…...

3d tiles规范boundingVolume属性学习

3d tiles的瓦片&#xff08;Tiles&#xff09;包含一些属性&#xff0c;其中第一项是boundingVolume&#xff1b;下面学习boundingVolume&#xff1b; boundingVolume&#xff0c;这个翻译为边界范围框&#xff0c;如果直译为边界体积可能有问题&#xff0c;其实就是包围盒的意…...

【开题报告】如何借助chatgpt完成毕业论文开题报告

步骤 1&#xff1a;确定论文主题和研究问题 首先&#xff0c;你需要确定你的论文主题和研究问题。这可以是与软件开发、算法、人工智能等相关的任何主题。确保主题具有一定的研究性和可行性。 步骤 2&#xff1a;收集相关文献和资料 在开始撰写开题报告之前&#xff0c;收集相…...

微信小程序通过 movable-area 做一个与vuedraggable相似的上下拖动排序控件

因为只是做个小案例 我就直接代码写page页面里了 其实很简单 组件稍微改一下就好了 wxss /* 设置movable-area的宽度 */ .area{width: 100%; }/* a b c 每条元素的样式 */ movable-view {width: 100%;background-color: red;height: 40px;line-height: 40px;color: #FFFFFF;tex…...

Ceph入门到精通-Nginx超时参数分析设置

nginx中有些超时设置&#xff0c;本文汇总了nginx中几个超时设置 Nginx 中的超时设置包括&#xff1a; “client_body_timeout”&#xff1a;设置客户端向服务器发送请求体的超时时间&#xff0c;单位为秒。 “client_header_timeout”&#xff1a;设置客户端向服务器发送请…...

TCP/IP(十)TCP的连接管理(七)CLOSE_WAIT和TCP保活机制

一 CLOSE_WAIT探究 CLOSE_WAIT 状态出现在被动关闭方,当收到对端FIN以后回复ACK,但是自身没有发送FIN包之前 ① 服务器出现大量 CLOSE_WAIT 状态的原因有哪些? 1、通常来讲,CLOSE_WAIT状态的持续时间应该很短,正如SYN_RCVD状态2、但是在一些特殊情况下,就会出现大量连接长…...

LeetCode 面试题 08.10. 颜色填充

文章目录 一、题目二、C# 题解 一、题目 编写函数&#xff0c;实现许多图片编辑软件都支持的「颜色填充」功能。 待填充的图像用二维数组 image 表示&#xff0c;元素为初始颜色值。初始坐标点的行坐标为 sr 列坐标为 sc。需要填充的新颜色为 newColor。 「周围区域」是指颜色相…...

内排序算法

排序算法是面试中常见的问题&#xff0c;不同算法的时间复杂度、稳定性和适用场景各不相同。按照数据量和存储方式可以将排序算法分为 内排序&#xff08;Internal Sorting&#xff09;和 外排序&#xff08;External Sorting&#xff09;。 内排序是指对所有待排序的数据都可…...

options.html 页面设计成聊天框,左侧是功能列表,右侧是根据左侧的功能切换成不同的内容。--chatGpt

gpt: 要将 options.html 页面设计成一个聊天框式的界面&#xff0c;其中左侧是功能列表&#xff0c;右侧根据左侧的功能切换成不同的内容&#xff0c;你可以按照以下步骤进行设计和实现&#xff1a; 1. 首先&#xff0c;创建 options.html 文件&#xff0c;并在其中定义基本的…...

排序算法-选择排序法(SelectionSort)

排序算法-选择排序法&#xff08;SelectionSort&#xff09; 1、说明 选择排序法也是枚举法的应用&#xff0c;就是反复从未排序的数列中取出最小的元素&#xff0c;加入另一个数列中&#xff0c;最后的结果即为已排序的数列。选择排序法可使用两种方式排序&#xff0c;即在所…...

Java-集合框架

文章目录 摘要CollectionCollection集合遍历Iterator迭代器增强for循环 排序 ListArrayListLinkedListVector SetHashSet Map小结 摘要 Java的集合框架提供了一组用于存储、管理和操作数据的类和接口。这个框架提供了各种数据结构&#xff0c;如列表、集合、队列和映射&#x…...

联想携中国移动打造车路协同方案 助力重庆实现32类车联网场景

10月11日&#xff0c;联想集团在中国移动全球合作伙伴大会上首次分享了与中国移动等合作伙伴共同打造的5G车路协同案例——重庆两江协同创新区车路协同应用。联想利用基于5G智能算力技术&#xff0c;在总里程55公里路段实现了32类车联网场景。 据了解&#xff0c;重庆两江协同创…...

Rust入门基础

文章目录 Rust相关介绍为什么要用Rust&#xff1f;Rust的用户和案例 开发环境准备安装Rust更新与卸载Rust开发工具 Hello World程序编写Rust程序编译与运行Rust程序 Cargo工具Cargo创建项目Cargo构建项目Cargo构建并运行项目Cargo检查项目Cargo为发布构建项目 Rust相关介绍 为…...

民族民俗景区3d智慧旅游系统提升游客旅游体验和质量

随着科技的不断发展&#xff0c;传统的旅游方式正在逐渐被新的技术和系统所取代。网上3D沉浸式旅游体验凭借其身临其境的沉浸式体验优势&#xff0c;正成为旅游业的新宠。 网上3D沉浸式旅游体验是将旅游景区、度假区、休闲街区、科博馆等场所空间&#xff0c;利用VR全景制作、w…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...