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.rhkb.cn/news/64.html

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

相关文章

【算法与数据结构】—— 回文问题

回文问题 目录 1、简介2、经典的回文问题(1) 判断一个字符串是否为回文(2) 给定字符集求构建的最长回文长度(3) 求最长回文子串方法一:中心拓展方法二:Manacher 算法 (4) 求回文子串的数目方法一:中心拓展方法二:Manacher 算法 1、…

Linux第一个系统程序---进度条

进度条---命令行版本 回车换行 其实本质上回车和换行是不同概念,我们用一张图来简单的理解一下: 在计算机语言当中: 换行符:\n 回车符:\r \r\n:回车换行 这时候有人可能会有疑问:我在学习C…

西电-神经网络基础与应用-复习笔记

此为24年秋研究生课程复习笔记 导论 神经网络的研究方法分为 连接主义,生理学派,模拟神经计算。高度的并行、分布性,很强的鲁棒和容错性。便于实现人脑的感知功能(音频图像的识别和处理)。符号主义,心理学派,基于符号…

利用obs studio制作(人像+屏幕)录制影像

1.什么是obs? OBS(Open Broadcaster Software)是一款功能强大的开源软件,它使用户能够直接从电脑录制视频和直播内容到 Twitch,YouTube 和 Facebook Live 等平台。它在需要直播或录制屏幕活动的游戏玩家、YouTube 用户和专业人士…

maven多模块项目编译一直报Failure to find com.xxx.xxx:xxx-xxx-xxx:pom:1.0-SNAPSHOT in问题

工作中项目上因为多版本迭代,需要对不同迭代版本升级版本号,且因为项目工程本身是多模块结构,且依然多个其他模块工程。 在将工程中子模块的pom.xml中版本号使用变量引用父模块中定义的版本号时,一直报Failure to find com.xxx.x…

音视频入门基础:RTP专题(2)——使用FFmpeg命令生成RTP流

通过FFmpeg命令可以将一个媒体文件转推RTP: ffmpeg -re -stream_loop -1 -i input.mp4 -c:v copy -an -f rtp rtp://192.168.0.102:5400 但是通过ffplay尝试播放上述产生的RTP流时会报错:“Unable to receive RTP payload type 96 without an SDP file …

Nacos 3.0 Alpha 发布,在安全、泛用、云原生更进一步

自 2021 年发布以来,Nacos 2.0 在社区的支持下已走过近三年,期间取得了诸多成就。在高性能与易扩展性方面,Nacos 2.0 取得了显著进展,同时在易用性和安全性上也不断提升。想了解更多详细信息,欢迎阅读我们之前发布的回…

C语言gdb调试

目录 1.gdb介绍 2.设置断点 2.1.测试代码 2.2.设置函数断点 2.3.设置文件行号断点 2.4.设置条件断点 2.5.多线程调试 3.删除断点 3.1.删除指定断点 3.2.删除全部断点 4.查看变量信息 4.1.p命令 4.2.display命令 4.3.watch命令 5.coredump日志 6.总结 1.gdb介绍…

【xLua】xLua-master签名、加密Lua文件

GitHub - Tencent/xLua: xLua is a lua programming solution for C# ( Unity, .Net, Mono) , it supports android, ios, windows, linux, osx, etc. 如果你想在项目工程上操作,又发现项目工程并没导入Tools,可以从xLua-master工程拷贝到项目工程Assets…

9.4 visualStudio 2022 配置 cuda 和 torch (c++)

一、配置torch 1.Libtorch下载 该内容看了【Libtorch 一】libtorchwin10环境配置_vsixtorch-CSDN博客的博客,作为笔记用。我自己搭建后可以正常运行。 下载地址为windows系统下各种LibTorch下载地址_libtorch 百度云-CSDN博客 下载解压后的目录为: 2.vs…

Python基于YOLOv8和OpenCV实现车道线和车辆检测

使用YOLOv8(You Only Look Once)和OpenCV实现车道线和车辆检测,目标是创建一个可以检测道路上的车道并识别车辆的系统,并估计它们与摄像头的距离。该项目结合了计算机视觉技术和深度学习物体检测。 1、系统主要功能 车道检测&am…

相加交互效应函数发布—适用于逻辑回归、cox回归、glmm模型、gee模型

在统计分析中交互作用是指某因素的作用随其他因素水平变化而变化,两因素共同作用不等于两因素单独作用之和(相加交互作用)或之积(相乘交互作用)。相互作用的评估是尺度相关的:乘法或加法。乘法尺度上的相互作用意味着两次暴露的综合效应大于(…

ECharts饼图下钻

背景 项目上需要对Echarts饼图进行功能定制,实现点击颜色块,下钻显示下一层级占比 说明 饼图实现点击下钻/面包屑返回的功能 实现 数据结构 [{name: a,value: 1,children: [...]},... ]点击下钻 // 为图表绑定点击事件(需要在destroy…

MySQL-事务

事务特性 在关系型数据库管理系统中,事务必须满足 4 个特性,即所谓的 ACID。 原子性(Atomicity) 事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。 修改操作>修改B…

C# 元组

总目录 C# 语法总目录 C# 元组 C# 介绍元组1. 元组元素命名2. 元组的解构3. 元组的比较 总结参考链接 C# 介绍 C#主要应用于桌面应用程序开发、Web应用程序开发、移动应用程序开发、游戏开发、云和服务开发、数据库开发、科学计算、物联网(IoT)应用程序、…

用 Python 绘制可爱的招财猫

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​​​​ ​​​​​​​​​ ​​​​ 招财猫,也被称为“幸运猫”,是一种象征财富和好运的吉祥物,经常…

Java多线程

一、线程的简介: 1.普通方法调用和多线程: 2.程序、进程和线程: 在操作系统中运行的程序就是进程,一个进程可以有多个线程 程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念; 进程则是执行程序的一次执…

IP 地址与蜜罐技术

基于IP的地址的蜜罐技术是一种主动防御策略,它能够通过在网络上布置的一些看似正常没问题的IP地址来吸引恶意者的注意,将恶意者引导到预先布置好的伪装的目标之中。 如何实现蜜罐技术 当恶意攻击者在网络中四处扫描,寻找可入侵的目标时&…

鸿蒙面试 2025-01-09

鸿蒙分布式理念?(个人认为理解就好) 鸿蒙操作系统的分布式理念主要体现在其独特的“流转”能力和相关的分布式操作上。在鸿蒙系统中,“流转”是指涉多端的分布式操作,它打破了设备之间的界限,实现了多设备…

GDPU Android移动应用 重点习题集

目录 程序填空 ppt摘选 题目摘选 “就这两页ppt,你还背不了吗” “。。。” 打开ppt后 “Sorry咯,还真背不了😜” 更新日志 考后的更新日志 没想到重点勾了一堆,还愣是没考到其中的内容,翻了一下,原…