当前位置: 首页 > 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…...

SEO_2024年最有效的SEO策略与方法深度解析

2024年最有效的SEO策略与方法深度解析 在当今数字化时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;仍然是提升网站流量和品牌知名度的关键。2024年&#xff0c;随着搜索引擎算法的不断更新和用户行为的变化&#xff0c;SEO策略与方法也在不断演变。本文将深入解析2…...

BilibiliDown终极指南:3个专业技巧实现B站视频高效下载与无损音频提取

BilibiliDown终极指南&#xff1a;3个专业技巧实现B站视频高效下载与无损音频提取 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.c…...

Make:目标(Target)构建的详细和依赖项的处理过程(个人总结)

相关文章 Make专栏https://blog.csdn.net/weixin_45791458/category_12383799.html 这段时间在用makefile&#xff0c;所以自己探究了一下make的工作过程&#xff0c;并经过实验总结了一些规律。 对于一个规则的处理如下&#xff0c;首先make会检查规则中的目标文件是否存在和…...

StructBERT情感分类镜像实操手册:supervisorctl服务管理教程

StructBERT情感分类镜像实操手册&#xff1a;supervisorctl服务管理教程 1. 快速了解StructBERT情感分类 StructBERT情感分类模型是一个专门针对中文文本情感分析的工具&#xff0c;基于阿里达摩院的StructBERT预训练模型进行微调。它能快速准确地判断一段中文文字表达的是积…...

granite-4.0-h-350m部署案例:Ollama在科研团队内部知识引擎中的应用

granite-4.0-h-350m部署案例&#xff1a;Ollama在科研团队内部知识引擎中的应用 如果你在一个科研团队工作&#xff0c;每天面对海量的论文、实验报告和内部文档&#xff0c;是不是经常感觉信息过载&#xff0c;想找点资料就像大海捞针&#xff1f;或者&#xff0c;当新成员加…...

OpenModScan:工业总线测试与协议调试的开源解决方案

OpenModScan&#xff1a;工业总线测试与协议调试的开源解决方案 【免费下载链接】OpenModScan Open ModScan is a Free Modbus Master (Client) Utility 项目地址: https://gitcode.com/gh_mirrors/op/OpenModScan 在工业自动化领域&#xff0c;设备间的通讯可靠性直接决…...

网络性能诊断与优化:开源测试工具从入门到精通

网络性能诊断与优化&#xff1a;开源测试工具从入门到精通 【免费下载链接】iperf3-win-builds iperf3 binaries for Windows. Benchmark your network limits. 项目地址: https://gitcode.com/gh_mirrors/ip/iperf3-win-builds 网络性能问题常常隐藏在复杂的架构背后&a…...

深入浅出理解注意力机制:原理、实战、应用及训练与推理阶段差异

深入浅出理解注意力机制&#xff1a;原理、实战、应用及训练与推理阶段差异 摘要&#xff1a;注意力机制是深度学习领域的核心创新&#xff0c;更是Transformer架构的灵魂&#xff0c;其灵感源自人类的“选择性关注”能力&#xff0c;解决了传统模型长距离依赖捕捉不足、并行计…...

VSCode CLine插件深度配置:灵活切换OpenAI GPT与Claude 3.5模型进行智能编程

1. 为什么开发者需要多模型切换能力 在当今的AI辅助编程领域&#xff0c;OpenAI的GPT系列和Anthropic的Claude系列无疑是两大主流选择。我在实际项目中发现&#xff0c;不同模型在代码生成、错误修复和文档解释等方面各有千秋。比如GPT-4o擅长处理复杂算法逻辑&#xff0c;而Cl…...

从选型到接线:工业现场S7-1200 PLC读取K型热电偶温度的完整避坑指南

从选型到接线&#xff1a;工业现场S7-1200 PLC读取K型热电偶温度的完整避坑指南 在热处理车间嘈杂的设备声中&#xff0c;一组K型热电偶正默默监测着关键工艺温度。突然&#xff0c;中控室屏幕上的温度曲线开始剧烈波动——这是每位自动化工程师都熟悉的"噩梦场景"。…...