cmake - build MS STL project

文章目录

    • cmake - build MS STL project
    • 概述
    • 笔记
    • END

cmake - build MS STL project

概述

MS在github上开源了VS IDE 用的STL实现。
想看看微软的测试用例中怎么用STL.
想先用CMake编译一个MS STL发布版出来。

笔记

CMake需要3.30以上, 拟采用 cmake-3.30.6-windows-x86_64.zip

本机已经装了VS2019社区版。
因为VS2019中就已经有了STL, 用普通命令行编译好些。

先临时替换VS2019中的cmake(3.20)为最新的cmake3.30+
vs2019 - 替换vs2019自带的cmake

启动 VS2019本地命令行(x64 Native Tools Command Prompt for VS 2019)

迁出MS-STL工程到 D:\3rd\MS_STL
进入源码编译目录 cd /d D:\3rd\MS_STL
在每次正式cmake前,将源码编译目录中的临时目录.\out目录删掉。

验证cmake版本为3.30+

D:\3rd\MS_STL\build>cmake --version
cmake version 3.30.6CMake suite maintained and supported by Kitware (kitware.com/cmake).

将MS-STL的版本退到tag的VS2019的最后一个版本
在这里插入图片描述
在这里插入图片描述
当前VS2019社区版的版本为16.11.42, 可以编译MS-STL的tag vs-2019-16.10
在这里插入图片描述

VS2019本地命令行中,就自带git.

D:\3rd\MS_STL>git --version
git version 2.47.0.windows.2

这个库,缺少2个子模块(llvm-project vcpkg)
readme中,是直接从github去更新这2个子模块。

git submodule update --init --progress llvm-project vcpkg

但是现在网络不好,改为将这2个库导入到远端自己账号下的库副本。
2个子模块的库地址如下

https://github.com/llvm/llvm-project.git
https://github.com/microsoft/vcpkg.git

然后将2个子模块的库副本用SSH方式迁出到本地,拷贝到MS-STL工程中使用
在这里插入图片描述
将网络整好(能访问到github)
执行下列命令

.\vcpkg\bootstrap-vcpkg.bat
// 等待命令执行完成, 好像就是拷贝了一个.\vcpkg\vcpkg.exe
.\vcpkg\vcpkg.exe install boost-math:x86-windows boost-math:x64-windows
// 等待命令执行完成
// A suitable version of cmake was not found (required v3.30.1)
// 去下载了一个 cmake-3.30.1-windows-i386.zip
// 原来不用替换VS2019的CMake-3.20 ...

在这里插入图片描述

好像是文件夹改名报错,没权限?用手工改名是可以的。
在这里插入图片描述

关掉VS2019 x64 本地命令行,用管理员权限运行 VS2019 x64 本地命令行继续试验。

.\vcpkg\vcpkg.exe install boost-math:x86-windows boost-math:x64-windows
// 等待命令执行完
// 如果命令执行完后,不确定有没有完整的执行完,可以再次运行此命令。

在这里插入图片描述

cmake -G Ninja -S . -B out\build\x64
// 等待命令执行完// 构建x64版本的MS-STL
ninja -C out\build\x64

在这里插入图片描述
代码中有警告,导致警告当作错误失败。
按照提示,尝试去修正代码,给变量赋值。
在这里插入图片描述
可以编译完成。
如果没看清输出了啥,可以将2个文件夹改名,重新编译,如果能编译成功,就ok了。
在这里插入图片描述

