首页 > 系统相关 >windows上的C++编译环境

windows上的C++编译环境

时间:2023-10-05 12:22:33浏览次数:31  
标签:CMake windows C++ 编译 编译器 构建 工具 todo

Windows 上的C++编程环境比Linux上的繁杂很多,有许多工具已经很老了,但是很多教材也还在用,很多学校的教学也还在用。另一方面,有更现代的选择,但是需要一些必要的配置和对工具链组成的理解,本文将必要的环境都介绍一遍,让新手能有一个相对完整的理解,然后迅速抛弃老旧的工具链,使用更现代的工具链,同时如果学校的教学还是用老旧的工具链也能用,兼顾两者。

DevCpp

// todo

Visual C++ 6.0

// todo

Visual Studio (2019+)

// todo

Visual Studio Code + msys2

// todo

归纳1:C++工具链分层

上述几个C++的开发环境,基本的构成是下面三层

  • 编译工具链(IDE)
  • 编译器
  • C运行时库 + C++运行时库

归纳2: 构建系统分层

编译工具链这层,内部又根据不同的环境有内部的不同组织,本质上他们最终都调用编译器来执行命令。我们以CMake的角度来看这里面的分层,因为CMake的配置可以通过指定CMake的Generator来生成其他大部分构建系统的配置或者脚本,因此CMake也叫元构建系统。

  • 元构建系统:CMake
  • 构建系统:Make,Ninja,VisualStudio项目配置
  • 编译器:GCC,Clang

参考资料

[1] https://code.visualstudio.com/docs/cpp/config-mingw
[2] https://www.oschina.net/translate/c-c-standard-library?lang=chs&p=2
[3] https://learn.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redist?view=msvc-170

标签:CMake,windows,C++,编译,编译器,构建,工具,todo
From: https://www.cnblogs.com/math/p/windows-cxx-dev-env.html

相关文章

  • VC++编写ActiveX控件方法
    暑假在做一个项目的时候,本来是用C#.NET来写的一个港口进出闸的流程控制程序,里面涉及一个响应用PLC的采集信息的问题(PLC用串口和工控机相连接),然后思考如何用C#写串口通讯程序,结果师兄在一旁直接用VC++写了一个“*.ocx控件”,并在自己的电脑上进行了测试,完工后就把生成的“*.ocx”控......
  • 【编译优化】降低镜像大小,删减未使用的函数和数据
    gnu解释https://gcc.gnu.org/onlinedocs/gnat_ugn/Compilation-options.html从最终可执行镜像中删除未使用的function和data,是由链接器来完成的。需要以下几个步骤function和data编译成单独的section,使用编译参数:-ffunction-sections-fdata-sections链接时删除未使用的段,......
  • 2023年全国职业院校技能大赛(高职组)windows维护&Ubuntu维护
    Windows系统维护在物联网系统中通常会发生一些安全问题,作为物联网工程师需对系统进行安全维护和性能优化配置。任务要求:Ø 帐户登录安全设置,此安全设置确定 OS 是否在此计算机每次验证帐户凭据时进行审核。要求开启成功、失败选项的编辑界面截屏,另存为 A-14-1.jpg。答:......
  • C++中的inline用法
    1.引入inline关键字的原因在c/c++中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了inline修饰符,表示为内联函数。栈空间就是指放置程序的局部数据(也就是函数内数据)的内存空间。在系统下,栈空间是有限的,假如频繁大量的使用就会造成因栈空间不足而导致程......
  • C++模板template应用总结
    引言模板(Template)指C++程序设计设计语言中采用类型作为参数的程序设计,支持通用程序设计。C++的标准库提供许多有用的函数大多结合了模板的观念,如STL以及IOStream。函数模板在c++入门中,很多人会接触swap(int&,int&)这样的函数类似代码如下:voidswap(int&a,int&b){......
  • 【VMware篇】3-ESXi安装Windows Server2019虚拟机和更改配置
    第1章前言   本文主要介绍Dell服务器安装ESXI后虚拟机的安装,安装例子:WindowsServer2019。1.Windowsserver2019            Windowsserver2019是微软公司研发的服务器操作系统,WindowsServer2019包括三个许可版本:DatacenterEdition(数据中心版):适用于高虚拟化......
  • 魔改的vcpkg编译脚本
    `bash!/bin/shFind.vcpkg-root.vcpkgRootDir=$(X=cd--"$(dirname--"$0")"&&pwd-P)while["$vcpkgRootDir"!="/"]&&![-e"$vcpkgRootDir/.vcpkg-root"];dovcpkgRootDir="$(di......
  • 十四天学会C++之第三天(数组和字符串)
    1.数组的定义和初始化数组是一种由相同数据类型的元素组成的集合,这些元素按照一定的顺序存储在连续的内存位置上。数组的大小在创建时是固定的,无法在运行时改变。在C++中,数组的定义和声明非常简单。定义一个数组:数据类型数组名[数组大小];数据类型可以是整数、浮点数、字符等,数组......
  • C++ Thread 条件变量
    Condition_Variable介绍条件变量是利用线程间共享的全局变量进行同步的一种机制条件变量是为了控制多线程有顺序地访问共享资源,它和互斥量协同控制多线程有序,互斥地访问共享资源,重要解决的问题是生产者和消费者的问题variable_condition该类是专门结合unique_lock使用......
  • VC++ MFC 编程--CMap的使用
    本文翻译自: CMapHow-to-CodeProject介绍像我这样的程序员,在CMap之前学习了STL::map,总是认为CMap很难使用,并且总是尝试以STL::map的方式使用CMap。在本文中,我将解释CMap,以及如何将它用于您自己的自定义类。在本文的最后,我将展示一个如何正确使用CMap与CString*的例子(注意,我......