d:\3rd\MS_STL>ninja -C out\build\x64
ninja: Entering directory `out\build\x64'
[968/968] Linking CXX static library out\lib\amd64\libcpmtd.lib

在这里插入图片描述
查了一下,测试用例在哪里(比较关心具体的知识点,具体咋用)。
发现不用编译也行,因为编译后,并没有将测试用例拷贝出来。
在源码目录的 tests\std 和 test\tr1 里面。
tr1是c++标准库的过渡实现,所以 test\tr1 的测试代码,不用看。
主要看tests\std中的测试用例就行。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试用例共500+,有些是要C++17或C++20的。
在这里插入图片描述

如果有细节知识点不会用,就看官方的测试用例就可以。测试用例中关于STL知识点的用法是最全的。
将MS-STL官方测试工程用SI搞个工程,需要啥就查啥。细节知识点应该是都有。

END

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

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

相关文章

pyside6,让界面窗口在屏幕中间显示

有一些窗口需要剧中显示,比如登录窗口、消息窗口等。 def center(self):screen QApplication.primaryScreen().geometry()size self.geometry()self.move((screen.width() - size.width()) // 2,(screen.height() - size.height()) // 2) 首先,通过 “…

MCU 和 PSK

在加密和认证领域,MCU 和 PSK 是两个不同的概念,分别涉及硬件和密钥管理。下面是它们的含义和相关解释: 1. MCU 全称:Microcontroller Unit(微控制单元) 用途: MCU 是一种集成了 CPU、内存&am…

微信小程序之历史上的今天

微信小程序之历史上的今天 需求描述 今天我们再来做一个小程序,主要是搜索历史上的今天发生了哪些大事,结果如下 当天的历史事件或者根据事件选择的历史事件的列表: 点击某个详细的历史事件以后看到详细信息: API申请和小程序…

错误修改系列---基于RNN模型的心脏病预测(pytorch实现)

前言 前几天发布了pytorch实现,TensorFlow实现为:基于RNN模型的心脏病预测(tensorflow实现),但是一处繁琐地方 一处错误,这篇文章进行修改,修改效果还是好了不少;源文章为:基于RNN模型的心脏病…

vue.js+vite搭建一个简单的新春祈福活动网站

vue.jsvite搭建一个简单的新春祈福活动网站&#xff01;使用canvas技术&#xff0c;绘制视觉特效。 功能有&#xff1a;燃放烟花&#xff0c;和撞钟祈福。祈福撞钟我设计了是按钮事件&#xff0c;播放一个mp4动画&#xff0c;配上播放一段撞钟的生效文件mp3. <template>&…

vue3Class 与 Style 绑定

绑定 HTML class 1. 绑定对象 <div :class"{ active: isActive }"></div><divclass"static":class"{ active: isActive, text-danger: hasError }" ></div> //<div class"static active"></div>…

在 Ubuntu 下通过 Docker 部署 MySQL 服务器

引言 Docker 是一个开源的容器化平台&#xff0c;允许开发者将应用及其依赖打包成一个标准化的单元。MySQL 是一个广泛使用的关系型数据库管理系统&#xff0c;因其高性能、可靠性和易用性&#xff0c;成为许多应用的首选数据库。结合 Docker 和 MySQL&#xff0c;可以轻松地创…

有机物谱图信息的速查技巧有哪些?

谱图信息是化学家解读分子世界的“语言”&#xff0c;它们在化学研究的各个领域都发挥着不可或缺的作用。它们是理解和确定分子结构的关键&#xff0c;对化学家来说极为重要&#xff0c;每一种谱学技术都提供了不同的视角来观察分子&#xff0c;从而揭示其独特的化学和物理特性…

C++指针类型的基本理论和使用方式-学习记录

一、指针简概 &#xff08;一&#xff09;指针定义 指针&#xff08;pointer&#xff09;是“指向&#xff08;point to&#xff09;”另外一种类型的复合类型。与引用类似&#xff0c;指针也实现了对其他对象的间接访问。然而指针与引用相比又有很多不同点。其一&#xff0c;…

视频转码对画质有影响吗?视频融合平台EasyCVR支持哪些转码格式?

视频转码过程是将视频文件从一种编码格式转换为另一种格式的过程&#xff0c;这一过程在现代数字媒体中扮演着至关重要的角色。众所周知&#xff0c;视频转码不仅仅是简单的格式转换&#xff0c;它涉及多个关键参数的改变&#xff0c;例如视频编码格式、比特率、分辨率以及帧率…

微信小程序防止重复点击事件

直接写在app.wpy里面&#xff0c;全局可以调用 // 防止重复点击事件preventActive(fn) {const self this;if (this.globalData.PageActive) {this.globalData.PageActive false;if (fn) fn();setTimeout(() > {self.globalData.PageActive true;}, 3000); //设置该时间内…

STM32-WWDG/IWDG看门狗

WWDG/IWDG一旦开启不能关闭&#xff0c;可通过选项字节在上电时启动硬件看门狗&#xff0c;看门狗计数只能写入不能读取。看门狗启用时&#xff0c;T6bit必须置1&#xff0c;防止立即重置。 一、原理 独立看门狗-超时复位 窗口看门狗-喂狗&#xff08;重置计数器&#xff0c;…

【计算机网络】什么是AC和AP?

在现代的无线网络中&#xff0c;AC&#xff08;Access Controller&#xff0c;接入控制器&#xff09;和AP&#xff08;Access Point&#xff0c;无线接入点&#xff09;是两个至关重要的设备&#xff0c;它们在网络的管理、连接和优化中扮演着重要角色。理解它们的功能和区别&…

C++初阶—CC++内存管理

第一章&#xff1a;C/C内存分布 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] "abcd";const char* pChar3 "abcd";int* ptr1 (int*)malloc(si…

排序的本质、数据类型及算法选择

排序的本质、数据类型及算法选择 一、排序的本质二、排序的数据类型三、排序算法的选择依据 前两天老金写了篇 “十大排序简介”&#xff0c;有点意犹未尽&#xff0c;这一回老金想把排序连根拔起&#xff0c;从排序的本质说道说道。 一、排序的本质 从字面上理解&#xff0c…

arcgisPro加载天地图(CGCS2000)影像

1、注册天地图账号&#xff1b; 2、申请key&#xff1b; 3、添加WMTS服务器。 这里已经办好了前两步&#xff0c;下面详细介绍最后一步。 添加WMTS服务器。 在天地图网站&#xff0c;找到如下页面&#xff0c; 复制网址&#xff0c;如&#xff1a;http://t0.tianditu.gov.cn…

【测试】持续集成CI/CD

近期更新完毕&#xff0c;建议关注收藏点赞&#xff5e; 目录 概括gitJenkinspostman集成jenkins代码集成jenkins 概括 CI/CD stands for Continuous Integration and Continuous Deployment 定义 团队成果持续集成到公共平台。一天可以集成1次or多次 本地代码管理 git 远程代…

python基础和redis

1. Map函数 2. filter函数 numbers generate_numbers() filtered_numbers filter(lambda x: x % 2 0, numbers) for _ in range(5):print(next(filtered_numbers)) # 输出: 0 2 4 6 83. filter map 和 reduce 4. picking and unpicking 5. python 没有函数的重载&#xff0…

Three.js 性能优化:打造流畅高效的3D应用

文章目录 前言一、减少几何体复杂度&#xff08;Reduce Geometry Complexity&#xff09;二、合并几何体&#xff08;Merge Geometries&#xff09;三、使用缓冲区几何体&#xff08;Use BufferGeometries&#xff09;四、纹理压缩与管理&#xff08;Texture Compression and M…

人工智能及深度学习的一些题目(常错)

1、【判断题】HMM的状态序列即不能直接获得&#xff0c;也不能通过观测序列获得。 错误 HMM可以通过观测序列获得状态序列 2、【单选题】当设计一个全连接网络完成INIST字符识别实验时&#xff0c;初始网络设计为两层隐藏层&#xff0c;每层分别有874个和128个神经元 3、【单…